为了叙述方便,我们假设项目 Test 有一个 main 分支,里面有一个文件 a.py ,这个文件有 200 行代码。
我现在 git checkout -b dev
切换到 dev 分支。然后把后 100 行代码改了。这样一来,main 分支和 dev 分支里面,对应的 a.py 文件前 100 行完全相同。后 100 行完全不同。
以上是前提。
今天,我原本想修改 dev 分支里面的代码,在 a.py 的前 100 行中改了 30 行内容。但是改完才发现我现在在 main 分支。
现在,如果我直接执行git checkout dev
,那么 git 会报错:
error: 您对下列文件的本地修改将被检出操作覆盖:
a.py
请在切换分支前提交或贮藏您的修改。
正在终止
请问,有什么办法把我这次的修改转到 dev 分支上面去。
1
yuang 2021-07-02 14:45:10 +08:00 via Android 3
cherry pick
|
2
cloudzqy 2021-07-02 14:55:23 +08:00 1
这种我一般用最朴实的操作去解决。
先 git stash,然后 checkout 到 dev,然后 git stash pop,如果有冲突,然后解决冲突。 虽然比较 low 但是因为指令比较熟,可控。 |
3
Jooooooooo 2021-07-02 14:59:41 +08:00 1
git stash, 保存住内容
git checkout dev, 可以顺利切分支 git stash pop, 在 dev 下刚刚保存的内容出来了 |
4
mekingname OP |
5
wuxi889 2021-07-02 17:46:22 +08:00
sourcetree 解君愁
|
6
yianing 2021-07-02 18:43:08 +08:00 via Android
cherry-pick +1
|
7
Thinklong 2021-07-02 18:49:54 +08:00 1
特别不理解,很多 git 命令不会,还不用 git 可视化工具,贼爱用命令
|
8
msg7086 2021-07-03 02:04:19 +08:00
常见两种做法。
1. 依赖 stash,先存进 stash,然后切换分支,然后放出来。 2. 依赖 commit,先提交成 commit,然后 rebase 分支。 |
9
tnhmcm 2021-07-03 15:20:13 +08:00
我常用的操作:git checkout -m <branch_name>
checkout 的参数-m (merge) 可以带着工作区的内容切换分支 |
10
mekingname OP @tnhmcm 你这个难道不是切换分支,然后把 main 的代码 merge 到 dev ?
|
11
mekingname OP @Thinklong 我可以通过 Makefile 把多个命令整合起来。但没有办法把可视化工具里面的多次鼠标点击事件整合起来。
|
12
Thinklong 2021-07-05 10:43:05 +08:00
@mekingname 请审题,我很多 git 命令不会的人,还不用可视化工具,git 命令都会的人,也不会遇到 lz 这种问题
|
13
tnhmcm 2021-07-05 13:29:01 +08:00
@mekingname 并不是那样哦,你可以动手试验一下。
|
14
mekingname OP @Thinklong 知道你很厉害了。你在我的帖子下面让我审题。
|