根据gitee中git-Branching学习总结:
路径:进入gitee后,拉到网页最下端,有一个“git命令学习”,它是以偏动画的形式给你展示,练习git语句。
- git commit 提交
- git branch xx 创建分支(像是再说:“想基于这个提交以及它所有的父提交进行新的工作”)
- git checkout xx 切换到分支
- git merge xx 合并分支(如果两者相对于共同的父类的同一个地方都有改动,会有冲突问题,改动只能两者选其一,或者重写一个)
- git rebase xx 合并分支(注意和merge的区别,可以看看这篇文章https://www.jianshu.com/p/f23f72251abc)(注意rebase的地方,比如说你在c3上rebase master,那c3就会走到c2的位置)
摘录几句
“marge 特点:自动创建一个新的commit
如果合并的时候遇到冲突,仅需要修改后重新commit
优点:记录了真实的commit情况,包括每个分支的详情
缺点:因为每次merge会自动产生一个merge commit,所以在使用一些git 的GUI tools,特别是commit比较频繁时,看到分支很杂乱。
rebase 特点:会合并之前的commit历史
优点:得到更简洁的项目历史,去掉了merge commit
缺点:如果合并出现代码问题不容易定位,因为re-write了history” - 分离HEAD,没有新学语句,简单说git checkout master, HEAD指向的是这个分支,而git checkout c3,head指向了c3.
- 相对引用,git checkout master^,就指向了c1,或者可以git checkout HEAD^,就到了c0,或者可以直接git checkout master~2,直接到c0
- git branch -f master HEAD,上面的命令会将 master 分支强制指向 HEAD 所指的命令.下面这个图片大意是,一直commit到c4,创了个bugFix的branch,在使用移动分支的这条命令,就成了下面第二张图
- git reset xx,只对本地有效,在reset后, c2 所做的变更还在,但是处于未加入暂存区状态。
git revert xx,则可以对push远程有效,第二张图c2‘和c1是相同的 - 剩下的比较高级了,日后再学
上面是本地仓库,下面是远程仓库 - git clone,命令的作用是在本地创建一个远程仓库的拷贝(比如从GitHub)(虚线的是远程)
- 远程分支,o/master(o代表origin)就大概可以理解为远程仓库的,反映了远程仓库在你最后一次与它通信时的状态,而master则是自己本地的。你如果直接checkout到o/master,然后commit会出现分离HEAD,这个是没有作用的,你必须在别的地方完成你的工作, (更新了远程分支之后)再用远程分享你的工作成果。总而言之不能在o/master去操作。
- git fetch 可以理解为单纯的下载,不会改变你本第的内容
可以看到只是移动了远程分支o的指向 - git pull 在git fetch下载后,使用git pull可以将那些变化更新到我们的工作中。git pull就等同于git fetch + git merge o/master。试了一下,只有fetch下新的才能pull,比如你之前已经pull,自己commit几次,你在pull是没有用的(想想也确实没用啊,o/master的代码都没变,pull谁去)
- git push 前面都是在下载,现在终于能上传了,
- 偏移的提交历史 这章主要是说,在你pull后,你的队员已经修改了o/master,这样你就不能提交你本地的,因为你本地的o/master和远程仓库的o/master不一样,你必须先pull下现在的o/master才可以提交你更改的代码。
- 剩下看样子比较高阶,日后在学。