[英]origin/master commits are leaks into the history of another remote branch slave/master
我写了一个简单的bash脚本,它初始化2个裸仓库( king
和slave
)。 您可以将该脚本复制到终端,然后执行以重现问题。
在king
仓库中,我已将远程分支添加到slave
仓库中。
问题是当我尝试使用cmd git push slave master
将新提交推送到slave
repo中时,发生了一些奇怪的推送失败...就像我没有从远程获取新更改一样,此更改阻止了我尝试推送新提交...但这不是...
ygyerts @ ygyerts-Aspire-V3-771:〜/ repos / wd / king $ git push slave master
到/home/ygyerts/repos/bare/slave.git! [拒绝] master-> master(非快进)错误:无法将某些引用推送到'/home/ygyerts/repos/bare/slave.git'提示:由于推送的分支提示位于其远程后面,因此更新被拒绝提示:对应。 在再次推送之前,请检查该分支并集成远程更改提示:(例如'git pull ...')。 提示:有关详细信息,请参见“ git push --help”中的“关于快进的注意事项”。
我可以仅使用-f
标志来推送新更改,该标志将从king/origin/master
将此"init commit in king"
添加到slave/master
历史记录中。 这是绝对不能接受的!
tput reset
#======================================
# Clean workspace
#======================================
rm -rf ~/repos/bare
rm -rf ~/repos/wd
#======================================
# Create required folders
#======================================
mkdir -p ~/repos/bare
mkdir -p ~/repos/wd
#======================================
# Create Bare Repo KING
#======================================
cd ~/repos/bare
git init --bare king.git
#======================================
# Create Bare Repo SLAVE
#======================================
cd ~/repos/bare
git init --bare slave.git
#======================================
# Clone and Initialize KING repository
#======================================
cd ~/repos/wd
git clone ~/repos/bare/king.git
cd ./king
echo "KING" > king.txt
git add . && git commit -m "init commit in king"
git push origin master
#======================================
# Clone and Initialize SLAVE repository
#======================================
cd ~/repos/wd
git clone ~/repos/bare/slave.git
cd ./slave
echo "SLAVE" > slave.txt
git add . && git commit -m "init commit in slave"
git push origin master
#======================================
# Add remotes to KING repo
#======================================
cd ~/repos/wd/king
git remote add slave ~/repos/bare/slave.git
git fetch slave
git branch -a
主
遥控器/原点/主机
遥控器/从机/主机
#======================================
# Set upstream branches to within KING repo
#======================================
cd ~/repos/wd/king
git checkout slave/master
git checkout -b slave_master
git branch --set-upstream-to=slave/master slave_master
#======================================
# Add changes to slave/master through the king repo
#======================================
cd ~/repos/wd/king
git branch -vv
master fbdc59a [origin / master] init commit in king
- slave_master 6370a7d [slave / master] init提交
git checkout slave_master
echo "king > slave/master" > king_to_slave.txt
git add . && git commit -m "add changes from king repo"
git push slave master
到/home/ygyerts/repos/bare/slave.git! [拒绝] master-> master(非快进)错误:无法将某些引用推送到 '/home/ygyerts/repos/bare/slave.git'提示:由于推送的分支提示位于其远程后面,因此更新被拒绝提示:对应。 在再次按下之前,请检查该分支并集成远程更改提示:(例如'git pull ...' )。 提示:有关详细信息,请参见“ git push --help”中的“关于快进的注意事项”。
git pull
没有帮助!
我刚发现脚本中存在错误。 但是我不明白这个问题。
错误是在推cmd git push slave master
正确的cmd是git push slave slave_master:master
但是我仍然不明白为什么git push -f slave master
cmd从origin master
获取所有提交,然后尝试将它们放入slave master
历史记录中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.