确定git merge/pull是否对Windowsbatch文件进行了任何更改

确定git merge/pull是否对Windowsbatch文件进行了任何更改,git,Git,如何在Windows批处理文件中使用git.exe提取更改并确定是否对工作副本进行了任何更改?无论是否进行了更改,pull和merge似乎都会返回“成功”的退出代码0 我通过将stdout重定向到一个临时文件,并将其与FC比较到一个包含“已更新”的文件来实现这一点。这是可行的,但似乎是一个很大的漏洞。有更好的办法吗 这适用于一个脚本,该脚本可以提取远程更改、进行构建、运行单元测试,然后推送。在推送之前,我想检查是否有其他人在我的脚本运行时推送了更改,如果是,则再次进行构建并运行测试 如何在Win

如何在Windows批处理文件中使用git.exe提取更改并确定是否对工作副本进行了任何更改?无论是否进行了更改,pull和merge似乎都会返回“成功”的退出代码0

我通过将stdout重定向到一个临时文件,并将其与
FC
比较到一个包含“已更新”的文件来实现这一点。这是可行的,但似乎是一个很大的漏洞。有更好的办法吗

这适用于一个脚本,该脚本可以提取远程更改、进行构建、运行单元测试,然后推送。在推送之前,我想检查是否有其他人在我的脚本运行时推送了更改,如果是,则再次进行构建并运行测试

如何在Windows批处理文件中使用git.exe提取更改并确定是否对工作副本进行了任何更改

您可以这样做:

# update the local repo with changes from the remote
git fetch --all -prune

# check to see if there is a difference between your local branch and the remote branch

git log <branch>...origin/<branch>

谢谢,但这需要本地和远程分支的名称,而我的脚本没有这些名称。(在不知道分支名称的情况下,我仍然可以做
git pull
git push origin HEAD
很好。)我认为对于本地分支,我可以使用
git rev parse HEAD
,但是对于远程分支
git rev parse origin
给出错误的结果。
# update the local repo
git fetch --all --prune

# compare the 2 commits to see if there are any new commits
# the commands will return SHA-1 simply compare them
git rev-parse origin/dev
git rev-parse dev