对不起,我是Git的新手,很难在Google上找到这些难以解释的问题(至少对我而言)的答案。
说我的名字是乔,我正和我的同事鲍勃一起制作软件程序。
我们有上游Repo A
,我们在本地计算机上有Repo A
克隆,我们代码,提交并定期推送到相同的分支,说主人。我知道这在技术上并不是最好的方法,但举例来说。
现在,如果我们都在处理一个文件会发生什么。 那个他还没推送的Bob的本地文件有内容
// awesome program
[some edits by Bob]
我尚未推送的本地文件 具有内容
// awesome program
[some edits I made]
远程文件是
// awesome program
[some edits I made]
或
// awesome program
[some edits Bob made]
或者,如果有办法,我希望它是
// awesome program
[some edits Bob made]
[some edits I made]
对于noobishness抱歉:(
答案 0 :(得分:6)
Git会拒绝你的推动。它会告诉你服务器上有新的变化,并让你在推动之前做一个拉动。所以,你最终会得到
// awesome program
[some edits Bob made]
[some edits I made]
在本地计算机上。然后你就可以把它推到遥控器上了。
答案 1 :(得分:5)
首先:您无法以常规git push
正常推送,因为当您使用本地主控时,您的远程主控已更改。所以 git 建议你用-f选项强制推送。 ie 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也拒绝你的拉,并告诉你在 example 文件中有冲突。这是因为你和鲍勃都编辑了相同的文件和相同的行!
最后:查看此link并解决冲突。你可以保留你的变化或鲍勃或两者。然后提交更改并git push
也更新您的远程仓库。那就是它!!!“
答案 2 :(得分:1)
我并非100%确定这是您要做的事情,但是当您提交时,应该会创建一个新的修订版。每个新版本都将取代以前的版本。看看这个信息是否有帮助: Git Squash Commits