當(dāng)用 /bin/rm 命令刪除了大量文件之后,你可以用下面一條命令從工作區(qū)和索引中去除這些文件,以免一個(gè)一個(gè)的刪除:
$ git rm $(git ls-files -d)
例如:
$ git status
On branch master
Changes not staged for commit:
deleted: a
deleted: c
$ git rm $(git ls-files -d)
rm 'a'
rm 'c'
$ git status
On branch master
Changes to be committed:
deleted: a
deleted: c
快速檢出上一個(gè)分支:
$ git checkout -
# Switched to branch 'master'
$ git checkout -
# Switched to branch 'next'
$ git checkout -
# Switched to branch 'master'
Git Stripspace 命令可以:
使用此命令時(shí)必須傳入一個(gè)文件,像這樣:
$ git stripspace < README.md
對(duì) Github 倉(cāng)庫(kù)來(lái)說(shuō),Pull Request 是種特殊分支, 可以通過(guò)以下多種方式取到本地:
取出某個(gè)特定的 Pull Request 并臨時(shí)作為本地的 FETCH_HEAD 中以便進(jìn)行快速查看更改( diff )以及合并( merge ):
$ git fetch origin refs/pull/[PR-Number]/head
通過(guò) refspec 獲取所有的 Pull Request 為本地分支:
$ git fetch origin '+refs/pull/*/head:refs/remotes/origin/pr/*'
或在倉(cāng)庫(kù)的.git/config
中加入下列設(shè)置來(lái)自動(dòng)獲取遠(yuǎn)程倉(cāng)庫(kù)中的 Pull Request
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git@github.com:tiimgreen/github-cheat-sheet.git
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git@github.com:tiimgreen/github-cheat-sheet.git
fetch = +refs/pull/*/head:refs/remotes/origin/pr/*
對(duì)基于派生庫(kù)的 Pull Request,可以通過(guò)先 checkout 代表此 Pull Request 的遠(yuǎn)端分支再由此分支建立一個(gè)本地分支:
$ git checkout pr/42 pr-42
操作多個(gè)倉(cāng)庫(kù)的時(shí)候,可以在 Git 中設(shè)置獲取 Pull Request 的全局選項(xiàng)。
git config --global --add remote.origin.fetch "+refs/pull/*/head:refs/remotes/origin/pr/*"
此時(shí)可以在任意倉(cāng)庫(kù)中使用以下命令:
git fetch origin
git checkout pr/42
可以使用--allow-empty
選項(xiàng)強(qiáng)制創(chuàng)建一個(gè)沒(méi)有任何改動(dòng)的提交:
$ git commit -m "Big-ass commit" --allow-empty
這樣做在如下幾種情況下是有意義的:
在命令行輸入如下命令:
$ git status
可以看到:
http://wiki.jikexueyuan.com/project/github-secret/images/gh29.png" alt="" />
加上-sb
選項(xiàng):
$ git status -sb
這會(huì)得到:
http://wiki.jikexueyuan.com/project/github-secret/images/gh30.png" alt="" />
輸入如下命令:
$ git log --all --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
可以看到:
http://wiki.jikexueyuan.com/project/github-secret/images/gh31.png" alt="" />
這要?dú)w功于Palesz在 stackoverflow 的回答。
這個(gè)命令可以被用作別名,詳細(xì)做法見(jiàn)這里。
Git 查詢(xún)運(yùn)行你在之前的所有提交信息里進(jìn)行搜索,找到其中和搜索條件相匹配的最近的一條。
$ git show :/query
這里 query (區(qū)別大小寫(xiě))是你想要搜索的詞語(yǔ), 這條命令會(huì)找到包含這個(gè)詞語(yǔ)的最后那個(gè)提交并顯示變動(dòng)詳情。
$ git show :/typo
http://wiki.jikexueyuan.com/project/github-secret/images/gh32.png" alt="" />
按 q 鍵退出命令。
輸入命令:
$ git branch --merged
這會(huì)顯示所有已經(jīng)合并到你當(dāng)前分支的分支列表。
相反地:
$ git branch --no-merged
會(huì)顯示所有還沒(méi)有合并到你當(dāng)前分支的分支列表。
如果上一個(gè)或多個(gè)提交包含了錯(cuò)誤,可以在你修復(fù)問(wèn)題后使用下列命令處理(假設(shè)要修復(fù)的提交版本是 abcde):
$ git commit --fixup=abcde
$ git rebase abcde^ --autosquash -i
使用 Git 的 instaweb 可以立即在 gitweb 中瀏覽你的工作倉(cāng)庫(kù)。這個(gè)命令是個(gè)簡(jiǎn)單的腳本,配置了 gitweb 和用來(lái)瀏覽本地倉(cāng)庫(kù)的 Web 服務(wù)器。(譯者注:默認(rèn)需要 lighttpd 支持)
$ git instaweb
執(zhí)行后打開(kāi):
http://wiki.jikexueyuan.com/project/github-secret/images/gh33.png" alt="" />