2013年9月12日 星期四

git vim 常用指令筆記

git clone
git fetch [--prune]
git push [--set-upstream]
git log
git add [-p]
git rm
git commit [-m] [-F] [--amend [--no-edit]]
git checkout
git branch [-D]
git reset
git rebase
git cherry-pick
git merge
git blame

git 將本地倉庫強制上傳至遠端
git push origin +master

undo rebase
git reset --hard ORIG_HEAD

git log 輸出第一行,指定日期及作者git log --pretty=oneline --abbrev-commit --after="2019-01-01" --until="2019-02-01" --author="name"

找回沒有ref(branch or tag)的commit,如不小心reset branch後可以用reflog顯示最近的HEAD所在的commit點,就會看到reset前的commit,可以用checkout或reset回到之前的commit
git reflog

change file mode
git update-index --chmod=-x file


清理git倉庫
查看unreachable
git fsck --unreachable

因為reflog會把reset與rebase等動作的來源記錄起來,該來源仍reachable無法被清理,所以要用底下指令清除reflog
git reflog expire --expire=5.days.ago --expire-unreachable=now --all

清除unreachable
git gc --aggressive --prune=now



vim 刪除行尾的多餘空白
:% s/\s\+$//g
語法 :[範圍] s/搜尋目標/取代/[選項] [次數]
[範圍] % 表示全文
搜尋目標 \s 表示空白, \+表示出現一次以上, $表示行結尾,
        所以搜尋行尾的空白
取代 空字串 表示取代成空字串也就是刪除
[選項] g 表示取代本行中所有符合的項目
[次數] 省略

:tabe
:sp
:vsp
:set
:q
:w

以unix格式顯示檔案內容
:e ++f=unix
若有dos格式的換行crlf則會在行尾顯示"^M"

將檔案轉成unix格式
:set fileformat=unix