Git commit合並操作 以及Reset參數理解


git cmd中文亂碼解決:

git config --global i18n.commitencoding utf-8
git config --global i18n.logoutputencoding utf-8
export LESSCHARSET=utf-8

多余多次commit 的合並

使用git log查看需要合並的commit
git rebase -i commitId
或者git rebase -i HEAD~1 修改倒數第1次的commit

其中,-i 的參數是不需要合並的 commit 的 hash 值,這里指的是第一條 commit, 接着進入到 vi 的編輯模式

pick 要會執行這個 commit
squash 這個 commit 會被合並到前一個commit
reword 使用commit,但可編輯這條commit信息
edit 使用commit, 但停止正在執行的amend
fixup 類似squash, 但會丟棄這條commit信息
drop 移除commit

Git Reset 三種模式

reset --mixed 參數(默認)。
它的行為是:保留工作目錄,並且清空暫存區。
工作目錄的修改、暫存區的內容以及由 reset 所導致的新的文件差異,都會被放進工作目錄。
簡而言之,就是「把所有差異都混合(mixed)放在工作目錄中」

--hard
重置位置的同時,直接將 working Tree工作目錄、 index 暫存區及 repository 都重置成目標Reset節點的內容,所以效果看起來等同於清空暫存區和工作區

--soft
重置位置的同時,保留working Tree工作目錄和index暫存區的內容,只讓repository中的內容和 reset 目標節點保持一致
因此原節點和reset節點之間的【差異變更集】會放入index暫存區中(Staged files)。
所以效果看起來就是工作目錄的內容不變,暫存區原有的內容也不變,只是原節點和Reset節點之間的所有差異都會放到暫存區中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM