| 命令 | 解釋 |
|---|---|
| git reset --soft commitId | 軟回退(--soft):這將保留工作目錄和暫存區(qū)中的更改,但會(huì)將 HEAD 指針移動(dòng)到指定的提交。這對(duì)于僅僅想撤銷最近的一次提交很有用。! |
| git reset --hard commitId | 硬回退(--hard):這將撤銷工作目錄和暫存區(qū)中的所有更改,并將 HEAD 指針移動(dòng)到指定的提交。這對(duì)于想要完全撤銷提交并丟棄所有更改的情況很有用 |
| git cherry-pick commit | cherry-pick 和它的名稱翻譯一樣,精心挑選,挑選一個(gè)我們需要的 commit 進(jìn)行操作。它可以將在其他分支上的 commit 修改,移植到當(dāng)前的分支。 |
| git merge b | 合并b分支到當(dāng)前分支, 生成1次提交 |
| git rebase b | 合并b分支到當(dāng)前分支, b分支比當(dāng)前分支多的commit數(shù)量的提交 |
| git commit --amend | 生產(chǎn)一個(gè)新的提交,并丟棄上次的提交 |
- git commit --amend
| git cherry-pick | 解釋 |
|---|---|
| git commit --amend --no-edit | 使用選定的提交消息而無需啟動(dòng)編輯器。(追加提交,且不修改message信息。) |
- 如果自上次提交以來,你還未做任何修改(例如,在上次提交后馬上執(zhí)行了此命令),那么快照會(huì)保持不變(不產(chǎn)生新的commit),而修改的只是提交信息。
- 或者你提交后發(fā)現(xiàn)忘記了暫存某些需要的修改,可以將該文件添加到暫存區(qū),然后在使用git commit --amend 命令進(jìn)行追加提交。
- 需要注意的是,amend 實(shí)際上修改了上一個(gè) commit。所以如果已經(jīng) push 了上一個(gè) commit,請(qǐng)盡量不要 amend。
如果一定要 amend 已經(jīng) push 了的 commit,請(qǐng)確保這個(gè) commit 所在的 branch 只有你一個(gè)人使用(否則會(huì)給其他人帶來災(zāi)難),然后在 amend 之后使用 git push --force。
- git cherry-pick 其他用法
| git cherry-pick | 解釋 |
|---|---|
| git cherry-pick commit1^..commit10 | 轉(zhuǎn)移從1 到 10的所有提交 |
| git cherry-pick commit1..commit10 | 轉(zhuǎn)移從1 到 10的所有提交 不包含1 |
| git cherry-pick commit1 commit5 commit10 | 轉(zhuǎn)移 1,5,10 |
| git cherry-pick feature | 表示將feature分支的最近一次提交,轉(zhuǎn)移到當(dāng)前分支。 |
如果操作過程中發(fā)生代碼沖突,cherry pick 會(huì)停下來,讓用戶決定如何繼續(xù)操作。
--continue
用戶解決代碼沖突后,第一步將修改的文件重新加入暫存區(qū)(git add .),第二步使用下面的命令,讓 cherry pick 過程繼續(xù)執(zhí)行。
--abort
發(fā)生代碼沖突后,放棄合并,回到操作前的樣子。
--quit
發(fā)生代碼沖突后,退出 cherry pick,但是不回到操作前的樣子。