如果遥控器提前,我该如何更新本地存储库

时间:2015-11-25 13:48:01

标签: git batch-file cmd

你好我们目前在windows(puke)下工作,但是我想编写一个简单的bat文件,每15分钟执行一次检查,如果我的本地存储库位于主远程存储库之后,如果为true则拉动,否则再等15分钟(时间是实际上并不重要)。到目前为止,我已经做到了这一点,但它似乎也没有用,我还没弄明白我将如何保持文件的执行.. schtask?

@echo off

CD /d D:\Repositories\Mobile\mobile
git checkout master
FIND "behind" | git status -uno
IF %errorlevel% EQU 0     
git pull

CD /d D:\Repositories\website\website
git checkout master
FIND "behind" | git status -uno
IF %errorlevel% EQU 0     
git pull

EXIT

1 个答案:

答案 0 :(得分:1)

在我看来,这是一个坏主意。

git pull使用来自一个或多个遥控器的提交更新本地分支。如果发生这种情况,您正在处理某些事情,而您的代码很容易破坏和/或产生冲突。 pull只应故意进行。

另一方面,

git fetch可以安全运行。这会更新您的本地跟踪分支(例如origin/master),您可以在方便时将更改手动合并到您的本地分支(例如master)。

碰巧,这与您的脚本无法正常工作的原因有关。在fetchpull隐式执行)后,Git只知道分支在其远程后面。如果您从未fetch,则您永远不会看到分支为behind。您可能希望更新环境以定期运行git fetch,而无需behind检查。

如果您确实希望按计划自动将origin/master合并到master,则应在git fetch之后完成。