如何备份git中的私人分支

我有一个地方分支在git的日常开发工作。 我的工作stream程是:

  1. 做local_branch上的东西,提交
  2. 取得原点/主
  3. 重新调整local_branch以赶上来自origin / master的新东西

这一切都很好,但是我遇到的大部分build议都是说,不应该“推”那些定期进行基础设置的私人分支机构。

这里的问题是,在这种情况下,本地分支不备份到服务器,保存工作的唯一方法是将其合并回“可推出”分支(即起源/主)

在这种情况下,你对工作stream程有什么build议?

谢谢!

更新 :我意识到,我的原始要求之一(避免使用外部实用程序)是不必要的限制。

我目前的解决scheme是将我的所有存储库存储在云同步的文件夹中 – 这样我就可以免费获得备份。

我使用–mirror选项并推送到个人备份存储库:

将其添加为远程:

git remote add bak server:/path/to/backup/repo 

做备份:

 git push --mirror bak 

这将自动使您的备份存储库看起来像您活动的一个分支将被创build,删除,更新(甚至强制/非fastforwards)根据需要。 你也可以为此做一个别名:

 git config alias.bak "push --mirror bak" 

那么,当你想做一个备份时,这只是一个运行“git bak”的问题。 你也可以把这个投入到一个cron工作中。

另一个select是把“local_branch”推到“origin”repo,但是它是在repo(而不是“master”)中的分支,即:

git push origin local_branch:local_backup

然后,当您准备好进行另一次备份(并且在您做了一些工作并重新绑定之后),只需从原始仓库中删除备份分支,然后再次将其重新推出:

git push origin :local_backup <===从原点删除分支

git push origin local_branch:local_backup

这样你就不会遇到从“origin / master”重新生成后推“local_branch”的问题。

如果删除你的备份分支让你感到紧张(直到你终于将自己的工作交给“主人”),你总是可以用一个新名字(例如“local_backup1”,“local_backup2”等) 。

推个人分行没有任何问题。 人们普遍感到灰心,因为人们可能会根据你的分支开始工作,当你重新分配时,他们的变化是浮动的。

我所做的是用一个前缀来表示“这是我的分支,用它自己承担风险”,如: fc-general-cleanup

推到你想要的同一个分支是没有问题的。 这些图应该说明为什么这工作正常:

让我们说这是什么提交graphics后,你已经分支local_branch并提交了几个提交(C和D)。 其他人已经做了一个提交(E)的起源/主,因为你分支local_branch:

 A  -  B  -  E [origin / master]
       \
        \    
         \  -  C  -  D [local_branch]

然后在运行“git rebase origin / master”之后,提交graphics将如下图所示。 “origin / master”仍然是一样的,但“local_branch”已经重新发布:

 A  -  B  -  E [origin / master]
            \
             \
              \  -  C  -  D [local_branch]

在这个阶段,如果你做“git push origin local_branch:master”,那么它会导致一个简单的快进。 “origin / master”和“local_branch”将是相同的:

 A  -  B  -  E  -  C  -  D [origin / master],[local_branch]

现在你可以自由地在“local_branch”上做更多的工作。 最终你可能会得到这样的东西:

 A  -  B  -  E  -  C  -  D  -  G  -  I [origin / master]
                      \
                       \
                        \  -  F  -  H [local_branch]

注意这看起来很像起始图。 你可以不断重复这个过程。

你应该避免推到其他的分支,一个你没有退缩的分支。 这就是你会遇到麻烦的地方(对另一个分支来说,看起来你的“local_branch”的历史在你从“origin / master”重新命名之后突然被重写了)。

你可以设置另一个远程仓库,你推动所有的分支机构? 另一件需要考虑的只是备份本地机器上的所有内容(包括git回购)。

这是我所做的 。 但是 – 这不是私人的。 我这样做,以便我可以与我自己(可以这么说)合作。 它让我可以在两个或多个盒子的同一分支上工作。 如果其他人可以访问共享回购,他们可以看到我在分支上做的工作。 当然,在我的回购协议中,没有其他人可以访问,所以它仍然是私人的。 在github上,全世界都可以看到我的东西。 就像他们真的在乎 ;)

而不是依靠Dropbox来同步所有的git仓库文件,我宁愿使用只生成一个文件(包括所有你的私人分支)的git bundle ,然后用DropBox同步这个文件。
请参阅“ 使用Dropbox的Git ”

在“ 备份本地Git仓库 ”中, Yars提到与Dropbox存在同步错误。