Help us understand the problem. What is going on with this article?

git pull --rebaseをpushする前にやろうという話。

More than 1 year has passed since last update.

これはなに?

いままでは気にしていなかったけど、git pull --rebase はpushする前にした方がいいよと言われた。
でもよくわからなかったので調べたのでそのまとめ。

git pullって?

git fecth + git mergeのこと。

つまり、リモートの更新をローカルに持ってくるコマンドのショートカット版。
たとえば、topic branchgit pull origin master をすると、topic branchにmasterをmergeすることになる。

じゃあgit pull --rebase は?

git fetch + git rebaseのこと。

たとえば、topic branchgit pull --rebase origin [main branch] をすると、topic branchに[main branch]をbaseにしてrebaseすることになる。

[topic-branch] $ git pull --rebase [main branch]

違いがわかりにくいって?わからなくていいや。とりあえずgit pull --rebase を使ってからpushしよう。 気になる人は、分かりやすいサイトがあるから見るといいよ。ちなみにこれを理解するのに8時間くらいかかりました。業務時間ずっと考えてたことになりますね。

図にすると?

checkoutした直後は下記の状態になる。

develop        o-o-o
              /
master o-o-o-o

これがしばらく進むとmasterでの開発が進んで下記の状態になる。

develop        o-o-o
              /
master o-o-o-o-o-o
  • このままpushするとconflictが起きやすい。そこで下記のようにしたい。
develop             o-o-o
                   /
master  o-o-o-o-o-o

この時使うといいのがgit pull --rebaseなのだ。よくわからなければとりあえずこれをすると良い。GitHubだとPullRequestを送らせてくれないのです。ちなみにこの状態がfast fowardと呼ばれる状態で、branchとして綺麗だし、差分が少ないのでconflictが起きづらいので非常に良い

conflictは普通に起こるんですよね。ほんと。

main branchとtopic branchで同じファイルを変更していた場合は、conflictが起こる。というか直してって言われる。

なおすと、多分直したところが含まれるコミットが一つのコミットとして変更されるっぽ。あとで調べる。

基本的に、branchをきれいな状態にするという思想でいいと思う。これがgit pull だと下記の状態になるのでちょっときたない。

develop        o-o-o
              /   /
master o-o-o-o-o-o

参考になる。

http://kray.jp/blog/git-pull-rebase/

makua
waiting for deploy 気にしたらおしまいよ
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした