1

文脈のために:私は単一のプロジェクトで唯一の開発者として働いています。最近、SVN リポジトリを Git に移行しましたが、TortoiseGit と TortoiseSVN を比較して作業するときに最初に見逃したのはチェンジリストです。TortoiseSVN では、ローカルで変更されたファイルをグループ化し、それらのグループに名前を付けることができますが、それでもすべての変更のリストを表示できますコミットされていないこと。私は通常、何かをコミットする準備が整う前に、同時に複数のチケット (バグまたは機能) に取り組んでいることに気付いたときにこれを行います。

Git のやり方は SVN のやり方とは明らかに異なります。変更をローカルにコミットするか、チケットごとに別のブランチを作成してそれらを切り替える必要があるのではないでしょうか? ファイルの名前を変更する(または移動する)など、通常とは異なることをしたときはいつでもSVNがうまく分岐/切り替え/マージしないことが多いので、私は少し心配です。また、変更したすべてのファイルが 1 つのグループ化されたリストに表示されるのも便利ですが、Git でそれを行う方法はありません。

上記のケースで、チケットごとにブランチを使用することが一般的に受け入れられている回答である場合、次の 2 つのシナリオの手順に関するガイダンスをお願いします。

  1. 合計 18 個のファイルで構成される現在の一連の変更を分離する方法。現在の状態全体から 2 つのブランチ (チケット #1 のブランチとチケット #2 のブランチ) を作成し、ブランチ #1 から #2 の変更を削除し、その逆を行う必要がありますか?

  2. たった 1 つのチケットに対して既にいくつかのコード変更があり、別のチケットで作業を開始する必要があるという新しい状況では、2 つのチケット間を簡単に行き来し、理想的にはすべての変更を組み合わせて表示できるようにするには、どのような手順を踏む必要がありますか? このようになるでしょうか?現在のチケットの変更のブランチを作成します。2 番目のチケットの変更のためにマスターから新しいブランチを作成し、作業を切り替えるときにそれらを切り替えますか?

4

1 に答える 1

3

git では、ブランチの作成とマージの両方が迅速かつ簡単です。ブランチは、git の大きな強みの 1 つです。

したがって、ベスト プラクティスは、開始するタスクごとにブランチを明確に作成することです。ちょっとしたお仕事も!これにより、構造化された方法で作業しやすくなり、後でバージョン ツリーが理解しやすくなります。

  1. 私は次のようにします:

    1. あなたがブランチにいると仮定しますmaster
    2. Ticket#1 のブランチを作成し、git checkout -b ticket1
    3. そのチケットに属する変更をステージングするgit add file1
    4. git commit
    5. マスターに戻りgit checkout masterます (Ticket#2 に関するファイルの変更は保持されます)。
    6. Ticket#2 のブランチを作成し、git checkout -b ticket2
    7. そのチケットに属する変更をステージングするgit add file2
    8. git commit
    9. を使用してチケットを自由に切り替えることができるようになりましたgit checkout ticket1
  2. はい。git では、ブランチの切り替えが安全、簡単、高速です。したがって、さまざまなタスクのためにブランチを切り替えることは完全に理にかなっています。

于 2016-11-04T22:28:58.030 に答える