LoginSignup
136
133

More than 5 years have passed since last update.

再入門のためのGitまとめ

Last updated at Posted at 2014-03-06

やっておくと捗る設定

ユーザー情報を設定

git config --global user.name "Hanako Yamada"
git config --global user.email "username@example.com"

--no-ff フラグをデフォルトにする

--no-ffフラグは常にNone Fast fowardなマージを強制します。

git config --global merge.ff false

引数無しのgit pushを現在のブランチのみに限定する

git config --global push.default simple

UTF-8問題解決設定

git config --global core.precomposeunicode true

色付け

git config --global color.ui auto
git config --global color.diff auto
git config --global color.status auto
git config --global color.branch auto

git diffの出力をページャ対応にする

git config --global core.pager "lv -c"

主要コマンド

ローカルリポジトリの作成

git init
git-flowで初期化するなら
git flow init -d

共有リポジトリの作成

git init --bare example.git

変更されたファイルの一覧を表示

git status -s -b

変更の確認(add前)

git diff

変更したファイルを追加

git add ファイル名

新規作成されたファイルを全て追加

git add -A

変更/削除されたファイル(新規作成除く)を追加

git add -u

変更の確認(コミット前)

git diff --staged

または

git diff --cached

コミット

git commit -m "コメント"

変更の確認(コミット後)

git show

または

git diff HEAD

直前のコミットを取り消す

git reset

コミットにタグを付ける

git tag <タグ名>

リポートリポジトリの登録

git remote add origin リポジトリ

リモートへpush

初回
git push -u origin master
(同じブランチなら)2回目から
git push

現在の状態を元にブランチを作成し移動

git checkout -b new-branch

現在のブランチを表示

git branch

ブランチ切り替え

git checkout new-branch

現在の作業中の状態をコミットせずに一時的に保管する

git stash <保存名もしくはコメントなど>

stashで保存した作業ツリーに戻る

git stash pop

すでに版管理対象になっているものを管理から外す

git rm -r --cached hoge

ブランチの変更をマージ

git checkout master
git merge topic/hoge

現在のブランチの状態を、派生元のブランチの最新の状態から派生するよう変更する

※共有ブランチをrebaseするとpushできなくなるので気をつける

git rebase <派生元ブランチ>

リモートの状態をローカルに反映

git pull

rebaseしてpull

git pull --rebase

リモートの状態をローカルに保存(マージはしない)

git fetch

リモートリポジトリをローカルにコピー

git clone ssh://[ユーザー名@]<ホスト名>[:ポート番号]/<Gitリポジトリのパス>

変更履歴を参照

git log

Git-flow

初期化

git flow init -d

メインブランチ

masterブランチとdevelopブランチ

  • origin/master は、製品として出荷可能な状態を常に反映する
  • origin/develop は、次のリリースのための最新の開発作業の変更を常に反映する
  • develop ブランチのソースコードが安定し、リリースの準備ができたとき、 develop ブランチの全ての変更は master ブランチへマージされ、リリース番号をタグ付けされる
  • master へ変更がマージされる時はいつも、その定義からして新しい製品がリリースされる時

サポートブランチ

フィーチャーブランチ(トピックブランチ)

  • 将来のリリースに入るような新しい機能を開発するのに使われる。
  • develop ブランチから分岐する。
git flow feature start myfeat
  • 確実に今度のリリースに追加する、開発済みの機能は、develop ブランチにマージされる
  • フィーチャーブランチは典型的には開発者のリポジトリにだけ存在し、 origin には存在しない。
git flow feature finish myfeat

リリースブランチ

  • リリースブランチは develop ブランチから作成される。
  • リリース直前のマイナーなバグフィクスや、リリースのためのメタデータ(バージョン番号、ビルド日時、他)の準備を行う
git flow release start v1.0
  • リリースが終わった後、develop と masterにマージし、リリースブランチは削除される。
git flow release finish v1.0

ホットフィックスブランチ

  • ホットフィックスブランチは master ブランチから作成される。
  • 製品バージョンにあるクリティカルなバグがすぐに解決されなければならないとき、作成される。
git flow hotfix start v1.0.1
  • バグを修正し、develop と master にマージした後、削除される。
  • ※リリースブランチが存在していたら、develop の代わりにリリースブランチにマージする
git flow hotfix finish v1.0.1

Github Flow

Git Flow を簡略化し、Pull Requestによるコードレビューを取り入れたもの。

  • developブランチは作成しない。
  • 全てのブランチはmasterブランチから作成し、masterブランチへマージされる。
  • 作業用のブランチは定期的にリモートへプッシュする。
  • GitHubのプルリクエストの機能を利用して、ソースコードのレビューを行った後、masterブランチにマージする。
  • マージされたmasterブランチのコードは、すぐにデプロイする。

pull requestする際のベストプラクティス

GitHubへpull requestする際のベストプラクティス - hnwの日記

フックの設定

pushしたら自動デプロイ

リモートリポジトリ/.git/hook/post-updete
cd /var/www/app_production && /usr/bin/git --git-dir=.git fetch && /usr/bin/git --git-dir=.git merge origin

GUI

SourceTree

Free Mercurial and Git Client for Windows and Mac | Atlassian SourceTree

学習ツール

Learn Git Branching

リポジトリホスティングサービス

GitHub

GitHub

  • 公開リポジトリ無料/無制限
  • Privateリポジトリは有料(5個/月7ドル 〜 50個/月50ドル)

Bitbucket

Bitbucket

  • 公開リポジトリ無料/無制限
  • Privateリポジトリ無料/無制限
  • 5ユーザまで無料
  • 日本語対応

参考URL

見えないチカラ: A successful Git branching model を翻訳しました
見えないチカラ: 【翻訳】あなたの知らないGit Tips
Gitブランチを使いこなすgit-flow/GitHub Flow入門(1):いまさら聞けない、成功するブランチモデルとgit-flowの基礎知識 (1/2) - @IT
github を用いた開発フロー テンプレート
gitのpush.defaultに関するノウハウ - Qiita
Linux - Gitをインストールしたら真っ先にやっておくべき初期設定 - Qiita
Gitを使いこなすための20のコマンド | SourceForge.JP Magazine
チーム開発に必要なgit コマンドを神速で習得しよう! - 酒と泪とRubyとRailsと
逆引きGit | サルでもわかるGit入門 〜バージョン管理を使いこなそう〜 | どこでもプロジェクト管理バックログ
git - fetch と pullの違い - Qiita

136
133
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
136
133