我想把绿色部分的修改,但不包括红色部分的修改提交到master上去,这有什么好的办法吗?
### 回答
要将特定更改(绿色部分)提交到 `master` 分支,而不包括红色部分的修改,你可以使用 `git stash` 和 `git checkout --patch` 命令的组合来实现。以下是一个详细的步骤:
1. **暂存红色部分的修改**:
使用 `git stash` 将你当前工作目录中的红色部分修改暂存起来,这样它们就不会被提交。
git stash
2. **将工作目录恢复到上一次提交的状态**:
使用 `git reset --hard` 恢复到上一次提交的状态,此时绿色部分的修改仍然保留在暂存区(index)中,而红色部分的修改已经被暂存。
git reset --hard HEAD
3. **部分暂存绿色部分的修改**:
使用 `git add --patch` 或 `git checkout --patch`(针对未添加到暂存区的文件)来选择性地添加绿色部分的修改到暂存区。这个命令会逐块显示文件的修改,并允许你选择性地添加或跳过某些更改。
- 如果你已经有一些修改在工作目录中(即绿色部分),使用:
git add --patch <文件名>
```
按照提示选择性地添加修改。
git checkout -- <路径/到/文件>
),然后再次使用 git add --patch <文件名>
添加绿色部分的修改。提交绿色部分的修改:
完成上述步骤后,提交暂存区中的修改到 master
分支。
git commit -m "提交绿色部分的修改"
恢复红色部分的修改:
使用 git stash pop
将之前暂存的红色部分的修改恢复到工作目录中。
git stash pop
此时,你可以继续处理这些红色部分的修改,或者将它们再次暂存起来以便稍后处理。
通过这些步骤,你可以只将特定的更改(绿色部分)提交到 master
分支,而不包括其他不想要的修改(红色部分)。
2 回答1.4k 阅读✓ 已解决
1 回答3.5k 阅读
1 回答1.3k 阅读
1 回答785 阅读
848 阅读
使用 cherry-pick
阮一峰的网络日志 - git cherry-pick