博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Git】Git-常用命令备忘录(三)
阅读量:4034 次
发布时间:2019-05-24

本文共 3148 字,大约阅读时间需要 10 分钟。

git作为一个vcs(version control system),是越用越香,那么还有哪些比较香的地方呢!?

1.远程仓库中拉取指定分支

一定遇到这种情况,github看到一个心仪的开源仓库,但是分支太多,我们只想要我们需要的分支。

git clone -b 
<指定分支名>
 
<远程仓库地址>

2.递归克隆

项目里包含的一些库或者一些模块是存在了别的仓库,可以用递归来克隆回来。一次性就能解决所有的依赖模块

git clone --recursive https://github.com/dotnet/aspnetcore.git

3.切换到指定分支

分支众多,要切换到指定分支

#branch分支管理git branchgit switch 分支名

4.创建标签

git tag v1.0#默认标签是打在最新提交的commit上

5.为指定的commit id创建标签

上面标签,是为最新的一次提交创建的。但是我们想吃后悔药——为之前的提交创建标签,该怎么做呢!?

$ git log --pretty=oneline --abbrev-commit$ git tag 标签值 commitId#查看标签信息$ git show 标签值

6.删除标签

$ git tag -d v0.1#删除远程标签$ git tag -d v0.9$ git push origin :refs/tags/v0.9

7.推送标签至远程仓库

#推送指定标签至远程$ git push origin v0.1#推送全部标签至远程$ git push origin --tags

8.切换至标签

#tag标签管理git tag#切换git checkout tag值

9.本地没有远程标签

#查看本地标签git tag -l#查看远程标签git ls-remote -t#删除本地标签git tag -d 待删除的标签值#拉取远程的标签git fetch origin --prune-tags#再次查看本地标签git tag

10.gitignore文件重新生效

从gitee 创建仓库,可选择创建不同项目下.gitignore文件模板。但是我们修改.gitignore文件,并不生效。.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的,把要忽略的文件改为未track状态

git rm -r --cached .  #清除缓存   取消跟踪所有文件,但不删除本地文件git add . #重新trace file  git commit -m "update .gitignore" #提交和注释  git push origin master #可选,如果需要同步到remote上的话  

11.本地关联远程

一般情况,常规操作是先在github或者gitee创建远程仓库,然后

git clone git add -Agit commit -m ""git push -u origin master

但是还有一种情况,先通过git init创建的本地仓库,突然发现今天写的代码太优美了,要整个远程仓库存起来。

#初始化-建立本地仓库git init#把本地仓库与远程仓库关联git remote add origin git@gitee.com:RandyField/xxxxx.git#pushgit push -u origin master#但是可能会出现如下错误 ! [rejected]        master -> master (non-fast-forward)error: failed to push some refs to 'git@gitee.com:RandyField/xxxxx.git'hint: Updates were rejected because the tip of your current branch is behindhint: its remote counterpart. Integrate the remote changes (e.g.hint: 'git pull ...') before pushing again.hint: See the 'Note about fast-forwards' in 'git push --help' for details.#原因是创建远程仓库,和本地仓库没有关联,也具有差异#把远程仓库和本地同步,消除差异,把两段不相干的分支进行强行合并git pull origin master --allow-unrelated-histories git add -Agit commit -m "[dev]init"git push -u origin master

12.变基->快进合并

将提交到某一分支上的所有修改都移至另一分支上,就好像“重新播放”一样(将一个分支的修改操作在另一个分支最新的提交基础上在依次应用)。

#小明童鞋,克隆git clone xxx.git#小明童鞋,创建了dev分支git switch -c devgit add .git commit -m "c"git add xxx.gogit commit -m "update xxx.go"git add App.vuegit commit -m "update App.vue"#大明童鞋,克隆git clone xxx.gitgit add main.jsgit push -u origin master#小明童鞋git switch mastergit pullgit switch devgit rebase master#有冲突,需要手动合并文件解决,解决冲突后使用git add表示冲突已经解决git add .#表示继续下一个冲突git rebase --continue#切换至mastergit switch master#快进合并git merge dev# 其他命令git rebase --skip #表示跳过当前冲突,git rebase --abort #表示退出rebase模式,回到运行git rebase master命令之前的状态

rebase干了什么?

  • 找到masterdev最近一个共同的父commit对象

  • 并找出这个共同的父commit对象到dev分支最新提交对象之间的所有对象,将这些对象依次添加至master分支最新一次提交后。这个过程很像将一个数组追加到另一个数组,没错append操作。

  • 这时我们git rebase master会提示有冲突(因为我们在master和dev可能修改了相同的文件),对冲突文件进行手工合共,然后git add .标记冲突解决,git rebase --continue告诉Git冲突已经解决。

  • dev分支上变基(git rebase master)。这时我们回到msater分支执行 git merge dev就可以进行"快进(fast-forward)"模式合并。

参考链接

https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%8F%98%E5%9F%BA

https://www.jianshu.com/p/6960811ac89c

https://blog.csdn.net/fly_zxy/article/details/82586861

长按二维码关注
你可能感兴趣的文章
慢慢欣赏linux 截断文件
查看>>
慢慢欣赏linux 数据类型
查看>>
中断学习之timer_interrupt powerpc实现
查看>>
慢慢欣赏linux 死锁检测
查看>>
慢慢欣赏linux exec加载执行程序
查看>>
慢慢欣赏linux 页框lru的作用
查看>>
慢慢欣赏linux glibc相关
查看>>
慢慢欣赏linux PCI-PCIE初始化总结
查看>>
慢慢欣赏linux PCI-PCIE定制化
查看>>
慢慢欣赏git
查看>>
慢慢欣赏linux 网络协议栈一 全景图
查看>>
慢慢欣赏linux 网络协议栈二 net_device以及初始化注册
查看>>
慢慢欣赏linux 网络协议栈三 监听链路状态
查看>>
慢慢欣赏linux 网络协议栈四 sk_buff以及数据收发
查看>>
慢慢欣赏linux 内核定位手段printk
查看>>
慢慢欣赏linux 网络协议栈七 虚拟网卡
查看>>
linux设备驱动模型代码分析
查看>>
uboot入门学习二 位置无关代码以及地址
查看>>
慢慢欣赏linux 块设备驱动基础
查看>>
慢慢欣赏linux文件缓冲区 mmap分析
查看>>