当你git push但是其他人已经在你的本地回购中提交了你没有的东西时会发生什么?

Jos*_* A. 6 git version-control

对不起,我是Git的新手,很难在Google上找到这些难以理解的问题(至少对我而言)的答案.

说我的名字是乔,我和我的同事鲍勃正在制作一个软件程序.

我们有上游Repo A,我们Repo A在本地机器上有克隆,我们在那里编码,提交和定期推送到同一个分支,比如master.我知道这在技术上并不是最好的方法,但是举个例子.

现在,如果我们都在处理一个文件会发生什么.他尚未推送的 Bob的本地文件包含内容

// awesome program
[some edits by Bob]
Run Code Online (Sandbox Code Playgroud)

尚未推送的本地文件包含内容

// awesome program
[some edits I made]
Run Code Online (Sandbox Code Playgroud)

鲍勃推了推,一秒钟后我推了推.现在发生了什么?

远程文件是否正常

// awesome program
[some edits I made]
Run Code Online (Sandbox Code Playgroud)

要么

// awesome program
[some edits Bob made]
Run Code Online (Sandbox Code Playgroud)

或者,如果有办法,我希望它是

// awesome program
[some edits Bob made]
[some edits I made]
Run Code Online (Sandbox Code Playgroud)

对不起的noobishness :(

小智 6

Git会拒绝你的推动.它会告诉你服务器上有新的变化,并让你在推动之前做一个拉动.所以,你最终会得到

// awesome program
[some edits Bob made]
[some edits I made]
Run Code Online (Sandbox Code Playgroud)

在你的本地机器上.然后你就可以把它推到遥控器了.


dNi*_*tro 5

第一:你不能用常规方式推进,git push因为当你在本地主人身上时你的远程主人已经改变了.所以git建议你用-f选项强制推送.即git push -f,但它不是建议做力推上的共享分支,除非你有一个公平的道理一样interactive rebasing!

第二:通过git的这条消息,你被告知你的远程存储库发生了一些事情,所以你做了一个git status,是的,它告诉你"Your branch and 'origin/master' have diverged, and have 1 and 1 different commit(s) each, respectively.".你应该更新你当地的回购; 所以你正在做一个git pull或在这种情况下更好的命令,git pull --rebase并且令人惊讶!Git也拒绝你的拉,并告诉你在示例文件中有冲突.那是因为你和鲍勃都编辑了相同的文件和相同的行!

最后:查看此链接并解决冲突.你可以保留你的变化或鲍勃或两者.然后提交更改并git push更新您的远程仓库.就是这样!!!