有时我输入错误的分支名称,当我做“git pull origin BRANCH”时。
当XXX不是我当前在本地存储库中检查的分支时,有没有办法禁止“git pull origin XXX”?即,如果本地检查的分支是XXX而不是YYY,则允许“git pull”。
也就是说,我确实希望“合并”成为hapen,但只有当我拉出我当前在本地存储库中检查的相同分支时。有没有办法我可以配置本地存储库,只允许来自同一分支名称的“git pull”?
例如:
案例1:
本地存储库上当前已检查的分支是“test”
[* test ] /code$ git pull origin master
这会将“test”-branch中的代码合并到我的本地“master”分支。 ==>我想禁止这个。
案例2:
本地存储库上当前已检查的分支是“master”
[* master ] /code$ git pull origin master
这会将远程“master”分支的更改合并到我的本地“master”分支。 ==>这个 没关系。
我希望我能很好地解释我的问题。
提前致谢。
答案 0 :(得分:3)
您应该使用git fetch
执行following:
从远程存储库中获取所有未包含的对象 出现在当地的。
修改强>
What is the difference between 'git pull' and 'git fetch'?("git pull does a git fetch followed by a git merge"
)
编辑2:
AFAIK你不能禁止进入分支,因为它可以是本地名称,无论何时何地。
但是你可以通过使用将项目更改为最后一次提交
git pull --abort
没有检查它应该是这样的。
在你成为git checkout
之前,你可以做的另一件事是git pull
到分支的SHA1。
请记住,您可以随时撤消所有(不可逆转):
git clean -fd
git reset HEAD --hard
答案 1 :(得分:1)
使用不合并代码的git fetch
。 git pull
实际上是两个命令git fetch
后跟git merge
答案 2 :(得分:1)
不要太担心,你可以通过明智地使用git reset
来解决这个问题。只需确保每次拉出存储库都在shiphape中。
答案 3 :(得分:0)
来自'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
从获取的主分支创建新分支'tmp'
然后git merge FETCH_HEAD
会向您显示任何冲突。
这是你的意思吗?