你好我们目前在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
答案 0 :(得分:1)
在我看来,这是一个坏主意。
git pull
使用来自一个或多个遥控器的提交更新本地分支。如果发生这种情况,您正在处理某些事情,而您的代码很容易破坏和/或产生冲突。 pull
只应故意进行。
git fetch
可以安全运行。这会更新您的本地跟踪分支(例如origin/master
),您可以在方便时将更改手动合并到您的本地分支(例如master
)。
碰巧,这与您的脚本无法正常工作的原因有关。在fetch
(pull
隐式执行)后,Git只知道分支在其远程后面。如果您从未fetch
,则您永远不会看到分支为behind
。您可能希望更新环境以定期运行git fetch
,而无需behind
检查。
如果您确实希望按计划自动将origin/master
合并到master
,则应在git fetch
之后完成。