我知道它是如何git rebase工作的,我已经在生产中使用了一段时间.它将分支的所有提交重放到另一个分支上.它会重写您当前分支的历史记录.
我最近开始玩git rebase --skip,虽然我最初害怕它.我意识到它只是跳过那个承诺就好像从未发生过一样.
在我看来,在这两种情况下生成的工作目录是相同的:
1)除最近的提交外,所有提交都被跳过
2)重放所有提交,以便解决提交以支持their分支.
提醒: their是您在重新绑定时当前所在的分支.
其他提醒:我对工作目录特别感兴趣.这是一样的吗?
工作目录是否是相同的结果?
我正在开发一个开发分支和两个不同的(本地)功能分支.
a -- b -- e <-- develop
\ \
\ f -- g <-- feature-branch-1
\
c -- d <-- feature-branch-2
Run Code Online (Sandbox Code Playgroud)
我通过运行将来自feature-branch-1的更改合并到feature-branch-2中
git checkout feature-branch-2
git rebase feature-branch-1
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,它现在看起来像这样:
a -- b -- e <-- develop
|\
| f -- g <-- feature-branch-1
\
f -- g -- c -- d <-- feature-branch-2
Run Code Online (Sandbox Code Playgroud)
然而,我意识到我在分支1中引入了一个我不知道如何修复的错误.所以这个错误现在也在分支2中,并阻止我将feature-branch-2合并到develop中.我想回到原来的状态
a -- b -- e <-- develop
\ \
\ f -- g <-- feature-branch-1
\
c -- d <-- feature-branch-2
Run Code Online (Sandbox Code Playgroud)
这样我就可以安全地将feature-branch-2合并到develop中.我怎样才能做到这一点?
在执行两个 Git 命令撤消 rebase 后,我遇到了一些错误。
git checkout topic
git reset --hard origin/topic
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下这是什么以及如何解决吗?我不想再次丢失我的代码。
git status 给我看这个
Last command done (1 command done):
pick c326b089c8 Revert "Conflicts removed from master, OffscreenCanvas changes ready for merge" Will rebase branch and resolve conflicts. This reverts commit 7357f2e5444bed9e93e1380331464a5332319d09.
Next command to do (1 remaining command):
pick 90bec670b4 Changes reverted in conflicting files. OffscreenCanvas API ready to be merged.
(use "git rebase --edit-todo" to view and edit)
You are currently editing a commit while rebasing …Run Code Online (Sandbox Code Playgroud) 所以我遇到了这种奇怪的情况。
我正在对 4 次提交进行交互式变基。我尝试挤压,但我做错了,出现以下错误:
error: cannot 'squash' without a previous commit You can fix this with
'git rebase --edit-todo' and then run 'git rebase --continue'. Or you
can abort the rebase with 'git rebase --abort'.
Run Code Online (Sandbox Code Playgroud)
我决定运行git rebase --edit-todo,当我这样做时,只出现了最后一次提交。我将其从 更改为squash,pick然后运行git rebase --continue,但现在看来我试图压缩的其他 3 个提交已经不存在了。
所以我早上的工作似乎失败了。
一定有办法恢复这些,对吗?
我该怎么做?
我不想要这个部分Rebasing feature/thread-temp onto 02fc3a4771e03d0ba98b9e52305117b4cfa05fce
我尝试git reset --soft HEAD~1并重新承诺,但这并不能拯救我..
我不知道我是怎么到这里的,因为我隐约知道 rebase 是什么,并且无意在这里使用它。
我怎样才能回到正常状态?
它与其他问题的不同之处在于我可以使用特定于 Magit 的方法。
今天打算用shell上传本地项目文件到Github,可惜在调用“git rebase”命令后删除了本地文件。我怎样才能找回被删除的文件?