这是我的情况。
1)我从其他人那里分配了一个项目
2)我创建了一个单独的分支并在其上编辑了一些文件
3)我从该分支创建了一个Pull Request并将其合并为我的Master。
4)现在我的主人包含了这些提交。
5)我创建了第二个分支。并编辑了一些文件。
6)然后我创建了一个关于'原始'的拉取请求。项目回购。
7)项目的所有者要求我删除我自己合并的那些提交,因为不需要该代码。
现在,问题是:我无法弄清楚如何从我的单独分支中删除提交。有人可以帮助我吗?
答案 0 :(得分:1)
最简单的方法是在origin/master
上修改新分支。
你是从这开始的。
A - B - C [master]
[origin/master]
A,B和C是现有提交。 master
是您的本地分支,origin/master
跟踪您看到上游master
分支的最后一个位置。他们都指向提交C。
将新分支合并到master
后,您就有了类似的内容。
1 - 2 - 3 [master]
/
A - B - C [origin/master]
上游保持在C,但是您的本地master
现在已经过了3次提交。您当地的master
受到当地提交的污染。
在你的第二个分支脱离了主人并且致力于它之后,你有了这个。
4 - 5- 6 [second]
/
1 - 2 - 3 [master]
/
A - B - C [origin/master]
如您所见,second
还包含1,2和3 - 您在第一个分支中的工作。要解决此问题,请将4,5和6移到origin/master
之上。
git rebase --onto origin/master master second
这表示将master
中的所有内容(包括second
移至origin/master
移至 1 - 2 - 3 [master]
/
A - B - C [origin/master]
\
4' - 5' - 6' [second]
。那是4,5和6.结果就是这样。
origin/master
注意:这假设4,5和6不依赖于1,2和3.如果它们这样做,请将所有内容保留原样并注意拉取请求中的依赖关系。
通常,在使用上游存储库时......
master
。public class Source1
{
public string Prop1 { get; set; }
public ICollection<Source2> Prop2 { get; set; }
}
public class Source2
{
public string Prop3 { get; set; }
public decimal Prop4 { get; set; }
public bool Prop5 { get; set; }
}
。这可以确保您的请求不会受到本地更改的影响,也不会受到其他请求的影响。
答案 1 :(得分:0)
在您的情况下,您可以尝试执行
git reset --hard commit_hash
其中commit_hash
是第一次提交删除之前的提交。在两次合并之前,您现在已经处于初始状态的主分支。此时,只需从第二个分支再次合并,它应该可以正常工作
另一个解决方案是尝试:
git rebase -i commit_hash
其中commit_hash
再次是第一次提交删除之前的提交。在文本编辑器中为您打开git,您需要删除要删除的两个提交的两行。保存文件,关闭编辑器,git将完成rebase操作,删除两个提交。
警告强>
这两条指令都会重写git历史记录,你需要执行强制git push
git push --force