После исправления конфликта слияния я хочу увидеть фактическую разность моих неопрятных файлов до и добавить их для разрешения конфликта.
Я могу видеть различия всех файлов с git diff HEAD
, но это также показывает мне различия неконфликтующих файлов.
Я вижу неотправленные файлы с git diff
, но это показывает мне конфликт, а не фактическую разницу.
Как увидеть разницу между HEAD
и фактическим содержимым файлов, только для конфликтующих файлов?
Вот как создать репро (в пустой директории):
git init
# Create files foo.txt and bar.txt on master.
git commit --allow-empty -m "Initial commit"
echo 'foo content' > foo.txt
echo 'bar content' > bar.txt
git add .
git commit -m A
# Create a branch "b" that change both files.
git checkout -b b
echo 'Foo content' > foo.txt
echo 'Bar content' > bar.txt
git add .
git commit -m B
# Get back on master and add a commit that change foo.txt.
git checkout -
echo 'foo content and more' > foo.txt
git add foo.txt
git commit -m C
# Try to merge b in master: CONFLICT!
git merge b
# Fix the conflict.
echo 'Foo content and more' > foo.txt
Теперь git diff HEAD
дает мне список всех изменений, включая bar.txt
, который не является конфликтующим:
diff --git a/bar.txt b/bar.txt
index 085e7f5..6401b08 100644
--- a/bar.txt
+++ b/bar.txt
@@ -1 +1 @@
-bar content
+Bar content
diff --git a/foo.txt b/foo.txt
index 6633fd8..a65c68b 100644
--- a/foo.txt
+++ b/foo.txt
@@ -1 +1 @@
-foo content and more
+Foo content and more
С другой стороны, git diff
дает мне только конфликтующие файлы, но не показывает фактическую разницу между фактическим содержимым на диске и HEAD
.
diff --cc foo.txt
index 6633fd8,6fc4556..0000000
--- a/foo.txt
+++ b/foo.txt
@@@ -1,1 -1,1 +1,1 @@@
- foo content and more
-Foo content
++Foo content and more
Мне нужна команда с тем же выводом, что и git diff HEAD -- foo.txt
, но без указания конфликтующих файлов.
git diff --magic-flag HEAD
diff --git a/foo.txt b/foo.txt
index 6633fd8..a65c68b 100644
--- a/foo.txt
+++ b/foo.txt
@@ -1 +1 @@
-foo content and more
+Foo content and more