Open7

たまに使用するGitコマンド

kentamakentama

問題

pushしようとしてremote errorになる。

git push
fatal: remote error:
  You can't push to git://github.com/xxx/yyy.git
  Use https://github.com/xxx/yyy.git

原因

gitプロトコルでクローン。

git clone git://github.com/xxx/yyy.git

解決方法

git remote set-url origin https://github.com/xxx/yyy.git
kentamakentama

問題

pullしようとしたらNot possible to fast-forward

git pull origin main

From https://github.com/xxx/yyy
 * branch            main -> FETCH_HEAD
fatal: Not possible to fast-forward, aborting.

原因

git merge --ff-only の場合, 現在の HEAD が最新状態もしくはマージがファストフォワードでない場合, そのマージは拒否され, ノンゼロステータスで終了します.

https://yu8mada.com/2018/08/15/the-difference-between-the-git-merge-options-ff-no-ff-and-ff-only/#content-3

解決方法

--reabse を使う

git pull origin main --rebase
kentamakentama

問題

複数ファイルコミットしている状態から特定のファイルのみ戻したい

解決方法

戻したいコミットIDを指定してcheckout

git checkout コミットID ファイル名
kentamakentama

問題

pullしたブランチがforce-pushされて、pullできない

解決方法

resetする

git reset --hard origin/ブランチ名
kentamakentama

問題

mergeしようとしたらfatal: Not possible to fast-forward, aborting.

git merge origin foo
fatal: Not possible to fast-forward, aborting.

解決方法

git pull origin foo --rebase
From https://github.com/xxx/yyy
 * branch            foo -> FETCH_HEAD
Successfully rebased and updated refs/heads/bar.
kentamakentama

問題

fork元の変更を取り込みたい

解決方法

リモート追加 & merge or pullでOK

git remote add upstream https://github.com/xxx/yyy.git
git pull upstream main --rebase
kentamakentama

問題

git statusしたときに日本語が文字化けする

解決方法

gitconfigに以下を追記する

[core]
  quotepath  = false