项目背景要求每个需求合并到master上的时候只有一个commit。
在提交的时候就只保留一次commit的操作
- 正常创建git分支,创建一个名叫feat-test的分支
git checkout -b feat-test
- 正常修改代码之后提交代码,第一次根据需求需要保留一次commit 正常提交即可,这里是第一次commit保留之后还需要提交的操作。
git add .
git commit --amend
git push -f
这里需要注意使用git push -f的时候你当前分支的代码为远程端最新的代码否则将会覆盖掉远程代码。
提交了多次commit需要合并成一次commit的操作
如果你在 Git 中有多次提交(commits),并且希望将它们合并成一个提交,以简化提交历史记录,你可以使用 Git 的交互式重写(interactive rebase)功能。以下是详细步骤:
1. 找到需要合并的提交的基点
假设你有多个提交需要合并成一个,你首先需要找到这些提交的基点。你可以使用 git log
命令来查看提交历史:
git log
找到你要合并的提交的基点(也就是你希望从这个提交开始进行合并的那个提交的哈希值或相对引用)。
2. 启动交互式重写
使用 git rebase -i
命令来启动交互式重写。假设你要合并的提交都是在基点提交之后,你可以指定基点的哈希值或相对引用:
git rebase -i <基点提交的哈希值>
例如,如果你要合并最近的 3 次提交,你可以使用 HEAD~3
:
git rebase -i HEAD~3
3. 选择合并操作
在交互式重写的编辑器中,你会看到一个提交列表。这个列表中的每一行都代表一个提交:
pick abcdef1 Commit message 1
pick bcdef23 Commit message 2
pick cdef345 Commit message 3
将除了第一个提交之外的所有提交前缀的 pick
更改为 squash
或 s
:
pick abcdef1 Commit message 1
squash bcdef23 Commit message 2
squash cdef345 Commit message 3
4. 修改提交信息
保存并关闭编辑器后,Git 会启动另一个编辑器来让你编辑合并后的提交信息。你可以在这里修改提交信息,合并后的提交信息将会是所有原提交信息的组合:
# This is a combination of 3 commits.
# The first commit's message is:
Commit message 1
# This is the 2nd commit message:
Commit message 2
# This is the 3rd commit message:
Commit message 3
修改提交信息后,保存并关闭编辑器。
5. 完成重写
Git 会完成 rebase 过程,并将你的提交合并成一个提交。如果在过程中遇到冲突,Git 会提示你解决冲突。解决冲突后,使用 git add
添加修改的文件,并继续 rebase:
git add <文件>
git rebase --continue
6. 推送修改
如果你已经将这些提交推送到远程仓库,你需要使用 --force
参数来强制推送(因为历史记录已经被重写):
git push origin <你的分支> --force
注意,强制推送可能会覆盖远程仓库的历史记录,因此在执行之前请确保你理解可能的影响,尤其是在多人协作的环境中。