0

数週間前、私は git を使い始めました。

しかし、私はなぜ私が作るときに拒否を受け続けるのか疑問に思っていgit pushます(そのエラーが発生しても、プッシュは機能します)。

私は次の設定をしています:

master
 \_ development
     \_ feature/blog*

現在、開発から作成した機能/ブログに取り組んでいます。を作成するgit pushと、次のエラー メッセージが表示されます。

$ git push
[...]
To [...]@[...]:[...]
   288274e..34c17c3  feature/blogs -> feature/blogs
 ! [rejected]        development -> development (non-fast-forward)
error: failed to push some refs to '[...]@[...]:[...]'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.

をしてもうまくいきませgit pullん。メッセージもきAlready up-to-date.ます。

そのエラーを防ぐ方法は?現在チェックアウトされているブランチのみをプッシュしたい。

4

2 に答える 2

3

通常、何をどこにプッシュしたいかを git に伝える必要があります。

たとえば、次のように言えます。

git push origin HEAD:feature/blogs

これにより、現在の HEAD がオリジンの機能/ブログにプッシュされます。

次に、いくつかの略記があります。

git push origin feature/blogs

これにより、ローカル ブランチ「feature/blogs」が検索され、同じ名前のブランチとしてオリジンにプッシュされます。

簡単に言うなら

git push

何をどこにプッシュするかを指定しません。したがって、gitはあなたが何を意味するかを「推測」する必要があります。-あなたの場合、すべてのローカルブランチをオリジンの同じ名前のブランチにプッシュしただけです。

を設定することで、この場合の git の動作を指定できますpush.default。例えば:

git config push.default current

現在のブランチのみを同じ名前のブランチにプッシュするように git に指示します。

git help config他のオプションについては、push.default を見て探してください。

新しい git バージョンはデフォルトで に設定されてpush.default=simpleおり、通常はより良いフィードバックが得られます。

于 2013-06-06T13:36:27.537 に答える
0

を実行しているときgit push、git はリモートを持つすべてのブランチをプッシュしようとします。それで、あなたは正常にプッシュしましたfeature/blogsdevelopmentあなたがそのリモートに遅れているため、失敗しました。git checkout developmentその後、を実行するgit pullと、そのブランチの更新を取得する必要があります。

git push origin feature/blogs1 つのブランチのみをプッシュするようにします。

をプッシュしようとしているだけなのでfeature/blogs、このメッセージは気にする必要はありません。プッシュに失敗したブランチがfeature/blogs

この機能は最新バージョンの git で変更されていると思います。そのgit push中で、すべてのブランチではなく、現在のブランチのみをプッシュします。

于 2013-06-06T13:20:41.737 に答える