LoginSignup
6
3

More than 1 year has passed since last update.

「git rebase origin/main」と「git rebase origin main」の違いとは?

Posted at

更新されたmainブランチを作業ブランチに取り込みたいときは

$ git rebase origin/main

ですよね。

ただ、間違えて

$ git rebase origin main

とやってしまいました

そしたら、作業ブランチから、いつの間にか mainブランチにいました。
なにかをrebaseしていました。。
調べたところ

$ git rebase origin/main

は以下のコマンドと同義ということがわかりました

$ git checkout main
$ git rebase origin

ただ、他のリポジトリで同じようなことをやったら、以下のエラーが出ましした。

fatal: invalid upstream 'origin'

ただ、以下で成功する理由が分からない。

$ git rebase origin

そこで、上記が成功するリポジトリと成功しないリポジトリを調べたところ
以下の違いが分かりました。

以下のコマンドを打つと

$ git branch -a

成功するリポジトリには「remotes/origin/HEAD -> origin/main」というのがある。失敗するリポジトリにはない。

どうやら、これはシンボリックブランチというものらしいです。

これをシンボリックブランチを設定していると、
例えば、git rebase origin/mainとやる必要がなく、git rebase originでよいとのことです。

セットする方法は、セットしたいブランチで

$ git remote set-head origin -a

です

削除する方法は、

$ git remote set-head origin -d

です。

結論

作業ブランチでの①と②の違い

① git rebase origin/main

origin/mainの最新commitの上に、作業ブランチでcommitした自分の作業commitを付け足す。

② git rebase origin main

以下と同義

$ git checkout main
$ git rebase origin

作業ブランチからmainブランチに移動し、設定された設定されたシンボリックブランチの最新commitの上に、mainブランチのcommitを付け足す。

参考

Git: difference "git rebase origin/branch" VS "git rebase origin branch"
Why is there a remotes/origin/HEAD -> origin/master entry in my git branch -l -a output?

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3