Shi*_*bin 6 svn git version-control merge
我遇到了一个疯狂的问题.我把我的整个项目放在主分支中.早些时候,一个人正在研究这个项目,但它是在SVN.他做了一些改变,我需要将这些改变与我的整合.两个项目都具有相同的文件夹结构,唯一的区别是使用的VCS类型.我做了以下
在这个阶段,如果我运行git status命令,我可以看到更改(文件被标记为已修改)我需要与我的主分支集成.然后,
结果是我的代码在master分支中被"code_to_integrate"分支中的代码覆盖.我失去了我的全部修改.HEAD在c2,我也可以看到c1.如果我使用
git reset --hard c1,
我会收回我的更改.现在,它就像使用命令一样
git合并 - 他们的
我从合并分支(code_to_integrate)获得了整个更改,并且在合并分支(master)中丢失了更改.发生了什么?.这应该是直截了当的吗?任何帮助将不胜感激.提前致谢
问题是您在分支code_to_integrate之上创建了分支master。所以事情看起来像这样:
... -> oldercommit -> oldcommit -> c1 (master, code_to_integrate)
Run Code Online (Sandbox Code Playgroud)
然后,当您将其他人的代码提交到该分支时,您会得到线性历史记录:
... -> oldercommit -> oldcommit -> c1 (master) -> c2 (code_to_integrate)
Run Code Online (Sandbox Code Playgroud)
当您现在合并code_to_integrate到 master git 时,检测到它c2比 c1 新,并进行了所谓的快进合并,这基本上意味着仅更改commit指向master的c2。想象一下,code_to_integrate这只是您自己创建的一个快速分支,用于执行一些工作,例如修复错误。完成后,您将拥有完全相同的历史记录,并且快进合并正是您想要的。
为了解决你的问题,你需要告诉 git 你们中的哪个旧提交是你和另一个人的工作的最新共同祖先。基本上你需要告诉 git 另一个人在哪个时间点分支了你的master. 您可以通过检查您和其他人在您的历史记录中拥有的最新提交,然后code_to_integrate在那里启动分支。假设另一个人在 处分支oldercommit,你会先执行 a,git checkout oldercommit然后执行 a git checkout -b code_to_integrate,并且应该得到类似这样的结果。
... -> oldercommit (code_to_integrate) -> oldcommit -> c1 (master)
Run Code Online (Sandbox Code Playgroud)
一旦你提交了其他人的版本,你就会得到:
-> c2 (code_to_integrate)
/
... -> oldercommit -> oldcommit -> c1 (master)
Run Code Online (Sandbox Code Playgroud)
当你现在合并code_to_integrate到 时master,git 会看到存在发散的历史记录并进行三向合并(oldercommitmergebase 在哪里),提示你解决可能出现的任何冲突等。这就是你想要的!
所以总而言之,您只是code_to_integrate从错误的提交开始了您的分支。如果不知道合并库是什么,git 或任何其他版本控制系统就无法进行合并。
编辑:如果自从您将代码放入 git 以来您没有与其他人共享任何更改,那么您的合并库就是您历史上最旧的提交。以下应该做你想做的事:
git checkout $(git rev-list --all | tail -n 1)
git checkout -b code_to_integrate
[ ... put the other guys code into your working directory and commit it ... ]
git checkout master
git merge code_to_integrate
Run Code Online (Sandbox Code Playgroud)
第一个命令检查历史记录中最旧的提交,这是您和 SVN 人员的最后一个共同点。第二条命令code_to_integrate在最旧的提交处创建分支并切换到它。然后你将其他人的代码放入你的工作目录并将其提交到分支code_to_integrate。最后你切换回你的master分支并合并另一个分支。
| 归档时间: |
|
| 查看次数: |
236 次 |
| 最近记录: |