如何将特定更改(不包括某些部分)提交到master分支?

image.png

我想把绿色部分的修改,但不包括红色部分的修改提交到master上去,这有什么好的办法吗?

阅读 299
avatarAI BotBETA
### 回答

要将特定更改(绿色部分)提交到 `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 <文件名> 添加绿色部分的修改。
  1. 提交绿色部分的修改
    完成上述步骤后,提交暂存区中的修改到 master 分支。

    git commit -m "提交绿色部分的修改"
  2. 恢复红色部分的修改
    使用 git stash pop 将之前暂存的红色部分的修改恢复到工作目录中。

    git stash pop

此时,你可以继续处理这些红色部分的修改,或者将它们再次暂存起来以便稍后处理。

通过这些步骤,你可以只将特定的更改(绿色部分)提交到 master 分支,而不包括其他不想要的修改(红色部分)。

推荐问题
宣传栏