毎回ググっている気がするので,ここでまとめておく.
別のブランチからファイルやディレクトリを現在に持ってくる
現在のブランチ 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
ブランチのリストを表示する,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
すればよい.