我最近才开始使用git并且非常满意它,它绝对是一个很棒的工具。
但是今天我已经处于一个非常奇怪的状态,但我似乎无法摆脱它。
我有两个远程分支,master和pqueues。我希望能够将这些分支拉到同名的locals分支中,但是当我执行git pull
时,它会将master拉入并合并到我检出的任何分支中。如果我在本地pqueues上做git pull
,它会自己和master进行合并。我真的不明白为什么。
此外,如果我在p git push origin pqueues
上发出Updates were rejected because the tip of your current branch is behind
,当我知道我是唯一一个提交到该远程分支的人时,我的本地分支是远程提前的一些提交。< / p>
如何找出实际发生的情况并将其恢复到正常工作状态?
答案 0 :(得分:1)
有两种情况,拉动会导致合并。 1.您已在当地分行提交了提交,例如'master'和其他人将提交推送到'origin / master',因为当你的本地'master'最后与'origin / master'同步时 2.你没有提交'master',但是其他人通过将'origin / master'倒回到之前的提交然后向其添加提交来'重写历史'。
对于案例(1),如果您可以执行“git pull --rebase”,它将重播您对原始/主人的新HEAD的更改
案例(2)可以通过永远不会重写历史来避免:如果必须撤消提交,请使用git revert,这将添加一个新的提交,撤消前一个提交和提交并恢复所有显示在git中,可以所有下游回购都快速转发。
答案 1 :(得分: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
更新内容。