Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                




分散バージョン管理 Git 役立つコマンド一覧



複数の人とプログラムなどの編集を行う場合、Gitのようなファイル変更履歴を管理するためのシステムが多用されます。

Google Code もGitに対応したのでコマンドの一覧を載せておきます。

スポンサードリンク

主なコマンド一覧

git fetch すべてのリモートブランチをコピーする
git branch -r リモートブランチの一覧を表示する
git checkout (ブランチ名) ブランチの切り替え
git clone (レポジトリ名>) 既存のリポジトリの複製をローカルに作る
git pull ほかのリポジトリの変更点をローカルリポジトリにマージする
git add コミットするファイルを指定する
git diff ファイルに加えられた変更点をdiff形式で表示する
git status 変更が加えられたファイルを表示する
git commit 変更点をコミットする
git commit --amend 前のコミットをやめて、上書きコミット。直前のコミットログの修正に使える
git push 公開リポジトリに自分のリポジトリの内容を送信する
git show-branch ブランチの作成/変更/マージ履歴を表示
git rm --cached git addと対をなすコマンド
git remote リモートリポジトリの一覧を表示
git remote show origin 詳細を表示
git checkout (commit番号) コミット番号のデータを取得する
git reset --hard HEAD コミット前に全部、弄る前に戻したいってとき
git reset --hard HEAD^ コミットしちゃった後で1つ前のコミットに戻す(使うべきじゃない)
git reset --hard ローカルの全てのファイルを最新に変更する
git clean -fd ローカルのuntrackedファイル、空ディレクトリを消す
git mv ファイルを移動・リネームする
git branch -d (ブランチ名) ローカルブランチを削除
git branch -D (ブランチ名) ローカルブランチを強制的に削除
git show (commit番号) コミットされた情報を取得する

コマンドのTips

コミットしたlogの一覧を取得する

$ git log --pretty=oneline

cfd4e77149fed627e8bc4e35c53414da55b06b63 ログの追加
e4475b4aa4b5e171ac3b532653d2a3c7bb195b0d Aの機能を追加
fec72a79413f5bcfd059695b4268f429df0497db Bの機能を追加
234bc1a2aca4a1eae32b218f23849e5dec8650ba コメントの削除
713260425bde9863ab0577e389be3639923fd10f コメントの追加
....

ヘッドにリセット(git から落としてきた状態にする方法)

$ git reset --hard HEAD ; git clean -fd

ファイルの修正後にビルド失敗したりして、手元のファイルの状態がよく分からない時に役に立ちます。

最新状態に更新する方法(不要なファイルは削除される)

git reset --hard HEAD
git clean -fd
git pull --rebase -v

更新

$ git pull

コミット情報を取得する

$ git show (commit番号)

ブランチを作成する

$ git branch -r
  origin/Hoge/hage
  origin/Hoge/fuge → ブランチの一覧が表示される
$ git fetch
$ git checkout -b Hoge/hoge master  // Hoge/hogeという作業用のブランチを切る
$ git checkout master  // "Merge the remote changes before pushing again." とエラーがでる場合
$ git pull
$ git checkout Hoge/hoge
$ git push origin Hoge/hoge
$ git branch -r

hogeブランチにmasterをマージする

$ git checkout master
$ git pull --rebase -v // masterを最新に, +verbose
$ git checkout Hoge/hoge
$ git merge master
$ git push origin Hoge/hoge:refs/heads/deploy

修正したファイルを push(サブミット)する

$ git add .
$ git commit -m "コメントを記載する" --author="hoge (hoge@hoge.hoge)"
$ git push

ブランチからmasterに変更してブランチをcheckoutしなおす

git checkout master
git branch -D Hoge/hoge
git checkout Hoge/hoge
git pull

ファイルの削除

git rm --cached ファイル名

フォルダの削除

git rm -r --cached フォルダ名

上記のコマンドは実ファイルは削除されません。

実ファイルごと削除

git rm -f ファイル名

削除されたか確認

git status

# On branch master
# Changes to be committed:
#   (use "git reset HEAD ..." to unstage)
#
#    deleted:    index.html

コミットを打ち消す。

マージコミットのrevertをするときは(Bの機能の追加まで戻したい場合)

$ git log --pretty=oneline

cfd4e77149fed627e8bc4e35c53414da55b06b63 ログの追加
e4475b4aa4b5e171ac3b532653d2a3c7bb195b0d Aの機能を追加
fec72a79413f5bcfd059695b4268f429df0497db Bの機能を追加
234bc1a2aca4a1eae32b218f23849e5dec8650ba コメントの削除
713260425bde9863ab0577e389be3639923fd10f コメントの追加
....

$ git revert fec72a79413f5bcfd059
$ git push

これは、間違えてコミットしたけどログは残したい場合に有効です。

スポンサードリンク

差分の検出

$ git log -p -2

これは各コミットの diff を表示します。また -2 は、直近の 2 エントリだけを出力します。

コードレビューのときに非常に便利で、他のメンバーが一連のコミットで何を行ったのかをざっと眺めるのに役立ちます。

$ git log -U1 --word-diff

こちらは、行単位ではなく単語単位でレビューするほうが容易な場合に役に立ちます。

単に全てのブランチを表示したい場合

$ git log --graph --all --decorate -p

git log --stat -Syairc --pickaxe-all

コミット中の他のファイルも全て表示したい場合には、--pickaxe-allオプションを指定します

ほぼ全部入りのgit log

git log  --decorate --graph --branches --tags --remotes -p
  • --oneline: 1commit 1行のみログ表示
  • --decorate: branch名、tag名などの別名を表示
  • --graph: revision graphを表示
  • --branches: 他のbranchのlogも表示
  • --tags: tagを表示
  • --remotes: remote branchなどを表示

特定のファイルのみの修正を戻す

不要になったブランチを削除します。

$ git branch -a

* master
  hoge
  origin/master

$ git branch -d hoge → これだとマージが完了していないと失敗

error: The branch 'hoge' is not fully merged.
If you are sure you want to delete it, run 'git branch -D hoge'.

$ git branch -D hoge

(付録)repo に関して

repoはAndroidのプロジェクト管理用に作られたgitの管理ツールです。

repo init

「-g」 オプションを指定すると,そのあとの sync から group 指定が有効になります。

repo sync オプション

オプション 役割
j 並列で動かすジョブの数を指定
f 失敗したとしても強制syncをする

エラー対策

error: git-remote-https died of signal 13

などとエラーになる場合は、プロジェクトを個別にSyncします。

まず、エラーになるプロジェクトを確認します

$ repo sync -f

次に、各プロジェクトごとにSyncしてみます

$ repo sync platform/packages/apps/MusicFX

ほぼ全部入りのrepo log

repo forall -pc git log --since=1.day.ago -p

「repo forall -c 任意のコマンド」で、全git repositoryに対して指定のコマンドを実行できます。

例えば、全ての「git show」が見たい場合は次のようにタイプします。

repo forall -c git show-branch

サブミット手順

repo上で作業用のブランチを作成する

repo start 適当な作業ブランチ名 .

対象のファイルをgitにcommitする

git add ファイル名
git commit → ここでエディタが立ち上がるのでコメントを記載する

repoにuploadする

repo upload

スポンサードリンク