一位同事正在玩git revert今天他结束了一个奇怪的情况:
git init
echo 1 > file.txt
git add file.txt
git commit -m "Commit 1"
# Say this generates hash aaa
cat file
1
echo 2 >> file.txt
git add file.txt
git commit -m "Commit 2"
# Say this generates hash bbb
cat file
1
2
echo 3 >> file.txt
git add file.txt
git commit -m "Commit 3"
# Say this generates hash ccc
cat file
1
2
3
git revert bbb
#line above does not work
还原不起作用,最终会出现挑选情况。我期待以下结果:
cat file
1
3
diff -R工作正常
diff --git b/file.txt a/file.txt
index aaa..bbb 100644
--- b/file.txt
+++ a/file.txt
@@ -1,2 +1 @@
1
-2
这可能是非常愚蠢的事情,但是什么?
答案 0 :(得分:3)
这只是合并冲突的反面。一场不合并的冲突?您可以将恢复视为合并的反面。如果你试图在相反的方向做同样的事情,你会得到合并冲突。
$ git init
Initialized empty Git repository in /home/depp/test/.git/
$ echo 1 > file.txt
$ git add .
$ git commit -m A
[master (root-commit) 406d008] A
1 file changed, 1 insertion(+)
create mode 100644 file.txt
$ echo 2 >> file.txt
$ git add .
$ git commit -m B
[master 730fed9] B
1 file changed, 1 insertion(+)
$ git branch branch1 'HEAD^'
$ git checkout branch1
Switched to branch 'branch1'
$ echo 3 >> file.txt
$ git add .
$ git commit -m C
[branch1 c359c04] C
1 file changed, 1 insertion(+)
$ git merge master
Auto-merging file.txt
CONFLICT (content): Merge conflict in file.txt
Automatic merge failed; fix conflicts and then commit the result.
您可能认为答案“显而易见”,您甚至可能希望向Git开发人员提交错误或增强请求,但Git认为答案不明显。 Git认为你应该把“3”放在“2”之后,但是现在没有“2”所以你应该在哪里放“3”?
如果某个更改的上下文不存在,Git会向您寻求帮助,这有一定的意义,因为这些是您可能需要手动修复的情况。
我尝试在merge=union
.gitattributes
中为file.txt
指定skView.showsFPS = true
,但这最终导致恢复没有做任何事情。怪异。