&tag(git/運用);

目次[edit]

参考情報[edit]

リポジトリの初期化[edit]

フォルダに移動しgit initを実行するだけ。

mkdir myproduct
cd myproduct
git init

ファイルを追加[edit]

現在のフォルダ以下のファイルをすべて追加[edit]

git add .

指定ファイルを追加[edit]

git add sample.txt

バージョン管理しているファイルをすべて追加[edit]

git add -u

バージョン管理しているファイル&新規ファイル[edit]

git add -A

.gitignore[edit]

バージョン管理から除外したいファイルはリポジトリのルートディレクトリに.gitignoreファイルを作成する

*~

コミット[edit]

ログを直接指定[edit]

"-m"オプションでログを直接記録できる

git commit -m "sample.txt added"

エディタでログを指定[edit]

"-m"オプションを使わない場合エディタが立ち上がる。

一括コミットしたい場合[edit]

git commit -a

変更点を確認しつつコミットログを書く[edit]

git commit -v

特定ファイルだけcommit[edit]

git commit sample.txt

特定ファイルの変更記録要求を取り消す[edit]

git reset sample.txt

変更点の確認[edit]

変更記録をリクエストしてない変更点の表示[edit]

git diff

git diffコマンドはgitに変更点を記録したいとリクエストしてない変更点を出力するので変更されたファイルをgit addすると表示されなくなる。

commitしていない変更点を表示[edit]

git diff HEAD

部分変更をインデックスに記録した場合の変更点の表示[edit]

git diff --cached

状態の記録をリクエスト[edit]

git addコマンドを使って状態の記録をリクエスト(=インデックスに記録)することができる。

個別にファイルを指定[edit]

git add sample.txt

バージョン管理しているすべてのファイル[edit]

git add -u

部分変更[edit]

変更点が2箇所以上ある場合、変更箇所を確認しながらaddする箇所を選定できる。

git add -p

状態の確認[edit]

git status

履歴の表示[edit]

ログを表示する[edit]

git log --pretty=short

パスで検索する[edit]

git log --pretty=short sample.txt

ログメッセージをgrep検索する[edit]

git log --pretty=short grep='xxx'

変更を取り消す[edit]

過去のコミットを取り消す[edit]

git revert xxxxx

ワークツリーの変更を取り消す[edit]

インデックスに記録されている状態に戻す

git checkout sample.txt

最新のコミットの状態に戻す

git checkout HEAD sample.txt

コミットをなかったことにする[edit]

git reset HEAD^を使う。部分コミットしたい場合に間違えたときなどに使う。

git commit -a # 間違えたコミット
git reset HEAD^ #現在のヘッドの一つ前に戻る。

ワークツリーの内容も戻す場合

git reset --hard HEAD^

コミットをやり直す[edit]

ログメッセージを記録し直したい場合に使う。git reset HEAD^→ git commitのような感じ。

git commit --amend

二つ以上前のコミットを書き換える[edit]

HEADから3つ前のコミットを書き換える場合。

git rebase -i HEAD-3

実行するとエディタで指示票の編集画面が表示されるので、pick→editに書き換え保存する。

pick xxxxxx あれをこうした
pick yyyyyyy それをあれした
pick zzzzzz  それからこうなった。

最初の行のコミットを書き換える場合

edit xxxxxx あれをこうした
pick yyyyyyy それをあれした
pick zzzzzz  それからこうなった。

コミットを修正。

git commit --amend

続く混みとを反映する

git rebase --continue

バックアップリポジトリを作成する[edit]

空リポジトリの作成[edit]

/home/repository/sample.gitディレクトリに空のリポジトリを作成する。

$ mkdir -p /home/repository/sample.git
$ cd /home/repository/sample.git
$ git --bare init

オリジナルワークツリーの内容をpush[edit]

$ cd <ワークツリー>
$ git push /home/repository/sample.git master

バックアップリポジトリからcloneして使う[edit]

$ git clone /home/repository/sample.git sample.new

cloneしたワークツリーの内容をpush[edit]

ざっくり書くと 「git push <反映先> <反映もと>」となる。

$ git push (git push origin masterと同じ)

共同開発[edit]

マージ[edit]

git pullとgit pushを駆使する。この辺はCSV、Subversionと同じような感じか。

共用リポジトリ[edit]

ブランチ[edit]

ブランチを作る[edit]

"bugfix-a"というブランチを作り、ワークツリーをそのブランチに切り替える

git checkout -b bugfix-a

以下のコマンドと同じ

git branch bugfix-a
git checkout bugfix-a

現在のブランチを表示する[edit]

git branch

ブランチを切り替える[edit]

git checkout master
git checkout bugfix-a

ブランチの内容を併合する[edit]

バグフィックス用のブランチbugfix-aで行った変更をメインブランチに併合するには

git checkout master
git merge bugfix-a

ブランチを後から作る[edit]

現在のワークツリーの内容をブランチとして、3つ戻ったところをマスターとする。

git branth bugfix-b
git reset --hard master-3

ブランチ移動の際の変更[edit]

ブランチ移動の際にワークツリーでコミットされていないファイルがある場合混乱することがある。 現在bugfix-cブランチにいてmaster→bugfix-cに戻るとき次のようにする。

git stash
git checkout master
<masterブランチでいろいろ修正>
git checkout bugfix-c
git stash pop

リモートリポジトリ定義[edit]

リモートリポジトリに対するエイリアス定義のようなもの?

git remote add sample git://repo.aaa.com/git/sample.git

とすれば以後 git fetch sampleとすれば最新の状態をコピーすることができる。

公開リポジトリ[edit]

トラブルシューティング[edit]


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS