我经常至少有3个远程分支:master,staging和production.我有3个本地分支跟踪那些远程分支.
更新我所有的本地分支机构很繁琐:
git fetch --all
git rebase origin/master
git checkout staging
git rebase origin/staging
git checkout production
git rebase origin/production
Run Code Online (Sandbox Code Playgroud)
我很乐意能够做一个"git pull -all",但我无法让它发挥作用.它似乎执行"fetch --all",然后更新(快进或合并)当前工作分支,而不是其他本地分支.
我仍然卡在手动切换到每个本地分支和更新.
当您git pull在master分支上运行时,它通常会从中拉出origin/master.我是在一个叫不同的分支newbranch,但我需要运行,做了一个命令,git pull从origin/master进master,但我不能运行git checkout更改所选分支,直到后拉完成.有没有办法做到这一点?
为了给出一些背景知识,存储库存储一个网站.我newbranch通过切换网站对其进行了一些更改并进行了部署newbranch.现在这些更改已合并到上游master分支,我也试图将网站切换回master分支.在这一点上,newbranch并且origin/master是相同的,但是master落后origin/master并且需要更新.问题是,如果我采用传统方式:
$ git checkout master
# Uh oh, production website has now reverted back to old version in master
$ git pull
# Website is now up to date again
Run Code Online (Sandbox Code Playgroud)
我需要实现与上面的相同(git checkout master && git pull),但是在此过程中不需要将工作目录更改为早期版本.
我习惯在我正在处理的分支中运行git pull和其他命令.但我已经设置了一个可供多人工作的开发服务器,所以我不想在我这样做时切换分支.如果我想从我们都使用的github存储库更新开发服务器上的现有分支,那么这样做的正确方法是什么?如果我运行命令'git pull github branchname',那么只需将分支拉入当前分支?
我能找到的所有git示例似乎都表明你首先运行'checkout branchname',然后执行pull.我试图避免这种情况.正如我所说,这是一个现有的分支,我只想更新到最新版本.
假设我有一个名为develop的私有主题分支,在master之前有2次提交.
怎么git pull origin master办?
从本地开发的远程主机中拉出所有内容并合并它?拉出本地主分支中的所有内容并合并它?
并且有没有办法从头开始更新master git checkout master?
我有一个应用程序在分支上的git存储库中运行(比如说dev).应用程序修改某些存储库中的内容并提交它们.我现在必须将这些更改合并到另一个分支(比如说master),但是在我git checkout master做这个之前我不想做这个问题.有没有办法说"将当前分支合并为主"?
有没有办法将分支合并到另一个分支而不检查任何分支?例如,我检查了分支'master',但我想将branch-a合并到branch-b,而不离开master.
说我现在的分支是myfeature.我想让大师了解最新动态.git merge git pull据我所知,两者总是合并到当前分支.
有没有办法将更改从远程分支(例如,origin/master)合并到我当前不在的分支(master)?我可以想到一个方法:
git stash
git checkout master
git pull origin/master
git checkout myfeature
git stash apply
Run Code Online (Sandbox Code Playgroud)
还有更好的吗?
(这可能是我的整个问题是错误的:git fetch如果启用了远程跟踪,会自动更新master以匹配origin/master吗?)
总结下面的答案,它基本上"只是git merge直接使用,你可能不需要实际做这个合并".
我有3个分支机构.
master [ Live Server]
\
stage [ Stage Server Where we test changes; merge commits ]
\
Dev [ Local Machine ]
Run Code Online (Sandbox Code Playgroud)
我想下游的变化.这些分支中的每一个都设置为相互跟踪.
通常,对于下游的更改,我这样做:
git checkout stage && git merge master
然后我结帐开发,我也这样做
git checkout dev && git merge stage
然后全部推动它们:
git push origin --all
有没有办法下游这些更改而不检查每个分支?
我可能使用了错误的术语.我不完全确定我是否正确使用上游/下游术语.
我已经使用该--track选项设置了跟踪分支,当我执行操作git pull时master,它会获取所有分支origin/branchname但不与本地跟踪分支合并.这是额外的烦人,因为如果我以后做一个git push上master,它说,非快速向前更新被拒绝在跟踪分支,因为他们并没有在最初的快速转发git pull.
我的问题是:如何git pull通过获取所有分支并自动快进所有跟踪分支来实现它?
注意:git pull用于使用我的GitHub存储库快速转发所有跟踪分支,但现在我已经使用Gitolite建立了自己的存储库,这个问题正在出现.
我们正在使用我们所有人都使用的单个远程存储库的模型.我们分支新功能并重新集成到主干分支.我们的工作流程是,当其他功能集成到主干中时,我们应该从主干集成到我们的工作分支.
因此,我们做的事情并不少见:
(branch) $ git commit -a -m"blah blah blah"
(branch) $ git fetch # origin/trunk is updated
(branch) $ git checkout trunk
(trunk) $ git pull # trunk is fast-forwarded to current version of origin/trunk.
(trunk) $ git checkout branch
(branch) $ git merge trunk
(branch) $ git push
Run Code Online (Sandbox Code Playgroud)
我不喜欢"git checkout trunk/git pull/git checkout branch"循环.它通常与Visual Studio合并,抱怨我的所有文件和项目都在磁盘上发生了变化,并且应该重新加载它们.两个结帐.而拉.合并.合并是不可避免的,但由于git如何工作,它应该能够在主干上进行快进,而不需要检查它.
但我不知道这个命令,而我的google-foo在这方面让我失望了.谁知道怎么样?
git ×10
branch ×2
git-checkout ×2
git-merge ×2
merge ×2
pull ×2
git-branch ×1
git-pull ×1
git-stash ×1