【问题标题】:A little git troublegit 有点麻烦
【发布时间】:2011-04-29 03:35:13
【问题描述】:

我正在和我的朋友一起使用 git。 我做了一些提交,我的朋友没有更新他的本地仓库并使用 -f 参数推送:

git push -f origin master

现在在 git 服务器 (github) 中,我的提交被销毁了,最新的提交是我的朋友。但我有本地提交的历史。我可以以某种方式将它们合并回主人吗?还是我必须用最新版本手动完成?

【问题讨论】:

    标签: git merge commit push


    【解决方案1】:

    似乎您的朋友确实更改了已在公共存储库上发布的内容。见http://progit.org/book/ch3-6.html。从烧掉你的朋友开始。

    通常一个 git pull 应该在你这边触发一个合并。您可以随时复制整个存储库作为备份以防万一。此外,您可以简单地将最新版本中的更改复制到新的签出处,并将所有这些更改作为一次提交提交。

    【讨论】:

      【解决方案2】:

      我还没有对此进行测试,但我认为我会强制将您的提交发布到 github(从而再次重写历史),让您的“朋友”拉动您的更改,重新调整他的更改,然后推送他的变化。这样,您可以将两个更改都放在同一个地方。

      一个好的经验法则是永远不要强制提交到 GITHUB :) 这样做一次可以让你的 repo 恢复到你的“朋友”搞砸之前的状态:

      # 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
      

      【讨论】:

        【解决方案3】:

        推迟您自己的本地提交是一种方法 (git push origin master --force),但它会抹去您朋友的贡献。

        你可以:

        • 在 GitHub 上重命名 master(参见“renaming remote git branch”)
        • 从 GitHub 获取该“friend_master”分支,并将其重新设置在您的 master 之上,整合您朋友的贡献并对其进行验证。
        • git push origin master(用完整的内容重新创建主分支)

        然后您的朋友可以简单地将他/她的本地master 分支重置为origin/master

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-23
          • 2010-11-20
          • 1970-01-01
          • 2015-02-06
          • 2015-09-05
          相关资源
          最近更新 更多