#!/bin/bash
git fetch
var_local=`cat .git/refs/heads/master`
var_remote=`git log origin/master -1 | head -n1 | cut -d" " -f2`
if [ "$var_remote" = "$var_local" ]; then
echo "Strings are equal." #1
else
echo "Strings are not equal." # 0 if you want
fi
8条答案
按热度按时间nimxete21#
如果
[remote-path]
和[local-path]
相同,则可以**注意1:**上面的第二个命令将与本地存储的远程跟踪分支进行比较。要更新远程跟踪分支以与远程服务器的内容同步,需要使用fetch命令。或者,您也可以只执行
注2:
master
在上述示例中可以替换为任何分支名称r1zk6ea12#
要查看远程文件与本地文件之间的差异:
要查看另一方向的差异:
基本上你可以使用这个符号来比较任意两个文件:
通常,
ref1
和ref2
可以是分支名称、远程名称/分支名称、提交SHA等。eblbsuwk3#
要比较本地存储库和远程存储库,只需使用以下语法:
syqv5f0l4#
为此,我写了一个Bash脚本:
在上面的脚本中,我将远程主分支(不一定是它的master分支- any 分支)提取到
FETCH_HEAD
,只列出我修改过的文件,并将修改过的文件与git difftool
进行比较。Git支持许多
difftool
,我配置了 Meld Diff Viewer 以进行良好的GUI比较。从上面的脚本中,我在遵循Git stages untracked → staged → commit 之前,已经预先知道了其他团队在同一个文件中做了哪些更改,这有助于我避免不必要的解决与远程团队的合并冲突,或者创建一个新的本地分支,并在主分支上进行比较和合并。
rwqw0loc5#
与当前分支核对:
要与其他分支进行核对,可以说staging:
apeeds0o6#
我尝试了几个解决方案,但我认为一个简单的方法是这样的(你在本地文件夹):
运行此脚本后,您将使用上次提交号完成本地Git和远程Git的比较。
gk7wooem7#
下面是对原始问题的完整回答,该问题讨论了本地和远程上可能的不同路径:
git fetch origin
git diff master -- [local-path] origin/master -- [remote-path]
假设本地路径为 * docs/file1.txt *,远程路径为 * docs2/file1.txt *,则使用
git diff master -- docs/file1.txt origin/master -- docs2/file1.txt
这改编自GitHub帮助页面here和之前的 Code-Apprentice 答案。
qzlgjiam8#
对我来说,只使用不带分支的文件名即可: