变基以集成更改(不是在拉取请求的上下文中)?
Rebasing in order to integrate changes (not in the context of pull requests)?
我只能在拉取请求的上下文中找到有关变基的信息,但我想做的与拉取请求无关。我的情况如下:
我对公司软件的分支进行了一些更改,我们称此为提交 x。在这次提交之后,我向我同事的 fork 发送了一个 PR。
然后我做了更多的改变。我还没有承诺那些;他们现在在我的工作树中。
原来我在提交 x 中犯了一些错误,我的同事修复了这些错误并将更改提交到他的 fork,让我们称他的提交为提交 y。所以他最近的提交是 y.
有没有办法将我的 fork 变基(或其他一些操作,如果这不是 rebase 的正确用法),这样我最近的提交是 y(那么 x 将是第二个最近的提交) ,同时还保留我的工作树更改?
简短回答是的,有几种方法可以处理这个问题。这是我觉得最简单的:
- 从你的分支开始,
git checkout -b [copy-of-working-branch-with-commit-x-and-commit-y]
复制你的分支as-is
git checkout [original-working-branch-with-commit-x-and-commit-y]
和
git reset --hard [remote-branch]
使用您 co-worker 推送的更改(提醒:这将覆盖 commit-y!)
- 终于可以了
git cherry-pick [sha for most recent commit-y-from-copy-branch]
应该就可以了!
存储您的更改
git stash
拉动您的同事进行更改
git pull
re-apply 您隐藏的零钱
git stash pop
如果有冲突,不会自动删除存储。解决冲突后,使用
git stash drop
有关存储的更多信息,请参阅 man git-stash and Stashing and Cleaning。
我只能在拉取请求的上下文中找到有关变基的信息,但我想做的与拉取请求无关。我的情况如下:
我对公司软件的分支进行了一些更改,我们称此为提交 x。在这次提交之后,我向我同事的 fork 发送了一个 PR。
然后我做了更多的改变。我还没有承诺那些;他们现在在我的工作树中。
原来我在提交 x 中犯了一些错误,我的同事修复了这些错误并将更改提交到他的 fork,让我们称他的提交为提交 y。所以他最近的提交是 y.
有没有办法将我的 fork 变基(或其他一些操作,如果这不是 rebase 的正确用法),这样我最近的提交是 y(那么 x 将是第二个最近的提交) ,同时还保留我的工作树更改?
简短回答是的,有几种方法可以处理这个问题。这是我觉得最简单的:
- 从你的分支开始,
git checkout -b [copy-of-working-branch-with-commit-x-and-commit-y]
复制你的分支as-is
git checkout [original-working-branch-with-commit-x-and-commit-y]
和
git reset --hard [remote-branch]
使用您 co-worker 推送的更改(提醒:这将覆盖 commit-y!)
- 终于可以了
git cherry-pick [sha for most recent commit-y-from-copy-branch]
应该就可以了!
存储您的更改
git stash
拉动您的同事进行更改
git pull
re-apply 您隐藏的零钱
git stash pop
如果有冲突,不会自动删除存储。解决冲突后,使用
git stash drop
有关存储的更多信息,请参阅 man git-stash and Stashing and Cleaning。