如何备份git中的私人分支
我有一个地方分支在git的日常开发工作。 我的工作stream程是:
- 做local_branch上的东西,提交
- 取得原点/主
- 重新调整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存在同步错误。