假如 A,B 两人同时在 dev 分支上协作开发,当 A 开发完并 push 到远端后,这时候 B 想 push 的话是不是得先 pull 解决完冲突才能 push ?
|
1
那必须的,后提交的人解决冲突。正常流程 commit -> pull -> 有冲突解决冲突,没就直接 push
|
|
3
你试下就知道了,这种情况你不先 pull 合并改动,根本 push 不了
|
|
4
个人觉得更好的做法是 git rebase,有空的话可以去了解下
|
|
5
通常是 git pull --rebase
流行的 git GUI 软件还会在你 push 前自动把你尝试 pull |
|
6
有 2 种方式,一种是本地先 commit 然后 pull,还有只用是 先 stash 然后 pull,在 stash 出来
|
|
7
add
commit if pull == 冲突 { 解决冲突 push } else { push } |
|
8
个人做法:
使用海龟 git 先拉取(pull --no-rebase),没冲突即可直接提交+推送 有冲突先把本地修改暂存(stash),继续拉取,然后弹出贮藏, 本地解决完冲突后,提交+推送 优点是, 不会轻易覆盖别人的提交,自己的代码改动自己负责。 因为之前见过很多人都是先本地提交了再拉取,然后解决冲突的时候就会把不是自己写的那部分代码弄得一团乱 |
|
9
所以出现这种情况尽量拆成小的 commit 提交,不要攒一堆,解决 conflict 能让你发狂 害怕不小心改了逻辑
|
|
11
这是正常做法,我就时不时 pull 一下,以防万一后面发生大的冲突
|
|
12
只要两个人不改相同的文件就行
|
|
AreialJul 20, 2020
13
先 fetch,再 rebase
|
|
airlamJul 20, 2020
15
$ git push -f
简单方便,不过楼主千万别这么干 |
|
r00tJul 20, 2020
16
一条神奇的命令:git config --global pull.rebase true 😋
|
|
wuhhhhJul 20, 2020
17
git 做操作之前最好都 pull 一下,不然有时候报错就是因为代码没合并的问题导致的。
|
|
learningmanJul 20, 2020
18
@ruanimal 然后你就会发现你的队友 push 不了加个-f 开开心心走了
|
|
ruanimalJul 20, 2020
19
@learningman 分支不 protect 吗...
|
|
ChiehJul 20, 2020
20
养成习惯 commit 前都 pull 一下,要不有些客户端还会自动生成一个 commit,如果你们不在乎 commit 内容那就无所谓
|
|
phobalJul 20, 2020
21
我在我们团队推崇的做法是:
dev 为主线,各自从该分支切自己的 feature (比如 feature/a, feature/b ),各自开发完后,提交 MR ( merge request ),通知 reviewers 进行 review, 改问题、改冲突(如果有),切到 dev, 然后 pull , 再切到 feature 分支,执行 git rebase dev, 再 push, 等待 merge ! |