在';git pull——重新基址';
我正在尝试做一个“git拉动——再基础”,但我没有看到任何远程更改。 当我执行“git status”时,我看到“您的分支比“origin/master”早12次提交” 但我现在在我的“开发”分支,而不是大师在';git pull——重新基址';,git,Git,我正在尝试做一个“git拉动——再基础”,但我没有看到任何远程更改。 当我执行“git status”时,我看到“您的分支比“origin/master”早12次提交” 但我现在在我的“开发”分支,而不是大师 $ git branch master * dev 我的“dev”分支应该跟踪“remotes/origin/dev” 我想要的是我正在“开发”上工作,我想在远程开发上获得远程更改 但我做了“git pull--rebase”,这是如何将远程“master”更改拉到我的“dev”分支
$ git branch
master
* dev
我的“dev”分支应该跟踪“remotes/origin/dev”
我想要的是我正在“开发”上工作,我想在远程开发上获得远程更改
但我做了“git pull--rebase”,这是如何将远程“master”更改拉到我的“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
git状态
是干净的git branch dev错误地重新设置了基址
git reflog
在重新基于origin/master
dev
重置到该点git Reset--hard COMMIT-BEFORE-BAD-REBASE
git fetch origin
git rebase origin/dev
。。。因为我认为这比git-pull-rebase更不容易出错。我希望这会有一些用处。您可以使用
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
这些将设置你想要的跟踪
希望这有帮助。好的。我尝试过“git branch——设置上游源代码/dev”,但它说的是错误:未知选项“设置上游”。我使用的是Git1.6.3.3Ah,好的。它值得升级,因为1.6.3是从2009年6月开始的,现在git中有很多不错的新特性。但是,您应该能够使用
git config branch.dev.merge refs/heads/dev
获得相同的效果(我假设branch.dev.merge
之前的值与我猜的一样?)谢谢。在'git config branch.dev.merge refs/heads/dev'中,我应该使用'refs/heads/dev'?不是“refs/origin/dev”?就像你在'git branch--set upstream'命令中输入的一样?当我做'git branch-r'时,我看到的是origin/dev,而不是heads/dev。@michael:是的,我担心这会让人困惑,但是refs/heads/dev
是正确的。从远程存储库的角度来看,它是ref的名称,而不是本地存储库。