// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents



** ローカルのブランチがどのリモートを追跡しているかを確認する [#n4b5ce6e]
 $ git branch -vv
 * master 5e1dd3a [origin/master] Merge pull request #5    <- master がorigin/masterを追跡している。

たとえば、--trackオプション(-t もおなじ) で、リモートと同名のブランチを作成したとすると
 $ git checkout --track origin/dev
 Branch dev set up to track remote branch dev from origin.
 Switched to a new branch 'dev'

 $ git branch -vv
 * dev    925a9e4 [origin/dev] closes #1,#4
   master 5e1dd3a [origin/master] Merge pull request #5
 $
origin/dev からdevが作成され、--trackオプションにより、追跡の設定も自動で行われていることが確認できました。

つぎに、ためしにローカルブランチからブランチさせてみます。ローカルのブランチからブランチを作成する場合、この場合は自動で追跡ブランチは作成されないため、、、、
 $ git checkout  -b dev2 dev   ← ローカルのdevから、dev2ブランチを作成
 Switched to a new branch 'dev2'
 $ git branch -vv
   dev    925a9e4 [origin/dev] closes #1,#4
 * dev2   925a9e4 closes #1,#4          ←追跡ブランチを表示するカッコがない
   master 5e1dd3a [origin/master] Merge pull request #5
 $
ようするに、dev2は追跡ブランチが存在しないことが確認出来きます。ややこしいのですが、リモートのブランチ origin/dev からブランチを--trackオプションで同名ブランチを作成する場合((これは、git checkout -b dev3  origin/dev などとローカルブランチ名を指定しながらブランチする場合も同様で自動で追跡される。))は、自動で追跡ブランチが設定されますが、ローカルからブランチする場合は、追跡ブランチは設定されない、という事が分かります。

ちなみに、追跡ブランチが存在しない、この状態でpushすると、、、、、
 $ git push origin dev2
 Total 0 (delta 0), reused 0 (delta 0)
 To https://github.com/xxxx/helloworld.git
  * [new branch]      dev2 -> dev2
 $
追跡ブランチが存在しないローカルブランチは、サーバにブランチを作成することが分かりました。

リモートブランチdevから別名でブランチして、んでコミットをプッシュしたら、別名のブランチが作られるかdevにプッシュされるかってはなしになって、ブランチの切り方で挙動が変わることがわかり、あらためて整理したのでした。

[[Git - リモートブランチ>https://git-scm.com/book/ja/v1/Git-%E3%81%AE%E3%83%96%E3%83%A9%E3%83%B3%E3%83%81%E6%A9%9F%E8%83%BD-%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%83%96%E3%83%A9%E3%83%B3%E3%83%81#%E8%BF%BD%E8%B7%A1%E3%83%96%E3%83%A9%E3%83%B3%E3%83%81]]




** ブランチ作成いろいろ [#e0a19bde]

 $ git checkout --track origin/dev    <- devを作成、元は origin/dev で origin/dev を追跡状態
 $ git branch -vv
 * dev    925a9e4 [origin/dev] closes #1,#4
   master 5e1dd3a [origin/master] Merge pull request #5

 $ git checkout  -b dev2 dev    <- dev2を作成、元は dev なので、追跡はナシ
 Switched to a new branch 'dev2'
 $ git branch -vv
   dev    925a9e4 [origin/dev] closes #1,#4
 * dev2   925a9e4 closes #1,#4        ←追跡なし
   master 5e1dd3a [origin/master] Merge pull request #5

 $ git checkout  -b dev3    ←いまいるローカルブランチ(dev2) を元にdev3を作成
 Switched to a new branch 'dev3'
 $ git branch -vv
   dev    925a9e4 [origin/dev] closes #1,#4
   dev2   925a9e4 closes #1,#4
 * dev3   925a9e4 closes #1,#4   ←当然追跡なし
   master 5e1dd3a [origin/master] Merge pull request #5
  $ git log --decorate --oneline
 925a9e4 (HEAD -> dev3, origin/dev, dev2, dev) closes #1,#4    ←わかりにくいけど、dev2から作られている


** コミットを一つにまとめる [#k6ac16c1]
 $ git log --decorate --oneline
 050ea7f (HEAD -> master) 005
 1d71318 004
 cfb0c7a 003
 608528b 002
 a4431df 001

003,004のコミットを一つにしたい場合。

 $ git rebase -i 608528b   ←1つにしたいコミットの、一個前を指定。
エディタが開きます
  pick cfb0c7a 003
  pick 1d71318 004
  pick 050ea7f 005
これを
  pick cfb0c7a 003
  squash 1d71318 004   ←うえのコミットにまとめるの意味。
  pick 050ea7f 005
に書き換えて保存します。すると、もいちどコミットメッセージを入れる画面が開くので、メッセージを記載して再度保存します。
 
 [detached HEAD f9f948f] 003 + 004
  Date: Wed Dec 21 13:19:43 2016 +0900
  1 file changed, 2 insertions(+)
 Successfully rebased and updated refs/heads/master.

 $ git log --decorate --oneline
 6fb9004 (HEAD -> master) 005
 f9f948f 003 + 004
 608528b 002
 a4431df 001

コミットが一つに書き換えられました。書き換えた場所以降のコミットも、新たなコミットの扱いになってますね。

  pick cfb0c7a 003
  squash 1d71318 004
  squash 050ea7f 005 
など複数指定することもできます。直前のコミットにまとめる、という意味なのでこの場合は004,005のコミットを003にまとめることになります。

環境によっては
 Could not execute editor
というエラーが出る場合があります。そんなときは.gitconfigにエディタの情報を追記しておきます。

 $ cat ~/.gitconfig
 ...
 ...
 [core]
	editor = /usr/bin/vim






**リビジョン番号の確認、HEADの位置の確認 [#nc442e88]
 $ git checkout master
 $ git log --oneline --decorate
 09a6a5a (HEAD -> master, dev3, dev) dev commit
 9210c21 dev commit
 3fc335e dev commit
 0e46a27 (dev6, dev5, dev4, dev2) dev2 commit
 e97cefa dev2 commit
 c39d327 dev2 commit
 366da11 master commit


** 派生元を指定してBranch作成 [#x56bbec7]
 $ git branch dev_dest dev_source 
 $ git checkout -b dev_dest dev_source    <-作成 & 移動
dev_sourceのリビジョンを元に、dev_destブランチを作成します。


** リビジョン番号からBranch [#aab87e06]
 $ git show dev4
 commit 0e46a2730ab69f1a270ce92bee88fc9eda97538a
 ... 略
 $ git checkout -b dev_dest 0e46a2730ab69f1a270ce92bee88fc9eda97538a


枝分かれのブランチっても、作成した瞬間はおなじ状態です。
 $ git show dev4
 commit 0e46a2730ab69f1a270ce92bee88fc9eda97538a
 ..
 $ git show dev_dest
 commit 0e46a2730ab69f1a270ce92bee88fc9eda97538a
 ..
単なる別名って感じでしょうか。





** コミットをまとめる [#z70aaf13]
dev_#35_spike でチマチマコミットしていた内容を dev_#35 へまとめる対応
 # git checkout dev_#35  <- チケット番号のイメージ
 # git merge --squash dev_#35_spike



**違う名前のリモートブランチにプッシュする [#oe1264d1]
 > git checkout -b dev-spike
 > git branch -a
 * dev-spike
   master
   remotes/origin/HEAD -> origin/master
   remotes/origin/master
 
 > git push origin dev-spike:dev-spike1
 To https://github.com/masatomix/hello.git
  * [new branch]      dev-spike -> dev-spike1


**addしないでコミット [#uc88ddd1]
 git commit -a


**リモートのブランチの削除 [#o7f554bf]
[[Githubのブランチ削除 - Qiita>http://qiita.com/kwgch/items/98bbaae8e9f40a9548e0]]

**ローカルのブランチの削除 [#m06eba01]
 > git branch
 * dev-spike
   master
 
 > git checkout master
 Switched to branch 'master'
 Your branch is up-to-date with 'origin/master'.
 
 > git branch -d dev-spike
 Deleted branch dev-spike (was c5776c5).
 
 > git branch
 * master

消えました

[[4. ブランチを削除する【チュートリアル1 ブランチを使ってみよう】 | サルでもわかるGit入門 〜バージョン管理を使いこなそう〜 | どこでもプロジェクト管理バックログ>http://www.backlog.jp/git-guide/stepup/stepup2_5.html]]



**GitHubのページに出てた、Gitのコマンド(Get Startedみたいなヤツ)。。 [#nc21142c]

 touch README.md 
 git init //ローカルリポジトリの初期化
 git add README.md //ローカルへ追加
 git commit -m "first commit"  //ローカルへコミット
 git remote add origin https://github.com/masatomix/Hello-World.git //既に存在するリモートのリポジトリに、origin って名前をつける
 git push -u origin master //リモートリポジトリにローカルの情報を反映

こんな意味って感じ?

-[[Git - Downloads>http://git-scm.com/downloads]]
-[[Gitリモートリポジトリ構築 CapmNetwork>http://capm-network.com/?tag=Git%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E6%A7%8B%E7%AF%89]]
-[[Git がわからなくても Github を利用しよう - そんなこと覚えてない>http://blog.eiel.info/blog/2013/02/06/how-to-use-github/]]
-[[サルでもわかるGit入門 〜バージョン管理を使いこなそう〜 | どこでもプロジェクト管理バックログ>http://www.backlog.jp/git-guide/]]

**コマンド基本 [#gc95b0e7]
リポジトリからマスターをClone
 git clone https://github.com/masatomix/ui-router-sample.git     ←URLは例
 cd  ui-router-sample

Branchに切替
 git branch   一覧
 git branch dev  作成
 git checkout dev 切替

いろいろ修正、そのあとコミット
 git diff
 git commit

コミットされた(( not stagedなファイルがあれば -a オプションつける))

リポジトリへプッシュ 
 git push origin dev

ステータスのチェック
 git status

差分チェック
 git diff


-[[すぐ分かる! git の origin と master ってなんだ? - Qiita>http://qiita.com/hshimo/items/99811144bf4a081319e5]]
-[[Git - 変更内容のリポジトリへの記録>http://bit.ly/1YiOXgJ]]






----
この記事は
#vote(おもしろかった,そうでもない)


#comment
#topicpath


SIZE(10){現在のアクセス:&counter;}


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