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節點之間的所有差異都會放到暫存區中。