我是Git版本控制工具的新手。以前我在使用SVN。
如果我们有一个文件a.php,它对第50行号有一些修改,并且在另一个分支中对于已提交的同一文件的第500行号有变化。我们如何在不隐藏更改或使用git checkout --patch的情况下合并两个分支?
在SVN中,我们只是执行一个命令&s; svn update a.php'。而在这里,我们将不得不执行三个命令。 git stash,git merge branchname,git stash apply。
提前致谢。
答案 0 :(得分:1)
如果您当前在一个分支上进行了对第50行进行更改的提交,并且您有一个并行分支,其中包含对第500行进行更改的提交,并且您希望合并这两个分支,则运行{{1 }}。这有效地将并行分支合并到当前分支中。
由于2次提交中的更改位于文件的单独行中,因此合并将由Git自动完成,没有任何冲突。
答案 1 :(得分:1)
在Git中,您总是在合并之前提交。我们的想法是在合并时永远不会在工作区中有任何修改过的文件。这是SVN的主要功能之一:在Subversion中,您未提交的更改将与其他人合并。结果有时是不可预测的。最可预测的事情是,解决svn update
留下的混乱总是需要做很多工作。
在Git中,分支非常非常便宜。它实际上很便宜,你在创建它时几乎没有注意到。
所以你总是承诺一切。然后你说"我想在那里合并那个提交" (通常通过向Git提供包含提交的分支的名称)。
出了什么问题?没问题,Git可以毫无疑问地恢复以前的状态(与Subversion不同),因为之前的状态已经提交到存储库。
现在有些人认为线性历史非常有价值,以至于他们觉得必须牺牲这个特征。这通常不是真的或导致它解决的更多问题。当你从Git开始时,这样做特别危险。 rebase
是一项复杂且有时很危险的操作,不适合初学者。
这就是我建议从一个简单的工作流程开始的原因:
相关: