Closed7
ウーGit
これはなに
Gitを使い始めて何年か経つが、ずっと勘で使ってる。
なにかちょっと普段やらない作業をする時に気が重たいだったりちょっと一歩目が出なくなる機会が増えてきて、これはそろそろ理解したほうがいいなと思い、ざくざく調べることにする。
とりあえずざっと記事を読む
案内の記事
概念をいい感じに説明している記事
- ちょうど良い記事。
- コミットグラフのことを知れたし、ブランチがその参照でしかないのもよく分かった。マージが新しいコミットを使っていることも理解できた
- たとえば自分の知っているリモートよりもすごくリモートが進んでしまった時はどうするのか、これはローカルにfast-fowardでマージすればいいよな。そういうのが思い描けたのは良かった。
リベース、リバート、ブランチ戦略
Git中級者への第1歩! レビュー品質向上の秘訣、コミットに便利なコマンドを紹介
リベース
【Git中級者への第一歩】リリースプロセスの品質を上げるブランチ戦略、開発をもっと便利にするコマンドとは
ブランチ戦略
git revertの注意点
リバートの注意点が分かりやすかった。
いい感じのスライド
いつやるの?Git入門
内部構造等。
改めて考える
気持ち
- いろいろばーっと読んだ
- コミットがあり、そこに対してブランチだったりHEADだったりがある
- マージすると新しいコミットが作成される
- そのやり方にfastforwardとかがある
- 知りたいこと
- マージの種類
- ファストフォワード、スカッシュ、マージコミット
- リモート触る系のコマンドの使い方
- タグ切るとかのやつ
- ブランチ戦略
- devがすげー進んで困るやつなんでなの???
- 障害対応でどうやる?
- mainにhotfixマージ
- そのあとdevelopとかはどうすんの?
- マージの種類
マージの種類
- なんか色々あるなと思ってたけどgitとgithubそれぞれあるらしい
git merge と 4種類の結果について
-
Already up to date
- 差分がない状態
- ふたつブランチ作ってすぐマージしたとか?
- こんなことあるんや
-
Fast Forward(早送りになるmerge)
- ブランチから新しいブランチを作り、そちらでコミット重ねて、マージ
-
Auto Merge(単純な merge)
- コンフリクトなくマージできたやつ
-
Conflict(コンフリクト、競合)
- コンフリクト。直したらマージできるやつ
- 感想
- あーそういうことね。マージしようとしたときの状況みたいな
GithubでのWeb上からのマージの仕方3種とその使いどころ - Qiita
- Create a merge commit
- git merge --no-ffのやつ。ファストフォワードではないマージ。まあ普通のやつやね
- どれとどれをマージしたのか分かりやすいけど、git resetしたときの動きがよく分からなくなるらしい
- Rebase and merge
- リベースなので、ひとつのブランチの根っこがもうひとつのブランチの最新から生える感じになる
- 履歴が読みやすいが、実行できない時がある
- どんなとき? リベースはそういうのあんの?
- Squash and merge
- Bのブランチの変更がまとまってAにマージされる
- 履歴がまとまるのでローカルから取り込むのには良さそう
- まとめる前のコミットには戻れない
リモート触る系コマンド
- これがよさそう。信頼のサイト。
- 存在してるのは
- remote
- pull
- fetch
- push
- remote rename
- 分からんこと
- たぶんpull, fetch, pushあたりが分からん
- かつ、pullしてきた時にローカルでは存在してて欲しいブランチがリモートになかったら上書きされるのか? とかが知りたい。これブランチの状態とかコミットログとかの共同編集をしているはずで、そこにはGitがないよね? gitのgitはない
- 内部構造の資料で分かりそう
内部構造資料読む
- 明らかにしたいこと
- fetchしてmergeのマージってなにしてんの?
- リモートとローカルのブランチをどう管理してるの、上書きされたりしないの?
- なんとなく完全に別物として扱って、プッシュとかマージとかするとそれを越境する気がする、、?
- developブランチとfeatureブランチをマージしたコミット、ってなに? ブランチってコミットの識別子でしょ、ひとつしかなくない?そのコミット
- データ領域
- リポジトリ
- .git配下
- ワークツリー
- 実際のファイル
- ステージングエリア
- .git/index配下
- リポジトリ
- リモートリポジトリ
- つまり、gitのリモート追跡ブランチ周りがあんまりよく分かってなかった
- リモートブランチが進んだ時にローカルにpullしてきたら、どうなるのかイメージできなかった
- けど今は別の歴史ができて、ローカルとリモートで枝分かれするのはわかる。んで同じ名前だからここを合わせようとするとマージが必要になるのもわかる
- けどマージせずそのままリモートにあげたい時もあるのでは???
- 同じブランチに対してリモートとローカルからコミットして、歴史が枝分かれする、その時にpushしたらリモートでは分岐するのか? リベースやマージが行われそうというのはわかる、同じブランチだから? いや、ブランチへのコミットはそのブランチが指し示すコミットに対して新しいコミットをすること、リモートブランチへのpushは、ローカルのブランチへコミットがあり、そのコミット内容をリモートブランチへも反映すること? pushがなにしてるのか分かってないわ
-
git push origin serverfix
はgit push origin refs/heads/serverfix:refs/heads/serverfix
になる- 手元のローカルブランチserverfixをプッシュしてリモートのserverfixブランチを更新しろの意味
- ローカルブランチの更新をどこに反映させるかは指定できる、けどなにも指定しないと同じ名前のブランチに反映させにいく。そこで枝分かれとかがあると、反映にマージが必要になる
- リモート追跡ブランチをフェッチしてもそこにコミットできるわけではない、編集できない。ローカルにブランチを作らないと触れない。
- リモートブランチが進んだ時にローカルにpullしてきたら、どうなるのかイメージできなかった
- 追跡とかそこらへん
あとできるようになりたいもの
- git logがわかるようになりたい
- git push origin masterとか、サクサク操作できるようになりたい
このスクラップは4ヶ月前にクローズされました