2012-09-14 52 views
1

我最近才开始使用git,并且对它感到非常满意,这绝对是一个很棒的工具。为什么git合并,当我做拉?

但是今天我已经把它置于一个非常奇怪的状态,但我似乎无法摆脱。

我有两个远程分支,master和pqueues。我希望能够将这些分支拉入同名的当地分支,但是当我做git pull时,它会将主分支拉入合并到我检出的任何分支中。如果我在地方上做了git pull,那么它会自己和主人合并。我真的不明白为什么。

另外如果我做git push origin pqueues pqueues它说Updates were rejected because the tip of your current branch is behind当我知道我是唯一的人提交到该远程分支,我的本地分支是提前远程的一些提交。

我怎样才能找出实际发生的事情并让它恢复到正常工作状态?

+5

Git pull是“git fetch”后跟“git merge”http://stackoverflow.com/questions/292357/whats-the-difference-between-git-pull-and-git-fetch?rq=1也许你想要git获取? – Thilo

+1

你也可以添加一个完整的git pull命令,比如'git pull master origin/master'或'git pull pueues origin/pqueues'或者简单地'git pull ' –

回答

1

有两种情况会导致合并。 1.您在本地分支机构进行了提交,例如'master'和其他人将commit提交到'origin/master',因为当你的本地'master'最后与'origin/master'同步时 2.你没有提交'master'的提交,但其他人有'重写历史'通过将'origin/master'倒回到先前的提交,然后向其添加提交。

对于情况(1)如果你可以执行“混帐拉--rebase”,这将重播原产/硕士

案例的新负责人的变更(2)可以永远改写历史可避免:如果一个提交必须被撤销,使用git revert将会添加一个新的提交,这个提交可以撤消前一个提交,并且可以在git中恢复所有的显示,并且可以通过所有下游回放快速转发。

+0

这样做很有意义,我想我在情况1.但是当我做'git拉--rebase'它做了新的分支? '* [新分支] pqueues - > pqueues/pireues * [新分支] master - > pqueues/master' – GP89

+0

分支'pqueues'是追踪远程'pqueues/pqueues'的本地分支。在使用单个遥控器时,约定称为“原点”。在某些情况下(例如,git checkout'branch-name'),将创建一个与远程原始/分支名称匹配的本地分支。 – karmakaze

0

注意:无论您使用的是git pull(并且git pull --rebase是更新当前分支的最好方法),git pull将首先执行git fetch

(请参阅“git fetch/git pull from Git Reference)”

而且git fetch将获取远程分支:如果在你的本地回购它们不存在,将创建它们。
这就是为什么你在看你的第一git pull

* [new branch] pqueues -> pqueues/pqueues 
* [new branch] master -> pqueues/master 

但你会认为只有第一个git pull。所有其他人将获取并更新现有的远程跟踪。
请参阅“Git: What is a tracking branch?”和“What is the difference between a remote tracking branch, and a branch on a remote?”,以便更好地了解git fetch更新的内容。

+0

但是我已经有一个本地的pqueues和主人?我创建了repo和远程分支pqueue,并且如果我现在拖动,它会创建2个新分支pqueue /队列和pqueue/master。它并不习惯这样做,它曾经为我的本地比赛做出了贡献,并且向我的当地主人(我认为这是我想要的)掌握了主人。现在我在我的本地树中复制了相同的提交,以支持pqueue和pqueue/pqueue。我想我肯定已经破坏了一些东西 – GP89

+0

@ GP89,最好再将你的远程回购克隆到新的本地回购中,然后从那里开始。 – VonC

+0

我想,但我想先推动我的本地变化,但它目前不会让我推我的本地pqueues(因为它的技巧后面..虽然没有人承诺它,但我 - 所以我不知道它)我似乎无法拉扯,因为所有这些都是把主人合并到我的本地比赛中。我是否应该将所有文件转储到新克隆上并提交该文件,或者是否有其他选项? – GP89

相关问题