11

とマージした後にブランチにプッシュするとmaster、git はそれをどのように処理しますか (ブランチにプッシュされた最新のコミットをmaster自動的に更新するか、何もしないか、何か他のことを行います) ?

4

2 に答える 2

22

マージ後も 2 つのブランチがあります。マージ元のブランチとマージ先のブランチで、通常まだアクティブなブランチです。

新しいコミットは、チェックアウトされたマスターまたは他のブランチのいずれかであるブランチに移動します。

ブランチにプッシュしないことに注意してください。ブランチにコミットし、ブランチをリモート リポジトリにプッシュします。また、コミットを更新するのではなく、新しいコミットをリポジトリに追加します。コミットは決して変わりません。

追加- もちろん、「古い」ブランチにプッシュすることもできます。そして、それを master に再度マージします。

A - B - - - E - G      [master]
     \     /   /
      C - D - F        [issue_202]

しかし、問題を修正するために新しいブランチを作成したいと思います。ワークフローの問題です。作業がチケットベースであると仮定すると、 master にマージする前にissue_202 チケットが解決済みになります。したがって、私の意見では、追加作業は issue_202 の修正ではなく、master ブランチの修正なので、問題を修正するために新しいチケットと新しいブランチを作成します。

              F        [issue_202_1]
             / \
A - B - - - E - G      [master]
     \     /  
      C - D            [issue_202] [
于 2013-07-08T13:55:06.847 に答える
0

Git では、コミットはリポジトリのスナップショットと、1 つ以上の親へのポインター、およびいくつかのメタデータ (作成者やコミット メッセージなど) です。

ブランチは、コミットへのポインタです。それでおしまい。

ブランチをプッシュすると、リモートのポインターが自分のコミットと同じコミットを指すように更新されます。さらに、ローカル リポジトリとリモート リポジトリは、リモートに欠落しているスナップショットをネゴシエートし、それらをリモートに送信します。そうしないと、新しく更新されたリモート ブランチが、何も知らないコミットを指していることになります。

したがって、ブランチをプッシュすると、そのリモート ブランチのみが変更されます。他のすべてのリモート ブランチは、以前とまったく同じコミットを指します。とはいえ、git-config(1) push.defaultを使用すると、予想以上に簡単にプッシュできます。私はお勧めしgit config --global push.default nothingます。

おそらく、Git Branchingをもう少し読む必要があります。

于 2013-07-08T13:57:02.517 に答える