Git强制完全同步到master

时间:2010-05-25 15:34:51

标签: svn git git-svn

我的工作场所使用Subversion进行源代码控制,所以我一直在使用git-svn来获取我自己的分支的优点,我可以随意提交而无需触及主回购等。

由于我的git svn checkout是本地的,我已将其克隆到网络共享以充当备份。我的想法是,如果我的桌面需要转储,我至少会在网络共享上拥有回购,以获得我尚未有机会提交的更改。

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

有没有办法简单地与桌面上的存储库完全同步,而不是每晚都进行新的git clone

2 个答案:

答案 0 :(得分:33)

如果你打算从另一个回购中获取,你不应该做一个变基。

如果您不介意覆盖网络共享中的更改,可以执行以下操作:

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

这会将本地主服务器重置为原始主服务器。

警告:这是重置,它将丢失所有更改(已提交*或未提交)。

但我假设你那里没有任何变化,而且它主要只是一个备份。

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

答案 1 :(得分:8)

两条评论:

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

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