'git pull --rebase'之后看不到远程更改

时间:2011-03-15 17:52:36

标签: git

我正在尝试'git pull --rebase',但我没有看到任何远程更改。 当我做'git status'时,我看到'你的分支在12次提交之前超过了'origin / master'。'

但我现在在'dev'分支上,而不是主人。

$ git branch
  master
* dev

我的'dev'分支应该跟踪'remotes / origin / dev'。

我想要的只是我正在开发'dev'并且我想在远程dev上进行远程更改。

但是我做了'git pull --rebase',其中一些如何将远程'master'更改为我的'dev'分支。

你能告诉我如何从我的情况中恢复过来?

  1. 删除我从远程'master'分支错误地引入的更改(在我执行'git pull --rebase'之后)

  2. 将远程'dev'分支上的更改拉入我的'dev'分支。

  3. 谢谢。

2 个答案:

答案 0 :(得分:3)

听起来好像您的开发分支最初基于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

然后,为了修复你的分支,我会:

  1. 确保您使用dev
  2. git checkout dev分支上
  3. 确保git status干净
  4. 创建一个分支以保存您的位置(为了安全起见):git branch dev-wrongly-rebased
  5. 在重新定位到git reflog
  6. 之前,使用origin/master查找提交
  7. dev重置为该点git reset --hard COMMIT-BEFORE-BAD-REBASE
  8. 最后,做git rebase origin/dev
  9. 我最喜欢的时候,首先要分两个步骤,例如:

    git fetch origin
    git rebase origin/dev
    

    ...因为我认为这比git pull --rebase更不容易出错。我希望这有一些用处。

答案 1 :(得分:0)

您可以使用

在正确的远程分支上移动提交
git rebase --preserve-merges --onto origin/dev start end

用于将start和end指定的一系列提交移动到dev。

然后,正确设置跟踪。如果需要,可以编辑.git / config文件,并比较一次为每个分支设置的跟踪方式,并确保一致的行为。

从现在开始,您将获得一个新的远程分支

git checkout -t origin/branch_name

或者,如果您要将新分支推送到远程

git push -u origin branch_name

这些将根据您的需要设置跟踪。

希望这有帮助。