合并-如何在git中备份私有分支

我在git中有一个本地分支机构,负责日常开发工作。 我的工作流程是:

  1. 在本地分支上做东西,提交
  2. 获取来源/母版
  3. 调整本地分支机构的基础,以赶上起源/母公司的新事物

一切正常,但是我遇到的大多数建议都说,不应“推”私有分支,定期在此分支上执行基础。

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

在这种情况下,您对工作流程有何建议?

谢谢!

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

我当前的解决方案是将我所有的存储库都存储在一个云同步文件夹中,这样我就可以免费获得备份。

Art asked 2020-02-16T17:35:16Z
7个解决方案
50 votes

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

将其添加为遥控器:

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

做备份:

git push --mirror bak

这将自动使您的备份存储库看起来像您的活动存储库-分支将根据需要创建,删除,更新(甚至强制/非快速转发)。 您也可以为此设置别名:

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

然后,当您要执行备份时,只需运行“ git back”即可。 您也可以将其放入计划任务。

Pat Notz answered 2020-02-16T17:35:50Z
4 votes

推动个人分支没有错。 通常不建议这样做,因为人们可能会根据您的分支机构开始工作,而当您重新设定基准时,他们的更改将保持浮动。

我要做的是使用前缀来表示“这是我的分支,使用它需要您自担风险”,例如:fc-general-cleanup。

FelipeC answered 2020-02-16T17:36:15Z
4 votes

另一种选择是将“ local_branch”推送到“原始”存储库,但推送到该存储库中它自己的分支(不是“ master”),即:

git push origin local_branch:local_backup

然后,当您准备进行另一个备份时(在进行了一些工作并重新设置基础之后),只需从源存储库中删除备份分支,然后再将其推出:

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

git push origin local_branch:local_backup

这样,在将“ local_branch”从“ origin / master”重新建立基础后,您在推送“ local_branch”时不会遇到问题。

而且,如果删除备份分支使您感到不安(直到您最终将工作提交给“ master”之后),您就可以始终使用新名称(例如“ local_backup1”,“ local_backup2”等)继续推送到新分支 。

Dan Moulding answered 2020-02-16T17:37:02Z
2 votes

推送到您要重新定据的同一分支没有任何问题。 这些图应该说明为什么它可以正常工作:

可以说,这是在分支local_branch并对其进行两次提交(C和D)之后,提交图的外观。 自您分支local_branch以来,其他人已对原始/主服务器进行了一次提交(E):

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

然后,在运行“ git rebase origin / master”之后,提交图将类似于下图。 “原件/母版”仍然相同,但是“ local_branch”已重新设置基础:

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

在此阶段,如果您执行“ git push origin local_branch:master”,则将导致简单的快进。 “来源/主服务器”和“ local_branch”将相同:

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

现在,您可以自由地在“本地分支”上做更多的工作。 最终,您可能会得到以下信息:

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

请注意,这看起来很像起始图。 您可以不断重复此过程。

您应该避免推送到其他分支,而不是从其分支的基础。 那就是您遇到麻烦的地方(在另一个分支中,在您从“起源/母版”重新建立基础之后,看起来您的“ local_branch”的历史记录突然被重写了)。

Dan Moulding answered 2020-02-16T17:37:49Z
1 votes

您可以建立另一个将所有分支推送到的远程存储库吗? 要考虑的另一件事是仅备份本地计算机上的所有内容(重要),包括git repo。

Cebjyre answered 2020-02-16T17:38:09Z
1 votes

这是我的工作。 但是-这不是私人的。 我这样做是为了我可以与自己合作(可以这么说)。 它使我可以在两个或多个框上的同一分支上工作。 如果其他人可以访问共享存储库,他们可以看到我在分支机构上所做的工作。 当然,在我的家庭存储库中,没有其他人可以访问,因此它仍然是私有的。 在github上,全世界都可以看到我的东西。 就像他们真的在乎。 ;)

Don Branson answered 2020-02-16T17:38:30Z
1 votes

与其依靠Dropbox来同步git repo的所有文件,不如使用git bundle,它仅生成一个文件(包括所有私有分支),并将该文件与DropBox同步。
请参阅“使用Dropbox进行Git”

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

VonC answered 2020-02-16T17:38:59Z
translate from https://stackoverflow.com:/questions/923956/how-to-back-up-private-branches-in-git