Skip to content

Latest commit

 

History

History
79 lines (61 loc) · 2.52 KB

03.md

File metadata and controls

79 lines (61 loc) · 2.52 KB

Git

基本指令

  • 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 (檢查多餘的空白)

Git 基本設定

  • 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 有兩個以上, 如何同步更新

假設 remote branch 有 master, beta branches, 而 beta 是從 master 開出來的一個 branch. 若在 master 新增了幾個 commit, 而需要更新至 beta, 可用以下步驟:

  1. git checkout master
  2. git fetch
  3. git rebase
  4. git checkout beta
  5. git rebase
  6. git rebase master / git merge master
  7. git push
  • rebase: 會每一個 commit 都去比較, 費時但記錄留著
  • merge: 只比較最後更變的檔案, 快速但要小心比較

Branch 管理

  • git flow init
  • git flow feature finish feature_name
  • git flow feature publish featuer_name
  • git flow feature track feature_name

Git flow - 管理 branches 的最佳實踐


tags: git