teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

git branch -avv の説明を追加

2020/02/13 15:47

投稿

hoshi-takanori
hoshi-takanori

スコア7903

answer CHANGED
@@ -70,7 +70,7 @@
70
70
 
71
71
  これらがほとんど同じなら、どちらの枝分かれを採用しても良いと思われます。
72
72
 
73
- ここで、現在の master があるブランチ (b3c1ea4, 6b32b95) を不採用にして、origin/master 側 (f8e15a5, d80cf26) を採用するとしましょう。以下のコマンドを順番実行てください
73
+ ここで、現在の master があるブランチ (b3c1ea4, 6b32b95) を不採用にして、origin/master 側 (f8e15a5, d80cf26) を採用するとしましょう。例えば以下のようにします(git は同じ結果になる方法が複数あるので、これは一例です。)
74
74
 
75
75
  ```
76
76
  $ git checkout master
@@ -94,11 +94,28 @@
94
94
 
95
95
  ```
96
96
 
97
- ように変更に沿ってブランチの位置を動かせば、新たにマージコミットを作ら移動できます。
97
+ git merge は枝分かれした二つブランチの変更内容をマージするのが本来の使い方ですが、枝分かれしてない場合先行しいるブランチに追いつくためにも使えます。そ間違って新たにマージコミットを作らないよう `--ff-only` オプションをつけています。
98
98
  (すでに状況が変わってるようですが、基本的な考え方がわかれば応用できると思います。)
99
99
 
100
100
  別の方法としては、master ブランチを一旦消して新たな位置に作り直したり、master ブランチを別の名前にして、別のブランチの名前を master に変更こともできますが、危険な香りがする(実際はそれほど危険ではありませんが)ので今回はやめておきます。
101
101
 
102
102
  ---
103
103
 
104
- また、git branch -avv でブランチを一覧表示することもできます。この説明のちほど追記します。
104
+ また、git branch でブランチを一覧表示できます。自分よく `-avv` オプションをつけます。
105
+
106
+ ```
107
+ $ git branch -avv
108
+ * filling-in-layout b3c1ea4 Add a full_title helper
109
+ filling-in-leyout d80cf26 Finish layout and routes
110
+ filling-in-re-layout 6b32b95 Finish layout and routes
111
+ master b3c1ea4 [origin/master: ahead 1, behind 1] Add a full_title helper
112
+ rails-flavored-ruby f8e15a5 Add a full_title helper
113
+ static-pages 592d781 [origin/static-pages: ahead 1] Finish static pages
114
+ remotes/heroku/master f8e15a5 Add a full_title helper
115
+ remotes/origin/master f8e15a5 Add a full_title helper
116
+ remotes/origin/static-pages 82cb5b9 Add a Static Pages controller
117
+ ```
118
+
119
+ `remotes/` で始まるブランチはリモートブランチ、それ以外はローカルブランチです。自分が今いるブランチは `*` がついてます。また、`[origin/master: ahead 1, behind 1]` はリモートブランチに対応したブランチ、ahead はローカルが先行、behind はリモートが先行していることを意味します。ここで、ahead であれば `git push`、behind であれば `git pull` を行えば同期できますが、問題は両方ある場合で、まず `git pull` してリモートの変更内容を取り込んで(コンフリクトした場合はそれを解消して)から `git push` することになります。
120
+
121
+ ブランチは消さない限り残ってますので、不採用にしたブランチでもいつでも内容を確認できますし、チェックアウトして作業を再開することもできます。