たぶん忘れるメモ

記憶力はないのです。

進んでるってなんだ

git は操作はコマンドでやって、全体の確認をツールで行ってるんですが、

$ git pull origin master
 * branch master -> FETCH_HEAD
Already up-to-date.

これなのに、

$ git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 11 commits.

になってしまうときがあります。

グラフ上はローカルのほうが進みまくっててるように見えますが、pull しても、更新するものはありませんって言われている状態です。

この状態で、

$ git checkout -b test origin/master

なんかしてしまったら、グラフ上の origin/master から始まってて、新しいブランチでpush したとき、変な場所から分岐が始まっててとても困ります。mergeするときとか。

解決方法がないかなと調べてみたら、ここがヒットしました。

http://www.freewayprojects.com/2011/11/solving-the-your-branch-is-ahead-of-originmaster-by-x-commits-issue-after-pulling-using-git/

$ git pull origin

すると、おお! 全部のブランチ連れてきたw

もう一度グラフで見ると位置が
[master] [origin/master]
と同じところになってます。これ、これにしたかった!

$ git checkout master
Switched to branch 'master'

よし、commit 進んでるよって言われない!

ローカルで master 確認するのに

$ git pull origin master

ってやってるのがダメなんでしょうか。ローカルになければいいわけで、都度削除してファイル消してみたりしてたんですが、それも面倒くさいです。

https://www.kernel.org/pub/software/scm/git/docs/git-pull.html

このマニュアル見ると、 git pull と、 git pull origin next は違う的な感じに読めます。

Update the remote-tracking branches for the repository you cloned from, then merge one of them into your current branch:

って、前者は update。

Merge into the current branch the remote branch next:

後者は merge。

$ git fetch origin master

って、update だって思ってたんですけど、自分が想っていたような更新という意味での update じゃないみたい。

個別で update ってできないんでしょうかね。
ローカルに連れてくるような使い方がそもそもgit的におかしいんでしょうか。んー、でもなぁ。