git练习

练习网站|参考git练习
先了解git add和git commit,git add 是把文件放到暂存区;git commit是把文件从暂存区到仓库

git commit

把git记录看成无数的commit,然后branch相当于指针,git就相当于commit们和指向它的指针们

我平时提交的时候,都是这样提交的

git commit -m "message"

游戏里简化了

git commit
image
执行两次commit

还有一个是当前指针指向,git一定会有一个当前指针,

git branch
branch理解为git的分支,就是在一个commit上面有两个指针,就像一条路有了岔路口
创建新分支有两种方式,比如创建newBranchName的分支

git branch newBranchName
git checkout newBranchName

第一行是创建新分支,第二行是把当前指针指向新分支
它们可以用一行解决

git checkout -b newBranchName

在新的指针上面继续commit,就相当于开了一条新路

git merge

开完新路之后可以合并,合并的一种方式是git merge

image

如上图所示,如果我们master分支想要合并bugFix的提交,那么可以

git merge bugFix

然后你就发现master这里新建了一个提交,这个提交又是bugFix的下一个提交,又是master的下一个提交

image

git rebase

git merge在很多分支的时候,会导致分支很乱,而第二种合并分支的方法是 git rebase。Rebase 实际上就是取出一系列的提交记录,“复制”它们,然后在另外一个地方逐个的放下去。
如下图,

image

如果用rebase合并的话

git rebase master

结果如下图

image

关于rebase,我的理解是将一个分支放到另外一个分支下面,其实rebase后面是带两个参数的

git rebase branch1 branch2

然后他们的分支就会按照,branch1,branch2的顺序排列,如果branch2省略,那么就指代当前分支。如上面的例子, git rebase master,此时指针在bugFix后面,所以最终的结果是master在前,bugFix在后。

HEAD

有的时候会提醒分离的HEAD,其实HEAD是当前的指向,它可以指向提交,也可以指向分支。
如下图,如果用git checkout C1的话,HEAD就从分支master脱离。原来HEAD指向master的时候,master指向C1, 所以它本质是指向C1的。

image

^和~

如果我们想要HEAD指向当前提交的上一个提交

image

比如说现在我们的HEAD指向了master,我们想要指向C1,那么

git checkout master^

就会变成

image

当然我们用

git checkout HEAD^

也能做到
如果我们想向前几个分支,那么可以使用~,比如向前移动两个分支

git checkout HEAD~2

git branch -f

有的时候我们想移动分支,那么就用到git branch -f了,它允许我们强制移动分支。
具体用法是

git branch -f branchName Location

比如我们想让master分支移动到HEAD指向的上一个提交。

git branch -f master HEAD^

有了这个命令以后,我们就可以让分支的指向自由移动了~
因此把

image

变成

image

相信也不难吧~

git checkout HEAD^
git branch -f master C6
git branch -f bugFix C0
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。