6

リモート:原点

$ git branch
* master

$ git checkout -b "new_feature"

今、「new_feature」ブランチでいくつかのコミットを行い、更新後にオリジンにプッシュしたいと考えています。

$ git branch
master
* new _feature

$ git pull --rebase origin new_feature    
$ git push origin new_feature

これは、リモートにプッシュする前にローカル ブランチを更新する正しい方法ですか?

4

2 に答える 2

4

使いたい

git pull --rebase origin master

への引数は、オプションのリモートである必要があり、git pullそのリモートのオプションの refspec または参照/ブランチである必要があります。

git pull [options] [<repository> [<refspec>…]]

new_featureこれはローカル ブランチであるため機能しません。また、 のにあるブランチにrebaseリビジョンを渡したいため、 には意味がありません。チェックアウトした場合は、それが目的のブランチであることが理解/暗示されています。これが通常の動作です。rebasenew_feature new_featurerebaserebase

于 2013-09-04T01:32:28.023 に答える
3

「new_feature」ブランチを作成すると、次のような状態になります

o   <master> <origin/master> <new_feature>  most recent commit
|
...

次に、変更をローカル ブランチにコミットすると、リポジトリは次のようになります。

o   <new_feature>   your last commit
|
o   your first commit
|
o   <master> <origin/master>    most recent commit
|
...

する

git pull --rebase origin master

、カップケーキが示唆するように、あなたはで終わります

o   <new_feature>   your last commit
|
o   your first commit
|
o   <origin/master> something meanwhile commited on remote master
|
o   <master>    most recent commit
|
...

あなたの変更は「オリジン/マスター」の上にリベースされました。これらは元のコミットではありませんが、「新しい」「オリジン/マスター」に合うように変更されたコミットです。

リベースを実行すると、マージの競合が発生する可能性があります。これは、リモート マスターで行われた変更が変更と競合する可能性があるためです。

しかし、「new_feature」は「origin/master」の「上」にあるため、リモート マスターにプッシュできます。

これにより、タグ「origin/master」も「new_feature」のレベルに移動します。ローカルの「マスター」も軌道に乗せたい場合は、それをチェックアウトして「オリジン/マスター」とマージする必要があります。

于 2013-09-04T20:12:32.013 に答える