🎉

新卒一年目の自分がよく悩むgitの使い方②

2021/06/17に公開

新卒一年目の自分がよく悩むgitの使い方①

commitの仕様

  • mainブランチでコミット行う
  • origin/mainブランチ(追跡ブランチ)でコミットを行う

    origin/mainはリモートの更新時のみ更新される
    👉普通はやらない

rebaseでコミット履歴を綺麗にする

前提

mainブランチでfetch

mainブランチでorigin/mainをrebase

mainブランチでpush

上記の場合はC4、つまりローカルの記述が優先されていることになる

コンフリクトの修正

追跡ブランチとローカルブランチのmergeを行うことで起きてしまう

pushすると、mergeがうまくいかない(ここでのmergeはpushで行われてるので、コミット生成はされない)

同じファイルの同じ箇所の変更がかぶっているため、どちらを優先すればいいのかわからない
👉コンフリクトがおこる

ファイルは以下のようなことになっている

 <<<<<<< HEAD
 ローカルブランチでの変更
 ======= 
 
 =======
 リモートブランチでの変更(追跡ブランチをみてる)
 >>>>>>> 〇〇

何を優先(またはどちらのコードも残す)するかを決め修正、コミットしなおす

git add,git commit -m "C5"


mainブランチでgit push

mergeの中止(rebaseする)

$ git merge --abort


--abortすると...

となり、rebaseすることも選択できる


mainブランチでgit push

一時退避

$ git stash -u save 〇〇

-uをつけることで未追跡である新規ファイルも含めるという意味になる
実態はただのコミット

$ git stash list

$ git stashの一覧表示ができる
順番の確認が行える

$ git stash apply 番号

退避させた最新の変更を戻す
最新のものではなく、指定したい場合はstashの一覧表示の何番目かを指定

$ git stash drop 番号

退避の削除
上記と同じく番号指定が可能

$ git stash pop 番号

git stash applyが行ったあと、git stash dropの処理を走らせるのと同義

$ git stash clear

退避全削除

GitHubで編集を提案

Discussion