将旧的 git 提交合并到当前分支的顶部
Merge an old git commit to the top of the current branch
我在我的项目中做了很少的 git 次提交(提交 1、提交 2...提交 5)。我必须修复一个错误,所以我使用以下命令恢复为提交 2 -
git checkout <commit_id> .
我更改了一些代码并提交了更改。现在,我想合并这些更改并返回到最新版本的代码(在提交 5 中)。我应该怎么办?
提前致谢!
你在一个独立的分支上。执行 git 日志以获取您当前的提交 ID,返回到您的工作分支(git 签出您的分支名称),然后 git 合并 YourCommitId,这会将这些更改合并到您的顶部分支(或者你可以尝试 rebase 然后到你当前的分支)。
如果您已经推送,那么只需在顶部提交您的修复(即在提交 5 之后)。
如果你没有,并且你想修复提交 2,你可以:
- 提交您的修复,运行:
rebase -i HEAD~5
然后将您的最新提交交换到 commit2 之后,并将其标记为 "fixup"。
或:
- 运行:
rebase -i HEAD~4
,然后标记 commit2 进行编辑,提交修复,提交,然后 rebase --continue
如果您在本地存储库中完成所有操作,则 git checkout <commit_id>
您必须处于分离状态。如果你 运行 git branch
它应该显示你在 (HEAD detached at <commit_id>)
.
为了安全起见,请先检查您在新分支上的提交:
git checkout -b <bug_fix>
然后继续你有 5 次提交的分支(假设是 master)并重新设置修复基线:
git checkout master
git rebase <bug_fix>
编辑: 如果您在通过签出到另一个分支提交修复后离开了分离状态,您必须找到您的 commit_id 和 git reflog
,然后将它们变基到所需的分支:git rebase <commit_id>
。您也可以合并,但这会在 commit5 之上添加 fix_commit。 Rebase 将生成更好的历史记录...,commit2,fix_commit,commit3, ...,commit5.
我在我的项目中做了很少的 git 次提交(提交 1、提交 2...提交 5)。我必须修复一个错误,所以我使用以下命令恢复为提交 2 -
git checkout <commit_id> .
我更改了一些代码并提交了更改。现在,我想合并这些更改并返回到最新版本的代码(在提交 5 中)。我应该怎么办?
提前致谢!
你在一个独立的分支上。执行 git 日志以获取您当前的提交 ID,返回到您的工作分支(git 签出您的分支名称),然后 git 合并 YourCommitId,这会将这些更改合并到您的顶部分支(或者你可以尝试 rebase 然后到你当前的分支)。
如果您已经推送,那么只需在顶部提交您的修复(即在提交 5 之后)。
如果你没有,并且你想修复提交 2,你可以:
- 提交您的修复,运行:
rebase -i HEAD~5
然后将您的最新提交交换到 commit2 之后,并将其标记为 "fixup"。
或:
- 运行:
rebase -i HEAD~4
,然后标记 commit2 进行编辑,提交修复,提交,然后rebase --continue
如果您在本地存储库中完成所有操作,则 git checkout <commit_id>
您必须处于分离状态。如果你 运行 git branch
它应该显示你在 (HEAD detached at <commit_id>)
.
为了安全起见,请先检查您在新分支上的提交:
git checkout -b <bug_fix>
然后继续你有 5 次提交的分支(假设是 master)并重新设置修复基线:
git checkout master
git rebase <bug_fix>
编辑: 如果您在通过签出到另一个分支提交修复后离开了分离状态,您必须找到您的 commit_id 和 git reflog
,然后将它们变基到所需的分支:git rebase <commit_id>
。您也可以合并,但这会在 commit5 之上添加 fix_commit。 Rebase 将生成更好的历史记录...,commit2,fix_commit,commit3, ...,commit5.