【问题标题】:Git force complete sync to masterGit强制完成同步到master
【发布时间】:2010-05-25 15:34:51
【问题描述】:

我的工作场所使用 Subversion 进行源代码控制,所以我一直在使用 git-svn 来利用我自己的分支的优势,在不触及主 repo 的情况下尽可能频繁地提交,等等。

因为我的 git svn checkout 是本地的,所以我也将它克隆到网络共享以作为备份。我的想法是,如果我的桌面进行转储,我至少会在网络共享上拥有 repo,以获取我还没有机会提交的更改。

我的工作流程是在桌面上工作、进行更改、提交等。一天结束时,我想用我当前的所有更改更新网络共享上的存储库。我使用git clone repo_on_my_desktop 在网络共享上设置了repo,然后使用git pull origin master 更新了网络共享上的repo。我遇到的问题是当我使用 git rebase 来压缩多个提交之前,然后将 dcommitting 到主 svn 存储库。当我这样做时,当我尝试在夜间备份时,我会在网络共享上的 repo 上遇到合并冲突。

有没有一种方法可以简单地与我桌面上的存储库完全同步,而无需每晚执行一个新的git clone

【问题讨论】:

    标签: svn git git-svn


    【解决方案1】:

    如果你打算从另一个 repo 中提取,你不应该做 rebase。

    如果您不介意覆盖网络共享中的更改,您可以这样做:

    git fetch origin master
    git reset --hard origin/master
    

    这会将本地主机重置为原始主机。

    警告:这是一个重置,它将丢失您的所有更改(是否已提交*)。

    但我假设您实际上并没有任何更改,而且它主要只是一个备份。

    * 注意:从技术上讲,提交的更改在 reflog 过期之前不会丢失,但出于所有意图和目的,它们实际上已丢失。

    【讨论】:

    • 不,它不会删除无关文件。
    • 如果您有任何更改并且很高兴失去它们,您还需要git clean -f -d。这应该可以确保完全同步。
    【解决方案2】:

    两个cmets:

    1/ 我建议为您的网络共享使用 bare repobundle(一个文件,更容易移动)

    2/ 我宁愿将 network_repo 作为远程添加到您的桌面存储库并从那里推送 (git push --force network_repo master):您留在工作存储库中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-22
      • 2013-09-25
      • 1970-01-01
      • 1970-01-01
      • 2012-03-03
      • 1970-01-01
      • 2013-07-07
      相关资源
      最近更新 更多