こちらの記事作成の過程で、ローカルリポジトリがあるにもかかわらず、同じリモートリポジトリを別ディレクトリにcloneしたところ、git pushするときに怒られた。
k_kanazawa@MyComputer MINGW64 /c/kana/dev (master)
$ git push
To https://github.com/kanazwk/dev.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'https://github.com/kanazwk/dev.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
k_kanazawa@MyComputer MINGW64 /c/kana/dev (master)
$
・fetch firstがいるからpushできません
・another repository pushingしてんじゃないの
・git pullしてからやってみたら
ここでgit fetchをためすといいらしいので以下の通り実行。
k_kanazawa@MyComputer MINGW64 /c/kana/dev (master)
$ git fetch
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (1/1), done.
remote: Total 3 (delta 1), reused 3 (delta 1), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/kanazwk/dev
f41d5ac..c968ccd master -> origin/master
k_kanazawa@MyComputer MINGW64 /c/kana/dev (master)
$
通ったのでローカルリポジトリをgit mergeする。
カレント以外の同じローカルリポジトリは消え、統合されるので注意が必要。
k_kanazawa@MyComputer MINGW64 /c/kana/dev (master)
$ git merge origin/master
Merge made by the 'recursive' strategy.
QIITAARTICLE.txt | 0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 QIITAARTICLE.txt
k_kanazawa@MyComputer MINGW64 /c/kana/dev (master)
$
merge完了後、git pushを実行すると成功。
k_kanazawa@MyComputer MINGW64 /c/kana/dev (master)
$ git push -u origin master
Enumerating objects: 9, done.
Counting objects: 100% (9/9), done.
Delta compression using up to 4 threads
Compressing objects: 100% (7/7), done.
Writing objects: 100% (7/7), 1.02 KiB | 131.00 KiB/s, done.
Total 7 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 1 local object.
To https://github.com/kanazwk/dev.git
c968ccd..4b9413d master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
k_kanazawa@MyComputer MINGW64 /c/kana/dev (master)
$
まとめ
本来ならbranch切るなり、リポジトリをforkするなりしてローカルリポジトリにcloneするのが使い方なのだろうけど、うっかり多重でcloneして開発を進めてしまった場合には使えそう。