我在本地机器上有一个来自master的分支。我知道如何merge
掌握回购的东西。但问题是这个。
认为其他一些开发人员通过推送对其进行更改来更改主存储库,同时我将通过分支将更改合并到主存储库。
在这种情况下会发生什么。
在这种情况下我该怎么办?我试图从我的分支机构做以下。
git add *
git commit -m "my commit"
git push -u origin my_branch_name
git checkout master
git merge my_branch_name
到目前为止这是成功的。然后我尝试用以下命令推送(几分钟之前,另一位开发人员推动掌握)
git push origin master
然后它说了以下。
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'git@bitbucket.org:abcdef/cups.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
在这个阶段,我该怎么办。
pull
然后推送(在这个阶段,如果我得到一个拉动,会发生什么。)或git stash
,然后push
之类的事情。希望你对此有所帮助。非常感谢你。
答案 0 :(得分:1)
您需要拉remote/master
(以获取所有远程更改),然后您就可以推送本地更改。
说,当你拉remote/master
时有2次提交(A,B)
remote/master: A -> B
local/master: A -> B
然后其他开发人员将提交P
推送到主人
remote/master: A -> B -> P
local/master: A -> B
然后您已在您的分支机构中提交X
(例如feature
)
remote/master: A -> B -> P
local/master: A -> B
local/feature: A -> B -> X
现在将您的feature
与local/master
remote/master: A -> B -> P
local/master: A -> B -> X
local/feature: A -> B -> X
现在,您可以将remote/master
提取到远程/主控的所有提交到本地/主控。
remote/master: A -> B -> P
local/master: A -> B -> P -> X # now local/master has P (sync with remote/master)
local/feature: A -> B -> X
将您的本地/主人推送到远程
remote/master: A -> B -> P -> X
local/master: A -> B -> P -> X
local/feature: A -> B -> X
答案 1 :(得分:0)
您需要检索已由其他人推送的作品,并在能够推送之前将其集成到本地。 你可以执行一个" git pull"直接或更好地执行" git fetch",然后是" git merge"或者" git rebase"。 获取的优点是允许您查看其他用户推送的提交。然后,您可以决定进行合并或变基。 rebase的优点是可以产生更清洁的"树。
如果您正在进行某些工作(已暂存的文件),则需要决定是否要在下次推送时将其集成。然后,您需要决定丢弃它们,将它们存储起来或将它们集成到下一次提交中。