Tag: git/運用

目次

参考情報

リポジトリの初期化

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

mkdir myproduct
cd myproduct
git init

ファイルを追加

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

git add .

指定ファイルを追加

git add sample.txt

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

git add -u

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

git add -A

.gitignore

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

*~

コミット

ログを直接指定

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

git commit -m "sample.txt added"

エディタでログを指定

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

一括コミットしたい場合

git commit -a

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

git commit -v

特定ファイルだけcommit

git commit sample.txt

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

git reset sample.txt

変更点の確認

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

git diff

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

commitしていない変更点を表示

git diff HEAD

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

git diff --cached

状態の記録をリクエスト

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

個別にファイルを指定

git add sample.txt

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

git add -u

部分変更

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

git add -p

状態の確認

git status

履歴の表示

ログを表示する

git log --pretty=short

パスで検索する

git log --pretty=short sample.txt

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

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

変更を取り消す

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

git revert xxxxx

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

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

git checkout sample.txt

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

git checkout HEAD sample.txt

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

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

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

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

git reset --hard HEAD^

コミットをやり直す

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

git commit --amend

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

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

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

空リポジトリの作成

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

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

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

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

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

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

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

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

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

共同開発

マージ

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

共用リポジトリ

ブランチ

ブランチを作る

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

git checkout -b bugfix-a

以下のコマンドと同じ

git branch bugfix-a
git checkout bugfix-a

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

git branch

ブランチを切り替える

git checkout master
git checkout bugfix-a

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

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

git checkout master
git merge bugfix-a

ブランチを後から作る

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

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

ブランチ移動の際の変更

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

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

リモートリポジトリ定義

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

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

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

公開リポジトリ

トラブルシューティング


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