毎回ググっている気がするので,ここでまとめておく.

別のブランチからファイルやディレクトリを現在に持ってくる

現在のブランチ master から,devel ブランチで変更したファイル cfg/modified.txt や新たに作成したディレクトリ lib/project/newPackage を持ってくる.

$ git branch
*master
 devel
$ git status
modified:
cfg/modified.txt
$ git checkout devel -- cfg/modified.txt

ディレクトリも同様.

$ git checkout devel -- lib/project/newPackage

link

ブランチのリストを表示する,local/remoteのブランチを削除する

ブランチのリストは

$ git branch
*master
 devel
 experimental

で表示する.ローカルのブランチを削除するには

$ git branch -d experimental

リモートのブランチを削除するには

$ git push --delete origin experimental

トピックブランチに上流の変更を取り込む

自分のトピックブランチが上流の develop ブランチから分岐しており,独自に変更を加えながらも本家の develop の更新も取り込みたい.その場合

(topic)$ git fetch -p
(topic)$ git merge origin/develop

とする.

ブランチ間の差分を表示

src ブランチからの dst ブランチの,hoge ディレクトリ(あるいはファイル)の差分を表示するには

$ git diff src dist -- hoge

リモートで削除されたブランチをローカルでも削除

$ git remote prune origin # OR
$ git fetch --prune

一時的に変更を無視する

今複数のファイルが変更されており,commitするためには全ての変更をステージングしなければならない.今回はまだステージングしたくないファイルの変更がある際,update-indexで一時的に(変更状態を保存しつつ)gitでは変更されていない扱いをすることができる.

$ git updte-index --skip-worktree hoge.txt

commitした後再度変更されているステータスに戻すには

$ git updte-index --no-skip-worktree hoge.txt

すればよい.