我做了拉取请求,但之后我在本地做了一些提交,结束了污染我的拉取请求,我试图删除它但没有任何运气。
我在StackOverflow上发现了一些类似的问题,但我无法应用其中的内容。 这是我在GitHub上的第一个请求,所以对我来说这一切都很有用。
突出显示的提交是我需要保留并删除所有其他内容的提交。 它成为历史上的第四次提交,因为我做了一些合并。
有人可以解释一下发生了什么以及如何解决这个问题?
答案 0 :(得分:67)
你有几种技巧可以做到。
This post - read the part about the revert将详细解释我们想要做什么以及如何做。
以下是解决您问题的最简单方法:
# Checkout the desired branch
git checkout <branch>
# Undo the desired commit
git revert <commit>
# Update the remote with the undo of the code
git push origin <branch>
revert命令将使用原始提交的撤消创建新提交。
答案 1 :(得分:42)
人们不希望看到错误的提交和还原提交以撤消对错误提交所做的更改。这会污染提交历史。
这是删除错误提交而不是通过还原提交撤消更改的简单方法。
n
pick
//其中drop
是要包含在交互中的最后提交的数量
重新设定。
git push --force
替换为Async Sub GetDuration(folder As String)
Dim ffP As New FFProbe
Dim vInfo As MediaInfo
Dim totalSecs As Double = Await Task.Run(Function()
vInfo = ffP.GetMediaInfo(filep)
If vInfo.Duration.TotalSeconds < 10
Thread.Sleep(20000)
End If
Return vInfo.Duration.TotalSeconds
End Function)
以表示您要放弃的提交。from multiprocessing import *
from timeit import repeat, timeit
def job(n=1):
for _ in range(n):
res = 0
for i in range(1000000):
res += i + i**2 + i**3
def multi_core():
for i in huge_work:
i.start()
i.join()
def normal():
job(times)
if __name__ == '__main__':
times = 15
huge_work = [Process(target=job,) for _ in range(times)]
print("multiprocessing used", timeit(stmt=multi_core, number=1, globals=globals()))
print("normal used", timeit(stmt=normal, number=1, globals=globals()))
答案 2 :(得分:1)
请执行以下操作,
让我们说你的分支名称是my_branch,这有额外的提交。
git checkout -b my_branch_with_extra_commits
(保持此分支以不同的名称保存)gitk
(打开git控制台)git checkout my_branch
gitk
(这将打开git控制台)reset branch to here
”git pull --rebase origin branch_name_to _merge_to
git cherry-pick <SHA you copied in step 3. >
现在查看本地分支提交历史记录,确保一切看起来都很好。
答案 3 :(得分:0)
如果您要删除一个提交但又不想保留其更改,@ferit有一个很好的解决方案。
如果您想将该提交添加到当前分支中,但是没有必要成为当前PR的一部分,则可以执行以下操作:
git rebase -i HEAD~n
git reset HEAD^ --soft
取消提交更改并使它们恢复到已分阶段的状态。git push --force
更新远程分支,而无需删除提交。现在,您将从远程删除了提交,但是本地仍将进行更改。
答案 4 :(得分:0)
这对我有帮助:
使用现有分支创建一个新分支。让我们将现有的branch_old
命名为新的branch_new
。
在根本没有任何问题的情况下,将branch_new
重置为稳定状态。
例如,要将其置于您的本地管理员级别,请执行以下操作:
git reset —精通大师 git push —强制起源
cherry-pick
从branch_old
到branch_new
git push