重做一个git merge

时间:2015-05-21 11:14:00

标签: git merge repeat

我有一个远程主分支和一个本地叫做#34;功能"。我之前已经从master合并并在本地分支上进行了多次更改。虽然我还没把它推回去掌握。因此,当我尝试" git pull"时,它只会说"一切都是最新的"。 另一方面," master"中的文件以及"中的文件"是不同的,我想摆脱我们当地的几个文件,但主人没有。 我需要的是一种再次拉动主人并将每个文件标记为冲突的方法,因此我可以选择我需要的东西以及我不需要的东西。 重新调整本地更改不是一种选择,因为我会丢失我实现的所有代码。 谢谢你的帮助!

3 个答案:

答案 0 :(得分:0)

尝试git reset HEAD~1让git认为它是历史记录中的提交(如果主人的更改跨越多个重叠提交,则更改1),然后是git pull …

答案 1 :(得分:0)

您需要区分分支(masterfeaturemergepull)和remotes(需要{{1} },并与消息pull)相关。目前还不是很清楚你的情况是什么,你在哪里尝试Everything is up-to-date?什么分支?

据我了解,您有一个历史记录,其中分支pull中的所有内容已合并到分支master

如果您在检出分支feature时运行git pullfeature会尝试git来自fetch回购的新提交,然后合并他们(如果有的话)到remote。这假设feature有一个远程跟踪分支,但如果命令完全正常(没有参数),它可能有一个。

由于feature表示git pull是最新的,因此您似乎已将分支feature推送到其远程跟踪分支(到远程仓库)。你拉,它告诉你没有更多的事情发生。

另一方面,您可能意味着feature是最新的。

如果你想在本地删除我们拥有的几个文件&#34; (在master,我想),那么是什么阻止你只是删除它们? feature。在git rm <file to get ridden of>上执行此操作,您不会影响feature。按照惯例做出承诺。

如果您要放弃master中的更改,并获取主文件中的文件,则可以feature。这会将您的本地文件更新为git checkout master -- <file to get>状态,但如果不更改分支,您仍然在master。在feature上创建包含这些更新文件的新提交。

你还可以做一个互动的rebase。 feature会在git rebase中记录更改,并让您重播&#34;他们在另一个(或相同)提交之上。除此之外,feature允许您在重放阶段跳过提交,甚至编辑在重放之前提交的内容。例如,您可以在重播阶段修改提交,而不是添加不必要的文件。

最简单的是git rebase --interactive,如果只删除不必要的文件不起作用。

答案 2 :(得分:0)

谢谢大家的回答! 我最终做的是: 检查出主人 2.将每个文件夹主文件物理复制到不同的位置 3.签出功能 4.开始一个文件夹比较“超越比较”并逐个编辑每个文件有时采取功能的更改,有时是主人的。

这不是一个真正的git解决方案,需要一段时间,但它有效:)