git diff< branch>显示a/File和b/File之间的差异,哪个是a,哪个是b?

iyr7buue  于 2023-01-24  发布在  Git
关注(0)|答案(2)|浏览(192)

我有一个master分支和一个foo分支,这两个分支都没有要提交的东西,但是它们彼此有分歧,我在foo分支中运行

git diff master

得到以下输出

diff --git a/myfile.html b/myfile.html
index 48d09a1..4ced8e5 100644
--- a/AdvancedSearch.aspx
+++ b/AdvancedSearch.aspx
@@ -1919,1 +1919,2 @@
     </script>

-Line removed in master or foo - I don't know which 
+Line added in master or foo - I don't know which

新行是在master还是foo中添加的?旧行是在master还是foo中删除的?我如何判断?
我在分支bar上,我想看看masterfoo之间的区别:

git status
On branch bar    
nothing added to commit, working directory clean

git diff master..foo

当我在我的工作树中做了一些改变,然后运行git diff时,很明显改变了什么,但是当在不同的分支之间做这些改变时,我很难读取差异。

xzlaal3s

xzlaal3s1#

对于git diff <commit>

  • a/-代表<commit>
  • b/+表示当前工作树

对于git diff <commit1> <commit2>

  • a/-代表<commit1>
  • b/+代表<commit2>

读取git diff
git diff查找将<commit1>转换为<commit2>/working-tree所需的更改。

  • 未突出显示:行在两个提交之间是公共的
  • -:行<commit1>中,但不在<commit2>/工作树中
  • 即需要移除以将<commit1>转变为<commit2>的线
  • +:行不是<commit1>中,而是<commit2>/工作树中
  • 即需要添加到<commit1>的行

编辑:
你也可以让git使用助记前缀来代替ab,详见git文档。

kxxlusnw

kxxlusnw2#

明确说明你感兴趣的修订版本,并注意git-diff手册上说
然而,“diff”是关于比较两个端点,而不是范围,并且范围符号(“..”和“...”)并不表示gitrevision(7)中“指定范围”部分定义的范围。
如果你找不到你感兴趣的提交的版本号,你就有更大的问题了。

$ git diff ccd55fe cb3e8a0

其中修订版ccd 55 fe是“a”端,cb 3e 8a 0是“b”端。相应地,命令

$ git diff cb3e8a0 ccd55fe

是完全相反的,并且同样地,在“a左侧”和“b右侧”之间没有歧义。

相关问题