鉴于我有 3 个提交
c1
+ print("A")
c2
+ print("B")
c3
+ print("C")
Run Code Online (Sandbox Code Playgroud)
然后我在 c1 结帐了一个新分支。
git checkout -b br c1
Run Code Online (Sandbox Code Playgroud)
然后我挑选c3。
git cherry-pick c3.
Run Code Online (Sandbox Code Playgroud)
我想要的是文件有
print("A")
print("C")
Run Code Online (Sandbox Code Playgroud)
-- 我只选择 c3,c3 只需添加一行 print("C")
但事实是我遇到了冲突,结果是
print("A")
++<<<<<<< HEAD
++=======
+ print("B")
+ print("C")
++>>>>>>> f1383aa... C
Run Code Online (Sandbox Code Playgroud)
我的问题是: 1.为什么会发生冲突?2.如果我想要print("A")和print("C")怎么办?
我也尝试过即使我
git diff C^1 .. C > 1.patch
git apply 1.patch
Run Code Online (Sandbox Code Playgroud)
我有
zhifan@zhifandeMacBook-Pro ~/g/demo> git apply 1.patch
error: patch failed: 1.py:1
error: 1.py: patch does not apply
Run Code Online (Sandbox Code Playgroud) $ vim patch
Index: toPatch
===================================================================
--- toPatch
+++ toPatch
@@ -2,4 +2,4 @@
*/
-final public class XMLWriter {
+public class XMLWriter {
$ vim toPatch
*/
final public class XMLWriter {
public static float CURRENT_VERSION=2.2f;
$ patch -p0 -ui patch
patching file toPatch
Hunk #1 succeeded at 1 with fuzz 2 (offset -1 lines).
Run Code Online (Sandbox Code Playgroud)
为什么模糊和线偏移?这是一个尝试理解差异和补丁的演示案例,因为工具有时/通常看起来不像预期的那样工作.