多人开发,每天早上拉一次新代码,然后进行任务开发。但是如果在我 push 之前已经有人 push 了,那么我就要先合并他的代码。 这个时候我执行git pull
会出现下面的提示。
我的命令行是 windows 下面的
zsh
环境
因为我大部分时间都是在命令行执行rebase
操作,然后在执行git pull
,这样就能最大化的保持 commit 记录是一条直线。但是有时候不小心就执行了pull
后就会出现这个提示框。 不管我输入:q
还是:q!
命令行都会自动合并。产生了一次合并提交。
我的期望是在这个交互窗口如何取消这次自动合并,我手动执行 rebase 操作。
谢谢大家
感谢楼下大佬们的方法。
配置一下就可以一劳永逸了
git config --global pull.rebase true
虽然删commit message可以,但是更倾向于全局配置。感谢大伙们的热心回复。
1
qing0304 2019-03-06 09:11:47 +08:00
建分支?
|
2
AlphaTr 2019-03-06 09:12:37 +08:00 1
git fetch
|
3
leo108 2019-03-06 09:13:57 +08:00 4
git config --global pull.rebase true
然后之后所有的 pull 操作都会自动 rebase |
4
AlphaTr 2019-03-06 09:14:36 +08:00
或者默认 git pull 加上 --ff-only 这个参数,只进行 fast-forward 合并
|
5
xqin 2019-03-06 09:15:00 +08:00 1
git config --global pull.rebase true
配置一下 git 的默认行为, 改变 pull 之后的 merge 为 rebase, 这样当你执行 git pull 的时候, 其实是执行的 git fetch && git rebase origin/xxx google 关键字`git config pull rebase` |
6
liujan 2019-03-06 09:15:03 +08:00 2
用 git pull --rebase
|
7
terence4444 2019-03-06 09:16:57 +08:00 via iPad
git fetch
git rebase |
9
jaysun 2019-03-06 10:03:10 +08:00 1
你截的图就说明了终止提交的方法,一个空的消息,终止这次提交
|
10
raysonx 2019-03-06 10:09:08 +08:00 via Android
我都是先 git pull,出现合并的话再执行 git reset --hard origin/master
|
12
graysheeep 2019-03-06 10:20:33 +08:00
git pull --rebase
|
13
PazuLee 2019-03-06 10:39:49 +08:00
#7 正解
|
15
Lax 2019-03-06 10:59:15 +08:00
9 楼正解,删掉这个文件里的内容即可。
|
17
hiveex 2019-03-06 11:23:37 +08:00
idea 有个选项是 rebase
|
18
anyforever 2019-03-06 11:26:36 +08:00
为什么不在自己的独立分支上开发?
|
19
raysonx 2019-03-06 11:34:21 +08:00 via Android
@leo108 我自己的代码从来不放在 master 分支,如果临时需要 rebase 通常就是先 git fetch origin,然后 git rebase origin/master。
如果我切到 master 肯定只是为了 pull,然后开新分支做开发。 |
20
xiaoxinxiaobai 2019-03-06 11:48:18 +08:00 via Android
不太懂这种需求的意义。。。
|
21
rizon 2019-03-06 11:54:24 +08:00
我没弄错的话,git pull 之后 产生了 merge 的 commit 记录后,还是可以继续“变基”消除多余的 merge 的 。
“拉”和“变基”的顺序是没关系的吧?? |
22
rizon 2019-03-06 11:59:02 +08:00
就是既可以执行 `git pull --rebase` 也可以执行 `git pull ` merge 之后再`git rebase`
两种都可以的。 idea 默认没有`git pull --rebase` ,不知道为啥。。 所以每次都是先 commit 代码,然后 执行 `update project`然后发现产生了 merge,然后再手动 `git rebase`。 如果不这样,那就只能手动去点菜单 vcs -> git -> rebase 这样操作感觉太麻烦了。 ---- 因此对于 idea 中如何去做这件事,有大佬知道什么更优雅的方式吗? 除了`git config pull.rebase true`这种方案之外的 |
23
FrankFang128 2019-03-06 12:36:39 +08:00
rebase 跟自动合并有多大区别? 代码最终都是一样的,该冲突还是冲突。
|
25
shenyangno1 2019-03-06 12:50:57 +08:00 via iPhone
pull 出 merge 日志之后再 rebase 效果一样的吧,有代码冲突除外
|
26
lepig OP @anyforever 正常来说应该是在自己分支上弄。但是为了懒吧,需要经常和前端联调代码。每次都要切过去在合,在提交,然后在切自己分支挺麻烦的。
|
27
lepig OP @shenyangno1 merge 以后 在我这里就会自动产生一次 commit 了。 不想要这个 commit
|
28
rizon 2019-03-06 15:16:14 +08:00 1
@lepig #27 前面我都说了,merge 后执行 rebase 一样的。。。。都会清理时间线(消除 merge 的 commit )的。。
|
30
lepig OP 确实是。 刚试了一下,执行了 git rebase 后,自动消除了 merge 的日志
|
31
lepig OP @rizon 确实是。谢谢了。我总以为产生的 merge 的 commit 会被保留在历史时间线中。哎,人丑真的要多读书。
|
32
lepig OP @shenyangno1 确实是。 刚试了一下,执行了 git rebase 后,自动消除了 merge 的日志
|
33
ydirel 2019-03-07 00:52:55 +08:00 1
git fetch && git rebase,,,有冲突手动解决冲突,,,git rebase --continue
|