将 (git) origin 合并到我当前的本地工作分支
merging (git) origin to my current local working branch
我是 git 的新手,我想澄清一下我最近几天在使用 git 时所做的事情,但我不太确定这是正确的做法。
因此,我们有 origin
(远程存储库)和 master
(该存储库的本地分支)
以下是我开始工作的方式:
git fetch origin
//从origin
(或remote
) 获取最新代码
git merge origin/master
// 将最新的代码合并到本地 master
- 然后我在 master
git checkout -b newbranch
之外创建新分支
- 现在我在
newbranch
上工作了 2-3 天,我意识到,我应该刷新我的 newbranch
,因为其他人可能已经添加了一些新代码(我相信,术语称为 "reverse integrating")
我该怎么做最后一步?
我相信如果我这样做 git fetch origin/git merge origin/master
,那只会刷新(或反向整合)master
。
如果我这样做 git fetch origin/git merge origin/newbranch
,那将不起作用,我会收到类似“merge: origin/newbranch- not something we can merge
”的消息。
newbranch 应该是当前分支,以确保您可以检出它,然后使用 fetch 从您的 repo 获取更新,然后将 newbranch 与 master 合并
关于结帐:您当前使用的分支已经结帐。要切换到另一个分支,您需要检查它。如果您已经在使用分支机构,则不需要结帐。
git checkout newbranch
git fetch
git merge origin/master
您可以使用 rebase 而不是合并,在这种情况下,最后一行应该被替换
git rebase origin/master
合并和变基只是用来自其他分支的信息更新你的分支。合并从 master 获取提交并将它们添加到您的分支。 Rebase 以稍微不同的方式做了同样的事情。参见 Merging vs. Rebasing。现在忘记变基,只做合并。
git pull --rebase origin <branch name>
它将获取该分支的所有提交并将您的提交置于其上。
我认为你应该这样做:
git stash
#将您对本地新分支的更改存储在堆栈中
git pull --rebase origin/master
#取本地newbranch的origin最新变化
git stash pop
#pop stack中存储的step1中的变化
如果有冲突,你应该解决冲突,然后继续工作,直到你把所有的更改都推送到origin。
我会推荐这个序列:
git fetch # get all new upstream commits
# bring master up to date
git checkout master
git merge # equivalent to `git merge origin/master`
# bring newbranch up to date
git checkout newbranch
git merge master
第一次合并通常会导致快进,因此不会有合并冲突。我强烈建议不要盲目使用任何使用 rebase
的解决方案:这会重写历史,并且 git
does not like lies.
由于git pull
与git fetch ; git merge
相同,您也可以这样做:
# bring master up to date
git checkout master
git pull
# bring newbranch up to date
git checkout newbranch
git merge master
这正好为您节省了一行输入。
我是 git 的新手,我想澄清一下我最近几天在使用 git 时所做的事情,但我不太确定这是正确的做法。
因此,我们有 origin
(远程存储库)和 master
(该存储库的本地分支)
以下是我开始工作的方式:
git fetch origin
//从origin
(或remote
) 获取最新代码
git merge origin/master
// 将最新的代码合并到本地master
- 然后我在 master
git checkout -b newbranch
之外创建新分支
- 现在我在
newbranch
上工作了 2-3 天,我意识到,我应该刷新我的newbranch
,因为其他人可能已经添加了一些新代码(我相信,术语称为 "reverse integrating")
我该怎么做最后一步?
我相信如果我这样做 git fetch origin/git merge origin/master
,那只会刷新(或反向整合)master
。
如果我这样做 git fetch origin/git merge origin/newbranch
,那将不起作用,我会收到类似“merge: origin/newbranch- not something we can merge
”的消息。
newbranch 应该是当前分支,以确保您可以检出它,然后使用 fetch 从您的 repo 获取更新,然后将 newbranch 与 master 合并
关于结帐:您当前使用的分支已经结帐。要切换到另一个分支,您需要检查它。如果您已经在使用分支机构,则不需要结帐。
git checkout newbranch
git fetch
git merge origin/master
您可以使用 rebase 而不是合并,在这种情况下,最后一行应该被替换
git rebase origin/master
合并和变基只是用来自其他分支的信息更新你的分支。合并从 master 获取提交并将它们添加到您的分支。 Rebase 以稍微不同的方式做了同样的事情。参见 Merging vs. Rebasing。现在忘记变基,只做合并。
git pull --rebase origin <branch name>
它将获取该分支的所有提交并将您的提交置于其上。
我认为你应该这样做:
git stash
#将您对本地新分支的更改存储在堆栈中git pull --rebase origin/master
#取本地newbranch的origin最新变化git stash pop
#pop stack中存储的step1中的变化如果有冲突,你应该解决冲突,然后继续工作,直到你把所有的更改都推送到origin。
我会推荐这个序列:
git fetch # get all new upstream commits
# bring master up to date
git checkout master
git merge # equivalent to `git merge origin/master`
# bring newbranch up to date
git checkout newbranch
git merge master
第一次合并通常会导致快进,因此不会有合并冲突。我强烈建议不要盲目使用任何使用 rebase
的解决方案:这会重写历史,并且 git
does not like lies.
由于git pull
与git fetch ; git merge
相同,您也可以这样做:
# bring master up to date
git checkout master
git pull
# bring newbranch up to date
git checkout newbranch
git merge master
这正好为您节省了一行输入。