Git - 保留特定作者提交的代码

3

我有一个分支正在进行开发。

我的同事不小心把他们的分支合并到了我的分支上,现在所有的提交都乱了。

由于有数百个提交,我不能使用cherry pick。

我该如何只保留我的更改在分支中?

基本上,我正在寻找一种方法,只保留我的提交,丢弃其他用户所做的任何提交。


3
您可以从最后一次提交创建一个新的分支。这个新分支只包含您的代码。但是您需要从最后一次提交创建一个分支。 - Nivrutti Pawar
是的,没错。然而,我正在寻找一种基于用户名的方法来保留我的分支上的提交记录。很遗憾,git没有这个功能。 - waqasgard
Yaa git 没有这个功能。 - Nivrutti Pawar
2个回答

3
除了Nivrutti PawarShakil所暗示的新分支解决方案之外,我建议您还可以将分支恢复到合并前的状态。下面是具体步骤。

阶段1:定位合并提交(如果您在错误合并之后没有进行任何操作,请直接进入第2阶段,并将HEAD^用于<bad-commit>

# in case you're not presently on your branch
git checkout your-branch

# now we need to spot the merge commit where things went awry,
# it's probably not too far in your history, so spot its commit hash in the log
git log --oneline

在输出列表中,您应该能够确定错误合并的提交哈希值,我将仅在示例中使用<bad-commit>
第二阶段:回到历史记录。
# Rewind history to the point just BEFORE the bad merge, so mind the caret
git reset --hard <bad-commit>^

此时,您的分支处于合并之前的状态,但是您需要强制推送它到远程仓库以反映这个新历史记录,因此请确保事先通知同事,然后执行操作。

git push --force origin HEAD

(由于您不是该项目上的唯一参与者,也许可以看看--force-with-lease


我也做了同样的事情。我在想是否有什么东西可以根据用户名自动保留提交记录。不过,这解决了我的问题。因此,+1。 - waqasgard

1

我希望在这种情况下添加一个Nivrutti pawar,我们可以使用git-refloglink来检查个人本地机器上所有的操作,然后能够回到混乱动作之前并开始一个新分支。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接