学习完GIT的一点总结

学习完GIT的一点总结

GIT的基本使用

一、从建立版本库开始: (远程版本库名默认为origin,其分支为master。)

由本地版本库推送到新的远程版本库:
1、git init:
在本地项目中建立本地空版本库
2、git remote add origin [远程版本库地址.git]:
将本地版本库与远程版本库联系起来。

刚开始建版本库的时候一定要执行以下两条命令:
3、git add . :
将修改的文件加入本地暂存区,”.”代表本目录下所有修改文件,也可换成具体文件名。
4、git commit -m “备注信息” :
向本地版本库提交本地暂存区内的修改文件并加上备注信息。

5、git push -u origin master:
将本地版本库当前分支的最新的提交记录推送到远程版本库origin的master分支下,并且将本地当前分支与远程的master分支联系起来。

6、git pull origin master --allow-unrelated-histories:
如果远程版本库中已经有文件了,可以用下面这条命令强行拉到本地库与本地当前分支合并再进行push,否则会报错。

由已有远程版本库拉到本地:
1、git clone [远程版本库地址.git]:
从远程版本库下载项目到当前文件夹
2、git remote set-head origin -d:
可能会出现不必要且容易导致出错的origin/HEAD,用这条命令删除

二、关于分支创建:

1、git branch [分支名]:
创建新的分支,当想要按特性功能等提交修改时可创建新分支。

2、git checkout -b [分支名]:
创建新分支的同时切换到新分支上

3、git branch [分支名] [提交记录]:( 参数[提交记录]也可替换成相对引用)
在某个提交记录上新建分支

三、关于分支合并:(假设有两个分支,一个master,一个foo)

1、git merge foo:
把foo下的提交合并到当前分支master的提交下,会产生一个新的合并的提交记录包含了两个分支的提交,也就是说这个提交记录有两个父节点,当前分支master拥有了foo的提交记录。
[
补充:git checkout HEAD^2:
当前提交记录为merge合并后的提交记录时,有两个父节点,移动到原先属于foo分支的父节点上。
]

2、git checkout foo;git merge master
此时再把master的提交合并到foo的提交中,则两个分支都有了对方的提交记录。

3、git rebase master:(或者 git rebase master foo)
把当前分支foo下的提交记录移动到指定的master下,相当于新建了提交记录副本然后全部移到指定的分支master的最新提交记录下,此时foo继承master的所有提交记录。

4、git checkout master;git rebase foo:
切换到master分支,因为当前分支master被foo继承,所以只要再rebase一下,master分支也包含了foo分支的提交记录。

三、关于在分支上的移动HEAD指向:

1、直接引用
(1)git checkout [提交记录]
(2)git checkout [分支名]

2、相对引用:(以下的HEAD皆可直接引用分支名代替)
(1)git checkout HEAD^ :
移动到当前节点的父节点

(2)git checkout HEAD~[数字]:(不加数字默认1)
在当前分支向上移动[数字]次

四、关于移动分支:
本地版本库分支可被pull,merge,rebase等等命令移动,本地版本库的远程分支只有当远程版本库的对应分支有移动时才会移动。

1、git branch -f [分支名] HEAD:(HEAD可替为直接引用)
强制移动分支到某个提交记录上,即将某部分提交记录指定为[分支名]分支下。

五、关于撤销变更即撤销本地已提交记录:
1、git reset HEAD^:
(参数HEAD^可替换为任意直接或相对引用)
将当前分支版本重置到HEAD^版本,这个是直接回退,无法将撤销变更的操作同步到远程版本库。
2、git revert HEAD:
(参数HEAD可替换为任意直接或相对引用)
撤销当前分支某个HEAD指向的提交记录,通过提交一个新的记录来撤销变更,可以将撤销操作同步到远程版本库。

六、关于调整提交记录

1、git cherry-pick [提交记录1] [提交记录2] …:
将[提交记录1] [提交记录2] …按顺序复制到当前HEAD指向的记录下。

2、git rebase -i HEAD~[数字]:
调整包含当前提交记录在内的往上数[数字]个记录,会通过打开vim来进行调整。

七、关于与远程版本库交互

1、git fetch:
下载远程版本库的新提交记录,同时更新本地版本库中的远程分支,但是不会改变你本地仓库的状态,它不会更新你的本地版本库分支,也不会修改你磁盘上的文件。

2、git pull:
相当于fetch和merge的结合。

3、假设应用场景:
假设你周一克隆了一个仓库,然后开始研发某个新功能。到周五时,你新功能开发测试完毕,可以发布了。但与此同时别人这周也在研发某个新功能,还进行了许多API的改动,这些变动会导致你新开发的功能变得不可用。而他们已经将那些提交推送到远程仓库了,因此你的工作就变成了基于项目旧版的代码,与远程仓库最新的代码不匹配了。
解决:
git fetch;git merge o/master;git push;
用 git fetch 更新了本地仓库中的远程分支,然后用 rebase 将我们的工作移动到最新的提交记录下,最后再用 git push 推送到远程仓库。

基本根据https://oschina.gitee.io/learn-git-branching/进行的操作学习与练习

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值