我怀疑这是我对git merge如何运作的误解。
我有三个分支。 master,range-filters和mvc-pages。
Master和mvc-pages也在远程调用源上,而range-filters分支只在我的本地存储库中。
完成了范围过滤器分支的工作后,我将其合并为master。
git checkout master
git merge range-filters
git push origin master
当我切换到mvc-pages分支并拉动时。
git checkout mvc-pages
git pull origin mvc-pages
我现在将范围过滤器合并到mvc-pages分支中,这是我没想到的。这是git merge的正常行为吗?或者进一步误解了这一点?
合并提交不应该仅显示在分支上我已将它们合并到?
答案 0 :(得分:0)
我无法复制所描述的行为。你确定你一直使用正确的分支名称吗?
#! /bin/bash
set -x
set -eu
dir=$$.$(date +%s)
mkdir $dir
cd $dir
mkdir remote
( cd remote
git init --bare
)
mkdir repo
cd repo
git init
git remote add origin ../remote
echo master > file.1
git add file.1
git commit -m 'file.1 added'
git push -u origin master
git checkout -b mvc-pages
echo mvc-pages > file.2
git add file.2
git commit -m 'file.2 added'
git push -u origin mvc-pages
git checkout -b range-filters
echo range-filters > file.3
git add file.3
git commit -m 'file.3 added'
git checkout master
git merge range-filters
git push origin master
git checkout mvc-pages
git pull origin mvc-pages
cat file.?
echo 'No range-filters here!'
git status
git log
cd ../..
rm -rf $dir
如果您将最后一次拉动修改为
git pull origin master
(这是你的错误),所有分支都在同一个提交中结束。你将原来的主人的变化拉到你的分支,这就是为什么他们现在在那里。但是,远程mvc-pages
应该仍然可以。