git fetch and pull

时间:2012-01-27 10:49:00

标签: git github

在这里,我们正在将我们的源代码迁移到github,这个事务让我很头疼:) 我做了什么:我去了我们的工作区(是一个日食项目),做了git initgit add .然后git commit -am "first commit" 一切正常,然后,我把它推到了github。也是成功的。
但是有一个大问题:我的朋友刚刚对名为A.java的文件进行了更改,我刚刚更改了B.java。好的,没什么大不了的。然后,他把它推到了github。我试图推动,我的推动被拒绝了。好的,我做了一个git pull github master然后再次推送,现在,我的“提交消息”变成Merge branch 'master' of github.com:germantech/projectName了 好的,我做错了什么? ps:抱歉我的英文

2 个答案:

答案 0 :(得分:3)

您没有做错任何事情 - 当您执行git pull github master时,git会转到远程github指示的存储库,获取master分支所需的所有内容,以及然后将其合并到您当前的分支中。在拉动之前,您有以下历史记录:

O --- A (master)

...其中O是提交消息" firts commit"并且A是将您的更改引入A.java的提交。与此同时,你的朋友有历史:

O --- B (master)

...而且已被推送到GitHub。当您的git pull github master将其合并到您的历史记录中时,它会创建一个"合并提交"用两个master分支的变化来表示树的状态:

O --- B --- M (master)
 \         /
   ---A ---

相反,如果您希望保持历史呈线性,那么您可以执行git pull --rebase github master,而不会重播"重播"除了分支的删除版本之外,在分支的远程版本中没有提交的提交:

o --- B --- A' (master)

有些人更喜欢 - 我个人不在乎。

答案 1 :(得分:1)

你是在同一个回购中还是在不同的回购中?如果您需要重新定义更改并再次推送

git pull --rebase github master
git push github master