在 Git 中,如果你想要撤销一个已经完成的 `commit` 并且重新进行 `commit`,你可以使用以下方法:
1. **使用 `--amend` 选项重新编辑最后一次提交**:
如果你想要修改最后一次提交(例如,添加遗漏的文件或修正提交信息),你可以使用 `--amend` 选项。这将打开一个编辑器让你重新编辑提交信息,并且你可以在这个阶段使用 `git add` 命令来添加之前遗漏的文件。
```
git commit --amend
```
完成编辑后,保存并关闭编辑器,提交将会被更新。
2. **使用 `reset` 撤销最后一次提交**:
如果你想要撤销最后一次提交,并且重新暂存文件和编写提交信息,你可以使用 `git reset` 命令。使用 `HEAD` 表示撤销最后一次提交:
```
git reset --soft HEAD~1
```
这个命令不会改变你的工作目录中的文件,但是它会撤销最后一次提交,将暂存区的文件保留在暂存区。
3. **重新暂存和提交**:
使用 `git add` 命令将需要的文件重新添加到暂存区,然后使用 `git commit` 重新提交:
```
git add .
git commit -m "New commit message"
```
4. **如果需要,推送更改到远程仓库**:
如果你的更改需要更新远程仓库,使用 `git push` 命令:
```
git push origin <branch-name>
```
请注意,使用 `git reset --soft` 会保留你的更改,但是会撤销提交。如果你使用 `git reset --hard HEAD~1`,这将撤销最后一次提交,并且丢弃所有的更改。使用 `--hard` 选项时要非常小心,因为它会丢失所有未提交的更改。
如果你使用 `git commit --amend` 来修改最近的提交,并且这个提交已经被推送到了远程仓库,你需要使用 `--force` 或 `--force-with-lease` 选项来推送更新后的提交:
```
git push origin <branch-name> --force
```
使用 `--force` 选项会覆盖远程仓库的历史,这可能会影响其他协作者的工作,请谨慎使用。