Git初心者です。
Gitは分からないところが説明できないと言うか、よく分からないところで分からなくなってそのまま分からなくなるので、分からないことが分からない感がすごい。
とりあえず、経験を積んだら今訳が分からない事も分かるようになるかもしれないと思ってエラーなどをメモしていこうと思う。
症状
branchからpushしようとしたら($ git push origin [branch name])エラーが出てできない
そもそもの経緯
commitを2回に分けてしてしまいそれをpushしてしまったので、取り消して一つのcommitにできないかとググって出てきた取り消し行為(git reset –softとかgit reset –hardとか)を色々していたらファイルが消えてしまった。
元通りに手動で直したのでそれをcommitしようとしたらできなくなっていた。
出てきたエラー
error: failed to push some refs to 'https://github.com/hoge/hoge.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
やったこと
1. git push origin [branch name]
結果:
! [rejected] [branch name] -> [branch name] (non-fast-forward)
error: failed to push some refs to 'https://github.com/hoge/hoge.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
なんかよくわからないけどrejectされた。
2. git pull
結果:
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> [branch name]
なんかよく分からないけど意味がなかったらしい。
3. git pull origin [branch name]
結果:
From https://github.com/hoge/hoge
* branch [branch name]-> FETCH_HEAD
Auto-merging [file 1]
CONFLICT (add/add): Merge conflict in [file 1]
Auto-merging [file 2]
CONFLICT (add/add): Merge conflict in [file 2]
Automatic merge failed; fix conflicts and then commit the result.
うんわからん。
ここまでで何も解決していないことは分かっている。
$ git statusしたらChanges to be committedの緑ファイルリストと一緒に、赤いUnmergeしてないというファイルリストが出てきた。
Unmereされていないとは何のことなのか、なぜそれが起こっているのか、
全く分からないが、とにかくこのファイルをなんとかしたら(抽象的な表現)解決するんだろうか。
Unmerged paths:
(use "git add <file>..." to mark resolution)
both added: [file 1]
both added: [file 2]
4. $ git fetch $ git merge origin/master
error: Merging is not possible because you have unmerged files.
hint: Fix them up in the work tree, and then use 'git add/rm <file>'
hint: as appropriate to mark resolution and make a commit.
fatal: Exiting because of an unresolved conflict.
よく分からないけどだめだった。
$ git add [file 1] [file 2] $ git merge origin/master
fatal: You have not concluded your merge (MERGE_HEAD exists).
Please, commit your changes before you merge.
コミットしろと言われたのでする。
$ git commit -m '(message)'
$ git push origin [branch name]
無事にできたっぽいけど訳が分からない…
何が起こっていたのか、そして自分が何をしたのか…
分かる日は来るのだろうか…