在这里,我们正在将我们的源代码迁移到github,这个事务让我很头疼:)
我做了什么:我去了我们的工作区(是一个日食项目),做了git init
和git 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:抱歉我的英文
答案 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