我在一个分支v上,然后我切换到master分支,然后又切换回分支v。再次编译时,编译失败,因为我的代码中出现了一个奇怪的符号:
我正在使用 OS X Lion 和最新版本的 textWrangler,我很确定我不是偶然添加的。这是 Git 或 textWrangler 的错吗?
更新
合并后 git 添加了一些东西:
我在一个分支v上,然后我切换到master分支,然后又切换回分支v。再次编译时,编译失败,因为我的代码中出现了一个奇怪的符号:
我正在使用 OS X Lion 和最新版本的 textWrangler,我很确定我不是偶然添加的。这是 Git 或 textWrangler 的错吗?
更新
合并后 git 添加了一些东西:
我不认为这是 Git 的错。你可以通过点击option
和一个字母来获得这样的字符:
option+s = ß
option+b = ∫
option+c = ç
option+z = Ω
option+d = ∂
option+q = œ
等等。这可能只是一个意外(我每周都会击中其中一个组合)。
更新:
您在第二个示例中看到的是一个冲突标记,Git 绝对把它放在那里。这意味着,当您将一个分支合并到您当前的分支中时(可能是从 github 拉取的),Git 无法弄清楚该去哪里。因此,与其尝试猜测哪个分支具有正确的版本,不如让该部分处于冲突状态,指示您的本地更改以及从合并中引入的更改。当两个人在两个不同的分支上修改相同的内容时,通常会发生这种情况。
借用这个 SO answer,假设您有file.txt
,并且在合并后您有一个部分,例如:
<<<<<<< HEAD:file.txt
Hello world
=======
Goodbye
>>>>>>> 77976da35a11db4580b80ae27e8d65caf5208086:file.txt
<<<<<<< HEAD
和之间包含的所有内容=======
都是您输入的内容(此部分通常标记为local
)
=======
和之间的所有>>>>>>> 77976da35a11db4580b80ae27e8d65caf5208086:file.txt
内容都是传入提交中相同位置的内容(通常标记为remote
)。
当您在合并后看到此内容时,您必须通过删除标记( 和 )手动修复文件<<<<<<< HEAD:file.txt
并=======
决定>>>>>>> 77976da
要保留哪个版本;在这种情况下Hello World
, GoodBye
,或者您可能想同时保留两者。关键是,在两个不同的分支中编辑了相同的内容,Git 无法弄清楚如何处理这些行。
Git 是一个了不起的版本控制系统,但与所有工具一样,它所能完成的工作也有其局限性。
关于一些奇怪的小事的快速说明;当我在 Xcode 中工作时,我可以去终端,运行所有我想要的 git 命令,然后马上回到 XCode 中工作。使用Sublime Text 2,我已经退出 Sublime Text,运行 git 命令,然后重新打开 Sublime Text,否则更改不会像我预期的那样持续存在。我不确定Text Wrangler,你会弄清楚那部分(或者也许有人可以发表评论)。
一些关于 Git 的链接: