1

私は自分のチームに機能駆動型開発を導入しようとしています。私たちは git を使用しており、作業用のトピック ブランチの作成を開始したところです。私が理解していることから、すべての機能またはバグに対してトピックブランチを作成する必要があり、ブランチは「短命」であると想定されています。

私たちのワークフローでは、発見したバグごとに問題を作成し (導入したい機能も含めて、今は別として)、マスターから派生したブランチを作成してフォローアップし、いくつかの変更を加え、コミットしてプッシュし、コード レビュー後にプル リクエストを介してマージします。

これまでのところ、これはうまく機能していますが、バグ修正が数行のコード (2 ~ 3 行など) であるケースがいくつかありました。開発者にブランチを作成するように指示しましたが、これはやり過ぎのように思えます。つまり、ほんの数行のコードと 1 回のコミットでブランチを作成するということです...

このような場合はどうするのがベストでしょうか?ちょっとした変更のためにブランチを作成するよりも、master ブランチで作業したほうがよいでしょうか?

4

2 に答える 2

1

Git のブランチはとてつもなく安価です。エクストラを作成することはめったにありません。人々はそれらを作成する義務があると感じるべきではありませんが、それは彼らのデフォルトであるべきであり、些細なことであることが判明したものを作成したことをばかげていると感じるべきではありません.

コミットを公開 (プッシュ、または他のユーザーによるフェッチを許可) していない限り、コミットをブランチに「移動」できることに注意してください。たとえば、最初にこれがあるとします。

...--A--B--C   <-- HEAD -> master, origin/master

次に、最初にブランチを作成せずに何かを修正します。新しいコミットを行いますD:

...--A--B--C   <-- origin/master
            \
             D   <-- HEAD -> master

しかし、これでは不十分であるか、間違った修正であることがわかり、これを branch にする必要があると判断しますfix-xxx。を指し示す新しいブランチ ラベルを追加するだけでD(例: を使用)、コミットに戻るようにbranch fix-xxx master設定します(例:まだ今もオンになっているため)。masterCgit reset --hard HEAD~1master

...--A--B--C   <-- HEAD -> master, origin/master
            \
             D   <-- fix-xxx

これで、git checkout fix-xxxコミットを作業ツリーに戻し、次を指すようにD設定できます。HEADfix-xxx

...--A--B--C   <-- master, origin/master
            \
             D   <-- HEAD -> fix-xxx

fix-xxx最初に作成してからコミットしたように見えますD

言い換えれば、これは両方の方法で機能します: 可能な限りフリーに近いブランチを自由に作成してください。ただし、ブランチを作成せずにコミットを「移動」してください (ここでは実際には何も移動していません。単にシャッフルしただけです)。ブランチ ラベル!) 代わりに後で。プログラマーは、自分の都合に合わせて何でもできます。

最初にブランチを作成し、後でそれを必要としないことの大きな利点は、最初にブランチを作成せず、後で必要とするよりも作業が少ないことです。また、このステップは厄介なほど危険です (最初に作業ツリーがクリーンであることを確認する必要があります)。git reset --hard

于 2016-05-29T07:23:46.917 に答える
0

あなたはこれらのリンクを見ることができます

Git ワークフロー

Git ブランチ モデル

私の側では、マスターまたは開発ブランチでバグをコミットしてから、プッシュする前にリベースすることをお勧めします。分離されたブランチに続くマージは、新機能またはマイナー リリースにのみ使用する必要があります。多くの合併をしなければならないことは歴史を壊すと思います。

マージ VS リベース

(master)  Init --- Bug1 --- Bug2-- merge -- HEAD
(featureA)    \--- 1 --- 2 ------- /
于 2016-05-29T07:34:37.533 に答える