git 筆記

03/21

git config --list
  - 列出config內容

git log [可用集合的方式加增減]
  - git log ^A ^B C => 表示不包含A和B,但有C的commit

git bisect start
  - 開始搜尋
git bisect bad/good
  - 第一次bad/good是用git定位revision是好或不好的
  - 之後使用bad/good是回答git,目前的revision是好或不好的
git bisect reset
  - 回復原有的branch

git show-branch A B
  - 顯示branch A B之間的commit
git ls-files -s
  - 列出object和files的對照表
git cat-file -p SHA
  - 列出特定object的內容
git show SHA:/path/to/file
  - 顯示特定版本的檔案內容

git checkout --ours/--theirs
  - 選擇在衝突時,是選擇目前的或對方的分支
git diff --theirs
  - 出現衝突時,顯示對方的分支與目前的版本的差別
git diff :[SHA]:[FILE] :[SHA]:[FILE]
  - 顯示不同版本檔案的差別

合併方式:
  - 退化的合併
    a. 已是最新: 不合併,因為已經有最新的revision
    b. 快轉 (fast-forward): 只將HEAD移動到最新的revision,因為有相同的revision
  - 正常的合併
    a. 解決
    b. 遞迴
    c. 章魚
  - 特別的合併
    a. 我們的
    b. 子樹
git merge -s [合併策略]

git checkout v2.3 -- path/to/file.c
  - 取出 v2.3 的 file.c (還原到v2.3的file.c)

03/28

HEAD => 目前最新的commit

ORIG_HEAD => 某些動作,如merge or reset,會將前一版的HEAD放到ORIG_HEAD

FETCH_HEAD => 上一次執行fetch的HEAD,僅在執行後有效

MERGE_HEAD => merge後的HEAD

git rev-parse master
  - 取得master的SHA

git remote rm
  - 移除指定的遠端容器

git remote add origin [URL]
  - 新增遠端倉庫

git remote update
  - 更新遠端倉庫

git remote show origin
  - 顯示遠端倉庫的資訊

git branch local_branch origin/remote_branch
  - 建立一個local branch與遠端branch進行連結

refspec語法: [+] source : destination
1. 只用 source => git push origin foo => 建立branch
2. 只用 destination => git push origin :foo => 刪除branch

git clone --reference/--local/--shared => 節省空間

git rev-list --no-merges -v since..until => 檢驗since到until會有那些集合

留言