您的位置:首页 > 其它

source tree使用

2017-01-23 10:53 721 查看
要明白source tree怎么用还是得先 明白git的基本原理和概念

看这里:git book 中文的特别好:

https://git-scm.com/book/zh/v2

从1.1看到1.3就好了。source tree就是把git命令用图形化按钮表示,懂了git才知道source tree每个按钮所对应的命令实际上是什么意思。

下面讲的完全针对source tree的,就是一些个人使用笔记。

1. x behind



首先,开头的master表示该记录是关于master分支的。

后面“Merge branch ‘。。。。。。”没有显示完整的这个是master这一次提交的commit info。

深色标起来的 1 behind,表示截止到这一次commit记录,落后于remote上一次commit。也就是说,remote上有一次新的commit没有同步到本地仓库。

此时,远端再commit一次,那么就会变成2 behind。



2. x ahead



每一次本地和remote上的版本达到统一时,记录一次本地与远端的最后同步版本。

ahead和behind相反,表示截止到“step 2 on plan”这次commit,master分支比最后同步版本多一次commit。

3. 执行pull的错误

error: Your local changes to the following files would be overwritten by merge:

aFileCreatedOnRemote

Please, commit your changes or stash them before you can merge.

出现情况:本地对文件aFileCreatedOnRemote进行了修改但是还没有commit,remote有新的commit,且该commit中也修改了文件aFileCreatedOnRemote。

错误的原因:pull这个动作会把远端与本地的最后同步版本以后的commit记录都拉取下来,然后将它们和本地的commit记录按时间合并起来(以达到本地和远端的记录完全同步),然后将拉取下来的记录中的最后一次commit,与本地的最后一次commit的代码进行merge,然后本地代码就会变成merge之后的结果。由于本地对aFileCreatedOnRemote的修改并没有commit,自然不会参与merge当中,结果就是直接丢失了,所以需要先将本地对aFileCreatedOnRemote进行的修改commit一下,再进行pull操作,就不会丢失了。

解决:先将本地代码commit之后再pull。

4. pull操作后本地代码已变,但状态不变

情况:pull操作之后,本地代码已经是将远端与本地进行合并了,但是这里还是和拉取之前一样,表示远端比本地最后一次同步版本多了2次commit。



原因:检测本地与远端是否同步,是通过比较本地的最后一次commit和远端最后一次commit是否一致。虽然pull之后,已经将远端最新的代码拉取下来了,并且和本地的代码进行了合并,但是本地仓库的最后一次commit仍然没变。

解决:

将本地代码进行commit。会发现此时在commit info这一行里自动填充了Merge branch ‘master’ of github.com:ohyeahhh/aProjectForTestingGitCommand。直接提交就好了。

也可以在pull的时候,把下面这个勾选上:它就表示,在完成本地代码和远端代码的合并以后自动进行commit。这样就不会出现上面的情况了。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息