我正在学习Git,遇到了这么一种情况:
- 我的同事进行了更改并将更改推送到主分支。
- 我在本地的主分支上也进行了更改。
根据我的理解,在这个阶段我可以选择以下两种方式之一:
- 拉取同事工作的主分支并解决合并冲突。
- 备份本地主分支,克隆一个新的主分支副本,然后将我的更改合并到主分支上。
我想知道是否有更好的方法来处理这种情况。
我正在学习Git,遇到了这么一种情况:
根据我的理解,在这个阶段我可以选择以下两种方式之一:
我想知道是否有更好的方法来处理这种情况。
如果远程分支和本地分支都有不同的更改,我不会只使用 git pull
来拉取主分支,而是会采取以下方式:
git pull --rebase
我甚至在我的默认配置中设置了它,以便在git pull
时始终进行必要的变基:
git config --global pull.rebase true
重新基于一个分支避免了合并提交,使你的更改保持在当前远程分支之上。
然而,当不同人在同一分支上工作时,你仍然必须解决任何发生的合并冲突,这是一种不好的做法,特别是因为它会导致冲突。
(另外要注意,在重新基于分支的范围内,“theirs”和“ours”的含义是相反的。)
在少量更改的情况下,你的更改只是被应用在最前面。
你正在改变历史记录,但只是你本地的历史记录,而不是远程的历史记录。
你不需要使用git push --force
,只需像平常一样使用git push
即可。
通常应该在功能分支上进行工作,并将其合并回主分支。
在功能分支上工作时,也可以通过以下方式使功能分支靠近master
:
git checkout feature-branch
git fetch && git rebase origin/master
然而,如果有多人在同一特性分支上工作,那么在此需要使用git push --force
命令,因此应该小心使用此策略。
如果想要使用变基和强制推送,请考虑使用git push --force-with-lease
而不是git push --force
,因为它可以防止意外删除远程库中其他人的提交。
rebase
是一个新的概念。谢谢。 - Asim Mahargit stash && git pull --rebase && git stash apply
。 - k0pernikus一种不需要分支或者stash的简单处理方法:
从我的经验来看,最好的方式是:
这样,当需要部署时,你就能够开发许多新功能并只合并那些可运行的功能。祝你好运!查看这个链接获取更多信息 -> https://www.codeschool.com/courses/try-git
我认为Git同步是很好的。Git同步会提交您的更改,拉取主分支中已有的任何更改,然后将所有更改一起推送到主分支。