命令 | 解释 |
---|---|
git reset --soft commitId | 软回退(--soft):这将保留工作目录和暂存区中的更改,但会将 HEAD 指针移动到指定的提交。这对于仅仅想撤销最近的一次提交很有用。! |
git reset --hard commitId | 硬回退(--hard):这将撤销工作目录和暂存区中的所有更改,并将 HEAD 指针移动到指定的提交。这对于想要完全撤销提交并丢弃所有更改的情况很有用 |
git cherry-pick commit | cherry-pick 和它的名称翻译一样,精心挑选,挑选一个我们需要的 commit 进行操作。它可以将在其他分支上的 commit 修改,移植到当前的分支。 |
git merge b | 合并b分支到当前分支, 生成1次提交 |
git rebase b | 合并b分支到当前分支, b分支比当前分支多的commit数量的提交 |
git commit --amend | 生产一个新的提交,并丢弃上次的提交 |
- git commit --amend
git cherry-pick | 解释 |
---|---|
git commit --amend --no-edit | 使用选定的提交消息而无需启动编辑器。(追加提交,且不修改message信息。) |
- 如果自上次提交以来,你还未做任何修改(例如,在上次提交后马上执行了此命令),那么快照会保持不变(不产生新的commit),而修改的只是提交信息。
- 或者你提交后发现忘记了暂存某些需要的修改,可以将该文件添加到暂存区,然后在使用git commit --amend 命令进行追加提交。
- 需要注意的是,amend 实际上修改了上一个 commit。所以如果已经 push 了上一个 commit,请尽量不要 amend。
如果一定要 amend 已经 push 了的 commit,请确保这个 commit 所在的 branch 只有你一个人使用(否则会给其他人带来灾难),然后在 amend 之后使用 git push --force。
- git cherry-pick 其他用法
git cherry-pick | 解释 |
---|---|
git cherry-pick commit1^..commit10 | 转移从1 到 10的所有提交 |
git cherry-pick commit1..commit10 | 转移从1 到 10的所有提交 不包含1 |
git cherry-pick commit1 commit5 commit10 | 转移 1,5,10 |
git cherry-pick feature | 表示将feature分支的最近一次提交,转移到当前分支。 |
如果操作过程中发生代码冲突,cherry pick 会停下来,让用户决定如何继续操作。
--continue
用户解决代码冲突后,第一步将修改的文件重新加入暂存区(git add .
),第二步使用下面的命令,让 cherry pick 过程继续执行。
--abort
发生代码冲突后,放弃合并,回到操作前的样子。
--quit
发生代码冲突后,退出 cherry pick,但是不回到操作前的样子。