git重构提交树:分支、变基和挑拣提交的用法
在Push時報錯
一種解決方案是
git push remote-name --delete branch-name
git push remote-name branch-name
刪除遠程倉庫的遠程分支,之后Push一個同名的分支,即可解決Push報錯問題
合并提交
這個是用變基命令,重寫歷史的一部分。
可以運用
git rebase -i HEAD~num
在通過指定pick squash等內容來實現合并幾次提交。
把出現在下方的提交,標記為squash,即可讓這幾次提交被合并。
挑揀
提交樹依賴情況
git cherry-pick e43a6
挑揀后
注意配合分支命令。branch 可以隨時指定某個任意的提交id來創建分支,這非常方便和重要,參考可以自由在提交樹上移動。在提交樹上自由移動,參考游戲中學git
提交多次但是合并請求審核時:審核者要求一次合并請求對應一次提交編譯審核。
可能會想到的解決問題的命令是revert reset rebase cherry-pick等等,但是其實用branch就可以。
因為branch 可以隨時指定某個任意的提交id來創建分支,所以可以把這多次提交,指定為多個分支,push時創建并push到分別的遠程分支上即可做到一次提交對應一個合并請求。
移動到某次提交的狀態
這是在提交樹上自由移動的一種延伸用法。
git branch branch-name commit-id
可以給某個提交id指定分支名,這樣,就可以方便地切換到這一分支,也就是可以隨時切換到某次提交的狀態,便于將來可能的Push。
重構提交樹
branch :隨時給提交id指定分支名即創建對應分支
cherry-pick: 隨時挑揀需要的提交到當前分支
rebase: 方便的變基
以上三條命令,交替結合使用,可以非常方便的構建出自己想要的提交樹形態。
git變基重寫歷史push前與push后
代碼提交到git上有一套規范。比如提交日志的寫法。
git push reponame branchname
再提交 commit 之后,可能有點微調,可能就是想調整一下提交信息。
那么使用
git commit --amend
就可以了。
這個命令我理解為對 git rebase -i HEAD~ 的一種簡單封裝。
想要干凈的提交樹。分以下兩種情況。
push之前重寫歷史
這主要就是使用 git rebase -i 注意有的之前使用過 rebase 的,可能日志信息條數被壓縮過。
在push之前重寫歷史,是最容易的。在Progit 中文第二版242頁中,有詳細介紹,不贅述。
push之后重寫歷史
這是我的認知盲區,對分支使用不熟練,潛意識里不敢刪除分支,其實在git里這種擔心很沒有必要,隨時新建一個分支,刪除一個分支。在 push 了一堆無效提交到遠程倉庫后,想要重建一個干凈的提交樹。
那么在沒有別人在使用 push 成果的情況下,可以直接
git push reponame --delete branchname
把本地通過 rebase 調整過的提交樹 push 上去就可以了。
git push reponame branchname
附錄
在使用 rebase 重寫歷史的時候。
注意處理沖突,處理完后要
git rebase --continue
繼續確認提交日志信息。
同時要確認清楚多個修改過的信息。
同時,多用 git status 和 git add 確認修改被git記錄到。
資料就是Progit中文第二版和交互式教程https://learngitbranching.js.org/?locale=zh_CN
總結
以上是生活随笔為你收集整理的git重构提交树:分支、变基和挑拣提交的用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 皮肤渲染技术
- 下一篇: Unity SRP自定义渲染管线 --