1

有时我在执行“git pull origin BRANCH”时不小心输入了错误的分支名称。
当 XXX 不是我目前在本地存储库上检查的同一个分支时,有没有办法禁止“git pull origin XXX”?即仅当本地检查的分支是 XXX 而不是 YYY 时才允许“git pull”。

也就是说,我确实希望“合并”发生,但前提是我拉出我当前在本地存储库中签入的同一个分支。有没有办法可以将本地存储库配置为仅允许来自同一分支名称的“git pull”?

例如:案例1:
本地存储库上当前检查的分支是“test”

[* test ] /code$ git pull origin master

这会将代码从“test”分支合并到我的本地“master”分支。==> 我想禁止这个。

案例二:

本地存储库上当前检查的分支是“master”

[* master ] /code$ git pull origin master

这会将远程“master”分支的更改合并到我的本地“master”分支。==> 这没关系。

我希望我能很好地解释我的问题。

提前致谢。

4

4 回答 4

3

你应该使用git fetch

它执行以下操作:

从远程存储库中获取本地存储库中不存在的所有对象。

编辑:

“git pull”和“git fetch”有什么区别?( "git pull does a git fetch followed by a git merge")

编辑2:

AFAIK 你不能禁止进入一个分支,因为它可以是本地名称,并且可以是任何时候。

但是您可以通过使用不检查将项目更改为拉取之前的最后一次提交, git pull --abort它应该是这样的。

您可以做的另一件事是git checkout在您制作git pull.

请记住,您始终可以通过(不可逆)撤消所有操作:

git clean -fd
git reset HEAD --hard
于 2013-04-03T09:34:17.083 回答
1

来自'man git-pull':

    git pull runs git fetch with the given parameters and calls git merge to
    merge the retrieved branch heads into the current branch.

因此,

    git fetch origin master

不进行自动合并。

你也可以这样做:

    git fetch origin master:tmp 

从获取的 master 分支创建一个新的分支 'tmp'。
然后git merge FETCH_HEAD会告诉你任何冲突。

于 2013-04-03T09:49:26.887 回答
1

Don't worry too much, you can undo the mess by a judicious use of git reset. Just make sure that each time you pull your repository is in shipshape.

于 2013-04-04T17:13:42.140 回答
1

使用git fetch不合并代码。 git pull实际上是两个命令的组合,git fetch后跟git merge

于 2013-04-03T09:35:16.717 回答