大佬们问一个关乎 git 的问题

2020 年 7 月 20 日
 cat404
假如 A,B 两人同时在 dev 分支上协作开发,当 A 开发完并 push 到远端后,这时候 B 想 push 的话是不是得先 pull 解决完冲突才能 push ?
4866 次点击
所在节点    git
22 条回复
amwyyyy
2020 年 7 月 20 日
那必须的,后提交的人解决冲突。正常流程 commit -> pull -> 有冲突解决冲突,没就直接 push
cat404
2020 年 7 月 20 日
@amwyyyy 感谢!
ruanimal
2020 年 7 月 20 日
你试下就知道了,这种情况你不先 pull 合并改动,根本 push 不了
xuxian
2020 年 7 月 20 日
个人觉得更好的做法是 git rebase,有空的话可以去了解下
Exin
2020 年 7 月 20 日
通常是 git pull --rebase

流行的 git GUI 软件还会在你 push 前自动把你尝试 pull
apporoad
2020 年 7 月 20 日
有 2 种方式,一种是本地先 commit 然后 pull,还有只用是 先 stash 然后 pull,在 stash 出来
edk24
2020 年 7 月 20 日
add
commit
if pull == 冲突 {
解决冲突
push
} else {
push
}
LostPrayers
2020 年 7 月 20 日
个人做法:
使用海龟 git 先拉取(pull --no-rebase),没冲突即可直接提交+推送
有冲突先把本地修改暂存(stash),继续拉取,然后弹出贮藏, 本地解决完冲突后,提交+推送

优点是, 不会轻易覆盖别人的提交,自己的代码改动自己负责。
因为之前见过很多人都是先本地提交了再拉取,然后解决冲突的时候就会把不是自己写的那部分代码弄得一团乱
ypcs03
2020 年 7 月 20 日
所以出现这种情况尽量拆成小的 commit 提交,不要攒一堆,解决 conflict 能让你发狂 害怕不小心改了逻辑
ruanimal
2020 年 7 月 20 日
@apporoad stash 只适用于未提交的改动,如果本地还有别的 commit, 是不行的。
zhw2590582
2020 年 7 月 20 日
这是正常做法,我就时不时 pull 一下,以防万一后面发生大的冲突
IceBear05
2020 年 7 月 20 日
只要两个人不改相同的文件就行
Areial
2020 年 7 月 20 日
先 fetch,再 rebase
ClarkAbe
2020 年 7 月 20 日
@edk24
add
commit
if _,err := Pull(); err != nil {
解决冲突()
}
Push()
airlam
2020 年 7 月 20 日
$ git push -f
简单方便,不过楼主千万别这么干
r00t
2020 年 7 月 20 日
一条神奇的命令:git config --global pull.rebase true 😋
wuhhhh
2020 年 7 月 20 日
git 做操作之前最好都 pull 一下,不然有时候报错就是因为代码没合并的问题导致的。
learningman
2020 年 7 月 20 日
@ruanimal 然后你就会发现你的队友 push 不了加个-f 开开心心走了
ruanimal
2020 年 7 月 20 日
@learningman 分支不 protect 吗...
Chieh
2020 年 7 月 20 日
养成习惯 commit 前都 pull 一下,要不有些客户端还会自动生成一个 commit,如果你们不在乎 commit 内容那就无所谓

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/691455

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX