4

私はgitを使用して、一部の人々によって変更され、他の人と「読み取り専用」で共有されているコンテンツを追跡しています。「読者」は時々変更を加える必要があるかもしれませんが、ほとんどの場合、そうする必要はありません。

必要に応じて、git の「ライター」がプッシュされたブランチ ** をリベースできるようにし、「リーダー」が誤ってマージされないようにしたいと考えています。それは通常十分に簡単です。

git pull origin +master

問題を引き起こすと思われる 1 つのケースがあります。リーダーがローカルに変更を加えた場合、上記のコマンドはmergeになります。リーダーがローカルに変更を加えていない場合はプルを完全に自動化したいのですが、ローカルに変更を加えた場合はプルを停止して入力を求める必要があります。下流の変更のマージに注意しながら、上流の変更を追跡したいと考えています。

ある意味、引っ張りたくない。master ブランチを正確に追跡したい。


** (これがベスト プラクティスではないことはわかっていますが、私たちの場合は必要なようです。ほとんどの作業を含む 1 つのメイン ブランチと、分離する必要がある小さな変更を伴う特定の顧客向けのいくつかのトピック ブランチがあります。最も簡単なようです。トピックを最新の状態に保つために頻繁にリベースします。)

4

6 に答える 6

7

コマンドを探していgit-fetchます。

于 2010-06-16T19:03:50.347 に答える
5

また、役に立つかもしれませんgit pull --rebase

更新: 個々のブランチで設定--rebaseすることにより、デフォルトのpull動作にすることができます。branch.<name>.rebase = true設定branch.autosetuprebase = trueにより、デフォルトで新しいブランチにこれが設定されますが、既存のブランチは手動で更新する必要があります。または、グローバルに--rebase設定することで、いつでもデフォルトにすることができます。pull.rebase = true

于 2010-06-16T19:11:22.397 に答える
2

どうですか:

  git pull --ff-only origin master

私はそれをよく使います。残念ながら、richard-hansen@ が以下で指摘したように、これはエイリアスとして機能しません。

[alias]
pull = pull --ff-only
于 2011-01-18T19:41:55.793 に答える
0

Git 2.0 (2014 年第 2 四半期) はコミット b814da8に configを追加しpush.ffます:

pull.ff::

デフォルトでは、現在のコミットの子孫であるコミットをマージするときに、Git は追加のマージ コミットを作成しません。代わりに、現在のブランチの先端が早送りされます。

  • false に設定すると、この変数は、そのような場合に追加のマージ コミットを作成するように Git に指示します (コマンド ラインから --no-ff オプションを指定するのと同じです)。
  • only に設定すると、そのような早送りマージのみが許可されます (--ff-onlyコマンド ラインからオプションを指定するのと同じです)。
于 2014-03-12T14:26:37.617 に答える
0

リーダーがフェッチして手動でマージしたくないので、フックを作成して、何がダウンしたかを調べ、ユーザーにプロンプ​​トを表示できます。

http://git-scm.com/docs/githooks

フェッチして、リーダーにマージまたはリベースをローカルで管理させることをお勧めします。それはあなたの問題に対するより簡単な解決策です。

于 2010-06-17T02:20:58.590 に答える