好吧,所以我们错误地将'Y'合并为'X'并推了推。由于这是一个错误,我们还原了那个提交。好的
现在我想将最新的更改从'X'合并到'Y',但是git显示了一堆文件被删除了不应该。它们在还原提交中从分支“X”中删除,但仍应存在于“Y”
中答案 0 :(得分:3)
恢复合并的结果几乎总是无意的:git有效地将其解释为意味着分支更改将永远不需要。问题是git看到了
O --- x --- x --- M --- W --- x --- x <--(master)
\ /
A ---- B ---- C --- D --- E <--(branch)
其中W
“撤消”由master
引入M
的更改。如果您现在将branch
合并到master
,则合并基础为C
;也就是说,git认为A
至C
master
已经在M
O
中进行了说明,因此它认为不需要返回revert
合并基地。
因此,尽管W
可能是最佳解决方案的原因有很多,但它可能需要一些额外的工作。
最简单的方法是在master
上恢复branch
,然后合并O --- x --- x --- M - W - x - x - M' - M2 <--(master)
\ / /
A ---- B ---- C ------- D -------- E <--(branch)
。
M'
我不喜欢的是,bisect
处于破碎状态的可能性非常大,这可能会影响未来的漏洞(例如,如果您使用M'
)。有些人也认为它看起来“丑陋”,尽管我个人并没有过多关注这个问题。
看起来你似乎只想“挤压”M2
和A
在一起,重现你认为你会得到的合并。这可能会在美学上令人愉悦,但它会产生一种“邪恶的合并” - 一种合并,其相对于其父母的补丁不是假定的。此外,它并不容易(尽管绝不是不可能)。
另一个实用的选择是创建一个或多个新提交,重新引入E
通过git rebase -f O branch
最初引入的更改,基本上让git“忘记”更改被“占用”。
master
(请注意,您不能在此处使用O
作为上游;您必须指定上游是提交 A' --- B' --- C' --- D' --- E' <--(branch)
/
O --- x --- x --- M --- W --- x --- x <--(master)
\ /
A ---- B ---- C
,可能是通过提供它的SHA ID。)
branch
从这里开始,master
到<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>ISSUE</title>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css">
<link rel="stylesheet" href="http://cdn.datatables.net/1.10.1/css/jquery.dataTables.css">
<link rel="stylesheet" href="http://cdn.datatables.net/responsive/1.0.0/css/dataTables.responsive.css">
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<script src="http://cdn.datatables.net/1.10.1/js/jquery.dataTables.min.js"></script>
<script src="http://cdn.datatables.net/responsive/1.0.0/js/dataTables.responsive.js"></script>
<!-- Latest compiled and minified CSS -->
</head>
<body>
<table id="example" class="display" cellspacing="0" width="100%">
<thead>
<tr>
<th>Name</th>
<th>Position</th>
<th>Office</th>
<th>Age</th>
<th>Start date</th>
<th>Salary</th>
</tr>
</thead>
<tbody>
<tr>
<td>Tiger Nixon</td>
<td>System Architect</td>
<td>Edinburgh</td>
<td>61</td>
<td>2011/04/25</td>
<td>$320,800</td>
</tr>
<tr>
<td>Garrett Winters</td>
<td>Accountant</td>
<td>Tokyo</td>
<td>63</td>
<td>2011/07/25</td>
<td>$170,750</td>
</tr>
</tbody>
</table>table>
</body>
</html>
<script>
$(document).ready(function(){
$('#example').DataTable();
});
</script>
的简单合并将按预期工作。
答案 1 :(得分:2)
你应该恢复还原并将X合并到Y.现在如果你不想在X中恢复它可能是一个问题。在这种情况下,从X创建一个新的分支(比如Z),在Z上执行恢复并将Z合并为Y.