- git status (看狀態,modify: 修改, untracked: 新增, delete: 刪除)
- git log (看此 branch 的狀態)
- git add -A (把所有 untracked file 加入)
- git commit -- amend (修改 commit)
- git blame (查看此檔案是誰修改)
- git branch -D (砍 branch)
- git checkout -b work origin/master (開一個 work branch 指向 origin/master)
- git push ssh:XXXX HEAD:refs/for/master (推 code 至遠端 branch,若沒打 HEADXXXX 則直接進 repo)
- git rebase --continue (解完 conflic 用)
- git rebase --skip (不理會 conflic 繼續做其他事情)
- git rebase --abort (放棄 conflic)
- git push --rebase (拉 code 至本機並且 rebase 至 HEAD)
- git reset --soft HEAD~1 (打掉上一包 commit)
- git diff --check (檢查多餘的空白)
- cat ~./gitconfig <-- 查看檔案內容
- git config --global user.name ""
- git config --global user.email ""
- git config --list
- git config --global alias.xx xxxcommand
- git status
- git config --global apply.whitespace nowarn
- git config --global color.ui true
我的 code 改爛了我想全部重來,我要如何快速回到乾淨的目錄? git reset --hard 這指令會清除所有與最近一次 commit 不同的修改。 merge 過程中發生 confict 我想放棄 merge,要如何取消 merge? 一樣使用 git reset --hard 可以取消這次的 merge。 如何取消這次的 merge 回到 merge 前的狀態? git reset --hard ORIG_HEAD 這指令會取消最近一次成功的 merge 以及所有你在這次 merge 後所做的修改。 如何回復單獨檔案到原本 commit 的狀態? git checkout 檔案名稱 這指令會將已經被修改過的檔案回復到最近一次 commit 的樣子。
假設 remote branch 有 master, beta branches, 而 beta 是從 master 開出來的一個 branch. 若在 master 新增了幾個 commit, 而需要更新至 beta, 可用以下步驟:
- git checkout master
- git fetch
- git rebase
- git checkout beta
- git rebase
- git rebase master / git merge master
- git push
- rebase: 會每一個 commit 都去比較, 費時但記錄留著
- merge: 只比較最後更變的檔案, 快速但要小心比較
- git flow init
- git flow feature finish feature_name
- git flow feature publish featuer_name
- git flow feature track feature_name