我和朋友一起使用git。 我做了一些提交,我的朋友没有更新他的本地回购并推送-f arugment:
git push -f origin master
现在在git服务器(github)中,我的提交被破坏,最新的提交是我的朋友。但我有本地承诺的历史。我可以以某种方式将它们合并回主人吗?或者我必须手动使用最新版本?
答案 0 :(得分:3)
好像你的朋友确实改变了已在公共存储库上发布的内容。见http://progit.org/book/ch3-6.html。首先烧你的朋友。
通常情况下,git pull会触发你身边的合并。您始终可以将整个存储库复制为备份以防万一。您也可以简单地将更新从最新版本复制到新的签出,并将所有更改作为单个提交提交。
答案 1 :(得分:1)
我没有对此进行测试,但我认为我会强制你的提交发布到github(从而重新编写历史记录),让你的“朋友”拉动你的变化,改变他的变化,然后推动他的变化了。这样,您就可以将更改发送到同一个地方。
一个好的经验法则是永远不要向GITHUB强制提交 :)这样做一次,让你的回购回到你的“朋友”搞砸之前的状态:< / p>
# on your machine
git push origin master --force
#now your "friend's" working copy is fairy screwed up, so on his machine:
git checkout -b screwed_up #checks out a new branch called screwed_up
git pull origin master # pulls in your changes
git checkout master #checks out his version with his changes
git rebase screwed_up #moves his changes to the end of your changes (see git graphs for more details)
git commit -am 'your message here'
git push origin master #pushes his changes, which are now merged with your changes back to github
答案 2 :(得分:0)
推回自己的本地提交是一种方式(git push origin master --force
),但它会删除你朋友的贡献。
你可以:
master
(请参阅“renaming remote git branch”)git push origin master
(重新创建包含完整内容的主分支)然后,您的朋友可以将他/她的本地master
分支重置为origin/master
。