Git:当远程跟踪分支发生变化时,如何自动更新我的本地分支?

时间:2017-10-12 17:50:22

标签: git shell

我想在后台运行一些东西,当我的远程分支发生某些变化时,基本上会运行git pull --rebase。如果没有冲突,大多数时候它在后台静默工作。在一场冲突中,它只会让我处于rebase-resolve-conflict阶段,直到我解决它等待的所有事情。我该怎么做呢?是否有现有软件已经执行此操作?

2 个答案:

答案 0 :(得分:5)

如果您无法控制远程存储库,则一种解决方案是使用crontab定期运行git fetch,或者甚至可以按照您的建议运行git pull --rebase。确切的选择命令取决于您的工作流程,我个人更喜欢使用git fetch,因为我可以决定何时以及如何合并或变基。

定期运行命令:

crontab -e

并添加一行,例如:

* * * * * git -C PATH_TO_LOCAL_REPO fetch

* * * * * git -C PATH_TO_LOCAL_REPO pull --rebase

这将使用您的用户权限每分钟运行一次git命令。

如果要在存储库列表中应用git命令,可以添加以下行:

* * * * * /home/myself/scripts/git-refresh.sh

其中git-refresh是一个适用于所有存储库的脚本。

-C选项允许您在不更改目录的情况下运行git命令。来自man page

  

-C <path>

     

像启动git而不是当前工作目录一样运行。

答案 1 :(得分:0)

此过程称为同步分叉

同步存储库的分支以使其与上游存储库保持同步。不幸的是,GitHub没有任何自动同步功能。但是,在服务器上添加作为cron作业是微不足道的,这样你就不必手动完成它。例如:

cd / srv / mirrorrepo; git fetch upstream master; git push origin master

以下插件可能会有所帮助

https://github.com/trilbymedia/grav-plugin-git-sync