Closed7

ウーGit

もりたもりた

これはなに

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にマージされる
    • 履歴がまとまるのでローカルから取り込むのには良さそう
    • まとめる前のコミットには戻れない
もりたもりた

リモート触る系コマンド

Git - リモートでの作業

  • これがよさそう。信頼のサイト。
  • 存在してるのは
    • remote
    • pull
    • fetch
    • push
    • remote rename
  • 分からんこと
    • たぶんpull, fetch, pushあたりが分からん
    • かつ、pullしてきた時にローカルでは存在してて欲しいブランチがリモートになかったら上書きされるのか? とかが知りたい。これブランチの状態とかコミットログとかの共同編集をしているはずで、そこにはGitがないよね? gitのgitはない
      • 内部構造の資料で分かりそう
もりたもりた

内部構造資料読む

いつやるの?Git入門

  • 明らかにしたいこと
    • fetchしてmergeのマージってなにしてんの?
    • リモートとローカルのブランチをどう管理してるの、上書きされたりしないの?
      • なんとなく完全に別物として扱って、プッシュとかマージとかするとそれを越境する気がする、、?
    • developブランチとfeatureブランチをマージしたコミット、ってなに? ブランチってコミットの識別子でしょ、ひとつしかなくない?そのコミット
  • データ領域
    • リポジトリ
      • .git配下
    • ワークツリー
      • 実際のファイル
    • ステージングエリア
      • .git/index配下
  • リモートリポジトリ
  • つまり、gitのリモート追跡ブランチ周りがあんまりよく分かってなかった
    • リモートブランチが進んだ時にローカルにpullしてきたら、どうなるのかイメージできなかった
      • けど今は別の歴史ができて、ローカルとリモートで枝分かれするのはわかる。んで同じ名前だからここを合わせようとするとマージが必要になるのもわかる
      • けどマージせずそのままリモートにあげたい時もあるのでは???
      • 同じブランチに対してリモートとローカルからコミットして、歴史が枝分かれする、その時にpushしたらリモートでは分岐するのか? リベースやマージが行われそうというのはわかる、同じブランチだから? いや、ブランチへのコミットはそのブランチが指し示すコミットに対して新しいコミットをすること、リモートブランチへのpushは、ローカルのブランチへコミットがあり、そのコミット内容をリモートブランチへも反映すること? pushがなにしてるのか分かってないわ
      • git push origin serverfixgit push origin refs/heads/serverfix:refs/heads/serverfix になる
        • 手元のローカルブランチserverfixをプッシュしてリモートのserverfixブランチを更新しろの意味
        • ローカルブランチの更新をどこに反映させるかは指定できる、けどなにも指定しないと同じ名前のブランチに反映させにいく。そこで枝分かれとかがあると、反映にマージが必要になる
      • リモート追跡ブランチをフェッチしてもそこにコミットできるわけではない、編集できない。ローカルにブランチを作らないと触れない。
  • 追跡とかそこらへん
もりたもりた

あとできるようになりたいもの

  • git logがわかるようになりたい
  • git push origin masterとか、サクサク操作できるようになりたい
このスクラップは4ヶ月前にクローズされました