Yuya-Furusawa / react-nestjs-full-webapp

0 stars 0 forks source link

First Commitでスタックしたこと #1

Open Yuya-Furusawa opened 2 years ago

Yuya-Furusawa commented 2 years ago

発生した事象

  1. ローカルで作業、それをレポジトリ作ってGitHubに上げたい
  2. GitHub上でレポジトリ作成
  3. mainブランチにpushしようとしたらエラー

発生原因

とりあえずの解決策

  1. とりあえずはmasterにpush
  2. mainブランチをpullする
  3. mastermainにmergeする

mergeする際に発生した別の出来事

通常mergeする場合は共通の祖先を持ったブランチ同士をmergeする しかし今回はfirst commitした際に作成されたブランチ同士なので、共通の祖先が無い GitHub上では"There isn’t anything to compare. master and edit_branch are entirely different commit histories."というメッセージが出てきてcompare&mergeできない この二つはそもそも何の関係性も持たないので、remote(Github上)では、比較するなんてことはできません。ということ

したがって以下のようなmergeコマンドを叩く必要がある

// mainブランチで叩く
$ git merge --allow-unrelated-histories origin/master

そもそもどうすればよかったのか

他の解決策

参照

Yuya-Furusawa commented 2 years ago

サブディレクトリもGit対象の時

今回のでディレクトリ構成ではrootディレクトリであるyourcar以下のreact-car-appnestjs-car-appはそれぞれGit管理対象になっていた (つまりそれぞれの子ディレクトリに.gitファイルが置かれている)

この場合、通常通りpushしてもエラーもしくは警告が出る 子ディレクトリはsubmoduleと扱われる(多分)

解決策

.gitファイルを削除する

$ git rm .git

参照

Yuya-Furusawa commented 2 years ago

いつも忘れるのでメモ

git clone [repository URI]するとディレクトリが作成される

$ mkdir Example
$ cd Example
$ git clone git@github.com:Yuya-Furusawa/react-nestjs-full-webapp.git
$ ls
rect-nestjs-full-webapp
Yuya-Furusawa commented 2 years ago

おすすめgitconfig設定

conflictstyle=diff3

コンフリクトが発生するということは、「共通の元の状態」があり、そこから「コミットを生やしたブランチ」「ブランチ切ってコミット生やしたもの」が生まれ、それらがコンフリクトするということ

merge.conflictstyle=diff3という設定は、「共通の元の状態」「コミットを生やしたブランチ」「ブランチ切ってコミット生やしたもの」3つを表示する

参照

pull.ff only

git pullをしたときにfast-forwardできるような状況のみmergeを行う。fast-forwardできなければfetchだけに留める(なので、ローカルブランチには何の影響もない) 新たなコミット生やしてしまっているのにpullしてしまった、みたいな状況を回避する

参照

git pull prune

リモートでブランチが削除されてもローカルには残ってしまう。 残っていても別に大きな問題は無いが、メモリを圧迫する可能性がある。 毎回git fetch --pruneをすればよいが面倒なので、以下の設定をしておくことでfetchやpullのたびに毎回pruneしてくれる

参照