入門git

基本操作

Git リポジトリを新たに作成する
git init

新規プロジェクト作成の時に使います。

リモートリポジトリの追加
git remote add origin git@hoge.github.com:hogehoge/hoge.git
既存のリポジトリのクローン
git clone git@hoge.github.com:hogehoge/hoge.git
現在の編集状況等と確認
git status
編集したファイルを追加
git add -A
  • 'git add -A' = 'git add .' + 'git add -u'である。
    • 'git add .' = ワーキングツリーに作成, 変更されたファイルをadd
    • 'git add -u' = 一つ前と最新のステージを比較して、add
作業ツリーと最新のコミットの差分を確認
git diff HEAD
コミット(メッセージ付き)
git commit -m"hogehoge"
gitリポジトリにpush
git push -u origin master

gitのoriginというリモートリポジトリのmasterブランチにプシュするよ

リモートリポジトリの最新をローカルに反映
git fetch  
git merge origin/master

ブランチで作業を行う

今いるブランチを確認
git branch
"feature-A"のブランチを作成して移動
git checkout -b feature-A
  • feature-Aで作業でごにょごにょ作業
  • feature-Aでgit add -A
  • feature-Aでgit commit -m"hoge"
masterの戻ってそっちが特に変更されていないか一応確認
git checkout master

一つ前のチェックアウトに戻る場合

  • git checkout -
マージを行う(feature-Aをmasterにmerge)
git merge --no-ff feature-A
マージした結果を確認
git log --graph
もしコンフリクトが起きたら

Auto-merging fix-b CONFLICT (content): Merge conflict in fix-b Automatic merge failed; fix conflicts and then commit the result.

masterで対象のファイルを開き、編集をしてgit add ,commitすればOK

local変更を破棄
git reset --hard HEAD
過去のcommitの時点に戻る
git reset --hard ハッシュ値

ハッシュ値は、git logでコミット履歴がみれるのでそこから戻りたいコミットを指定。

fork、そしてpull request

誰かのGitHubリポジトリをforkします。
リポジトリ名は適当に変更。

自分のリポジトリにforkしてきたら、ローカルにcloneする

git clone git@hoge.git

ローカルで作業します。

  • 作業用にさらに別のブランチ(prototypeなどの名前にしておく)を作る事。修正したり何度もcommitしたり、最初からやり直したりするので。
    そのための作業用ブランチを別に切っておく
 git push origin prototype

fork元の更新に追随します(別途)
GitHubにブランチをpushします。

GitHubからpull requestを送ります。

絶対にmasterブランチで作業は駄目!

masterブランチからpull requestを送るのも駄目!

その他の作業

直前のコミットメッセージを変更したい
git commit --amend
簡単な編集、そしてコミットを同時に実行する
git commit -am"hogehoge"
  • add と commit を同時に実行している。
    ファイルを追加した場合は使えないのであしからず

ファイルの差分も一緒に表示

git log -p
commitを一つにまとめてと言われた場合
//一つ前のcommitとまとめる
git rebase -i HEAD~~
//編集画面になったら、他の纏めたいcommitの「pick」 を 「s」 に変えて保存
  • sourcetreeの使い方 コミット時に「オプションのコミット」で一つ前のコミットとまとめる事が出来る

rebaseは使わない(もうちょっとgitを理解してから使おう)

【git】分かりやすく!mergeは「合流」、rebaseは「付け替え」! | NullNote

Git pullを使うべきでない3つの理由 · DQNEO起業日記

pull-request が飛んできた時の対応

pull-request がmaster に飛んできたときの対応 - その手の平は尻もつかめるさ