我正在尝试执行“git pull --rebase”,但我没有看到任何远程更改。 当我执行“git status”时,我看到“您的分支领先于‘origin/master’ 12 个提交。”
但我目前在我的“开发”分支上,而不是主分支。
$ git branch
master
* dev
我的“dev”分支应该跟踪“remotes/origin/dev”。
我只想在“开发”上工作,我想在远程开发上进行远程更改。
但我执行了“git pull --rebase”,其中一些如何将远程“master”更改 pull 到我的“dev”分支。
你能告诉我怎样才能从我的情况中恢复过来吗?
删除我错误地从远程“master”分支中 pull 的更改(在我执行“git pull --rebase”之后)
将远程“dev”分支上的更改 pull 入我的“dev”分支。
谢谢。
最佳答案
听起来好像你的开发分支最初是基于origin/master
而不是origin/dev
,或者不知何故dev
被改变了无论如何都要跟踪 origin/master
。您可以通过以下方式检查:
git config branch.dev.merge
如果上面写的是 refs/heads/master
而不是 refs/heads/dev
你可以改变你的 dev
分支的上游分支:
git checkout dev
git branch --set-upstream dev origin/dev
然后,为了修复你的分支,我会:
- 使用
git checkout dev
确保你在dev
分支上 - 确保
git status
是干净的 - 创建一个分支来保存你所在的位置(为了安全):
git branch dev-wrongly-rebased
- 在重新定位到
origin/master
之前使用git reflog
查找提交 - 重置
dev
到那个点git reset --hard COMMIT-BEFORE-BAD-REBASE
- 最后,执行
git rebase origin/dev
当 rebase 时,我的偏好总是分两步进行,例如:
git fetch origin
git rebase origin/dev
... 因为我认为这比 git pull --rebase
更不容易出错。希望对您有所帮助。
关于git - 在 'git pull --rebase' 之后看不到远程更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5315869/