如何在git中备份私有分支

如何在git中备份私有分支,git,merge,workflow,rebase,dropbox,Git,Merge,Workflow,Rebase,Dropbox,我有一个本地分支,负责git的日常开发工作。我的工作流程是: 在本地分支机构做些事情,提交 取回原始/主文件 重新确定本地分支机构的基础,以赶上origin/master的新员工 这一切都很好,但我遇到的大多数建议都说,不应该“推”私人分支机构,因为它们定期执行再基础 这里的问题是,在这种情况下,本地分支没有备份到服务器,保存工作的唯一方法是将其合并回“可推送”分支(即原始/主分支) 在这种情况下,您对工作流程有何建议 谢谢 更新:我意识到我最初的一个要求(避免使用外部实用程序)是不必要的限制

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

  • 在本地分支机构做些事情,提交
  • 取回原始/主文件
  • 重新确定本地分支机构的基础,以赶上origin/master的新员工
  • 这一切都很好,但我遇到的大多数建议都说,不应该“推”私人分支机构,因为它们定期执行再基础

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

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

    谢谢

    更新:我意识到我最初的一个要求(避免使用外部实用程序)是不必要的限制


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

    您可以设置另一个远程存储库,并将所有分支推送到该存储库吗?另一件要考虑的事情就是备份你的本地机器上的所有东西(包括重要的东西),包括Git RePo。

    < P> >把你推到同一个分支上并没有错。这些图表应该说明为什么这样做很好:

    假设这是在您分支了local_分支并对其进行了几次提交(C和D)之后提交图的样子。自您分支本地分支以来,其他人已向源站/主站提交一次(E):

    A -- B -- E [origin/master] \ \ \-- C -- D [local_branch] A--B--E[起点/终点] \ \ \--C--D[本地大学分校] 然后在运行“git-rebase-origin/master”之后,提交图将如下图所示。“原始/主”仍然相同,但“本地分支机构”已重新设定基础:

    A -- B -- E [origin/master] \ \ \-- C -- D [local_branch] A--B--E[起点/终点] \ \ \--C--D[本地大学分校] 在这个阶段,如果您执行“git push origin local_branch:master”,那么它将产生一个简单的快进。“原始/主”和“本地分支机构”应相同:

    A -- B -- E -- C -- D [origin/master],[local_branch] A--B--E--C--D[起点/终点],[本地分支机构] 现在您可以自由地在“本地分支”上做更多的工作。最终你可能会得到这样的结果:

    A -- B -- E -- C -- D -- G -- I [origin/master] \ \ \-- F -- H [local_branch] A--B--E--C--D--G--I[源代码/主代码] \ \ \--F--H[本地大学分校] 注意,这看起来很像起始图。你可以不断重复这个过程


    您应该避免推到其他分支,一个您没有重新调整的分支。这就是你会遇到麻烦的地方(对另一个分支来说,在你从“源代码/主代码”重新设置基础后,你的“本地分支”历史似乎突然被重写了)。

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

    另一种选择是将“本地分支机构”推送到“原始”回购协议,但推送到该回购协议中它自己的分支机构(而不是“主分支机构”),即:

    git推送源本地分支:本地备份

    然后,当您准备进行另一次备份时(在您已经做了一些工作并重新定基后),只需从原始回购中删除备份分支,然后再将其推出:


    git push origin:local_backup
    推个人分支没有什么错。通常不鼓励这样做,因为人们可能会根据您的分支开始工作,而当您重新设置基础时,他们的更改会保持浮动

    我所做的是使用前缀来表示“这是我的分支机构,请自行承担风险”,例如:fc general cleanup

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

    将其添加为远程:

    git remote add bak server:/path/to/backup/repo
    
    执行备份:

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

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

    然后,当您想要进行备份时,只需运行“gitbak”。您也可以将其放入cron作业。

    我宁愿使用只生成一个文件(包括所有私有分支)的,而不是依赖Dropbox来同步git repo的所有文件,并将该文件与Dropbox同步。
    见“


    在“”中,提到了与Dropbox的同步错误。

    在设置单独的存储库的情况下,我仍然会遇到更改历史的问题-即,重新设置后我无法直接推送。这不是我想要的。假设工作正在进行中,我不想将它合并到master中,只想备份它。哦,我完全误解了你的问题。很抱歉。在我看来,一个合理的解决方案是将本地存储库克隆到备份的某个位置。只需定期重新克隆即可使备份保持最新。但是你不一定需要在克隆中做任何工作(你可以在重新克隆之前删除它以进行新的备份)。@Dan,这是你在执行“git pull--rebase”时得到的工作流吗?@Casey:是的。通常,“git pull”相当于“git fetch”,后跟“git merge”。但是'git pull--rebase'相当于'git fetch',后跟'git rebase',它产生了上面描述的那种工作流。你似乎没有做任何rebase,这是我遇到的实际问题。如果“git pull”你的本地副本,然后在本地进行rebase,难道不起作用吗?然后您的本地分支将合并来自主分支的所有更改,下一次推送将推送到远程分支。我必须试试这个来确定,但这似乎是可行的。唐,在非私家车上重新设置基地后下一次拉动