我是写 Java 的,经常在和另一个同事同时修改一个文件,但改的是不同的方法时,如果其中一个人提交了代码,另一个人 git pull 一定会失败
1
Chad0000 2022-04-22 10:34:41 +08:00
你 Pull 之前没有 Commit 先?
|
2
cmdOptionKana 2022-04-22 10:36:23 +08:00
先各自开分支?
|
3
Imindzzz 2022-04-22 10:36:27 +08:00
贴出具体错误是提问的基本素质
|
4
MoYi123 2022-04-22 10:39:01 +08:00
这不是失败, 这是让你解决冲突.
|
5
dvsilch 2022-04-22 10:39:52 +08:00
先把自己的修改 commit/stash 起来,再拉取别人代码
话说这不是基本的 git 操作吗,一搜就知道了 |
6
Gilgamesh7 2022-04-22 10:42:14 +08:00 1
pull 失败后,git stash -> git pull -> git stash apply ,有冲突解决一下冲突
|
7
villivateur 2022-04-22 10:42:51 +08:00
如果搞不定 Git 的工作区、暂存区、仓库、远端这些概念,建议用 SVN ,比较简单
|
8
Ev1s 2022-04-22 10:46:24 +08:00
这是正常的鸭
|
9
enopkf 2022-04-22 10:46:32 +08:00
用 git pull -r 更新,rebase 方式,有冲突解决冲突
|
10
ruanimal 2022-04-22 10:53:32 +08:00
|
11
monkeyWie 2022-04-22 11:11:02 +08:00 1
git stash
git pull git stash pop |
12
quxuanxuan 2022-04-22 11:18:20 +08:00
git reset 到较早的 commit
git pull |
13
Junzhou 2022-04-22 11:20:11 +08:00 4
方案 1:pull 前,先把本地的 commit 了,但是一般不推荐这样做。因为你手头的活可能没做完。
方案 2:git stash ,先把当前没做完的活 stash 了,然后 pull ,pull 完,你同事的 commit 就合并进去了,这个时候,在把 stash 的内容取出来。 |
14
itechnology OP @Chad0000 没有,我习惯先 pull ,再 commit
|
15
Felldeadbird 2022-04-22 11:43:16 +08:00 2
按理来说,开发时不应该频繁同时修改同一个文件。一般我是开分支来做。管理做合并处理。这样大家都做大家的事情。完成任务后,去合并到主分支。
|
16
fiypig 2022-04-22 11:44:42 +08:00
你先提交 ,然后拉取 ,然后合并提交
|
17
darkengine 2022-04-22 11:50:50 +08:00
@itechnology 先不管有没有冲突,先 pull 后 commit 肯定会报错
|
18
enopkf 2022-04-22 11:52:47 +08:00
我觉得大家说的 git stash 方式更好,但我补充一下先 commit 的方式,也就是 13 楼的方案 1
1. 先把修改 commit 2. git pull -r ,rebase 方式更新,这样你的临时 commit 就是最后一个 commit (当然有冲突解决冲突) 3. git reset HEAD^ 把临时提交取消,之前修改会恢复到工作区 |
19
unco020511 2022-04-22 11:56:31 +08:00 1
1.git stash
2.git pull --rebase 3.git stash pop |
20
Chad0000 2022-04-22 11:58:25 +08:00
@itechnology
养成先 Commit 的习惯就行,而且一般情况下你们不应该在同一个分支下工作。如果工作的内容高度依赖,那么要么定期 Merge 对方的分支到自己的里面来,要么就在同一分支下工作:即使这样也是先 Commit 再 Pull ,Commit 就是确保你修改的及时备份,不要动不动给我整没了。 这两周工作的内容就是与另外一个开发高度重叠,就在同个分支下工作的。只不过这种比较少见迫不得已为之而已。 |
21
unco020511 2022-04-22 12:01:24 +08:00
补充一下,正常来说你一般不和同事在一个分支开发呀,当然如果是两个人开发同一个功能除外
|
22
weichengwu 2022-04-22 12:03:00 +08:00
看一下 git 入门教程
|
23
itechnology OP @unco020511 我和同事开发同一个页面的不同接口,我们把这些接口都写在同一个文件里面了
|
24
msaionyc 2022-04-22 12:32:13 +08:00 via iPhone
你先明确一下“一定会失败”是什么意思,不然很难得到你想要的答案
|
25
nothingistrue 2022-04-22 12:44:19 +08:00
git 修改同一个文件,不一定总是冲突,但大概率冲突,这要看 git 能否自动将两个人的修改合并成一个。所以尽量避免修改同一个文件。
如果不能避免,那也不是啥大问题。pull 之后用新提交解决冲突,或者先 rebase 解决冲突再 push ,都可以,但是以上的前提是:**********先提交*********。 pull 失败跟冲突是两码事,本地工作空间没内容时,pull 只会产生冲突不会失败。本地工作空间有内容,并且预期还会产生冲突(实际上是 Git 无法自动解决冲突),才会 pull 失败。 使用 Git 时切记,先提交后 pull (如果暂时还不想提交就 stash ),不要像 SVN 那样先更新后提交。如果是想获取线性提交历史,那么使用 pull --rebase 即可,但本地还是要先提交。 |
26
chiu 2022-04-22 12:56:02 +08:00
失败的错误信息是什么?
|
27
zamaojava 2022-04-22 13:09:23 +08:00
idea 应该提示很好啊,从来没打过命令,idea 无脑支持。
|
28
ClericPy 2022-04-22 14:25:07 +08:00
大项目参考一下 git flow?
十人以下的考虑 Github flow? 尽量避免不同的人开发同一个文件 /模块, 是不是底层抽象的不彻底 |
29
dddd1919 2022-04-22 14:32:18 +08:00
结对编程,一个人改
|
30
zooeymango 2022-04-22 14:35:30 +08:00
git 对比的是文件的那一行进行了修改, 虽然你觉得你们写的是不一样的代码, 但是对 git 来说你们的改动冲突了
|
31
wolfie 2022-04-22 14:40:53 +08:00 2
这水平还是用 svn 好。
|
32
xcsoft 2022-04-22 14:43:36 +08:00 via iPhone
出现冲突了吧
|
33
624144061 2022-04-22 15:08:36 +08:00 4
都是老实人,我建议 git push -f
|
34
deplivesb 2022-04-22 15:11:36 +08:00 1
|
35
CodeCodeStudy 2022-04-22 15:20:19 +08:00
你让他不要动
拆分大文件,每个人负责某个文件不就好了 |
36
gzyguy 2022-04-22 19:19:12 +08:00 via iPhone
这种协作用 git flow ➕ code review 好些
|
37
mkmoon 2022-04-22 19:23:31 +08:00 via iPhone
commit 后,也可以先 git fetch ,再在本地 git merge ,最后再 push 就行
|
38
yeqizhang 2022-04-22 21:06:11 +08:00 via Android
用 idea 用习惯的我,都是没 commit 先 pull 来合并别人的提交的🐶
|
39
magicls 2022-04-23 16:42:27 +08:00
push 之前先 git pull --rebase ,有冲突解冲突,解了再重新 git add; git commit 。
你要知道,git 的冲突是你一定会遇到的,一定要面对的,一定要会解的,而不是说想办法不要有冲突,如果你那样想那就错了。 |