10

master ブランチから独立して動作する git ブランチを作成したいと考えています。これまでマスターに存在するすべてのコードが必要ですが、マスターのそれ以上の変更はブランチに反映されるべきではなく、ブランチの変更はマスターに反映されるべきではありません。

このコマンドを使用してブランチを作成しました:

git branch test

しかし、 に追加したファイルはmaster、 で見ることができますtest。で追加された新しいファイルはtest、 で確認できますmaster。これを回避する方法は?ブランチの作成時に --track オプションを使用しませんでした。

4

3 に答える 3

27

あなたが望んでいたのは次のとおりだと思います:

git checkout --orphan somebranch

これsomebranchにより、履歴がまったくない が作成されます。必要なファイルをそのファイルに追加できます。以前のブランチとは 100% 異なる場合があります。

于 2014-04-28T12:23:10.737 に答える
5

あなたが求めたのはまさにそれですgit branch test(2 つの履歴が共有されなくなった時点)。ただし、ここには 2 つのレベルの混乱があります。

  • するとgit add newfile、それをインデックスに追加しますが、コミットしたり、その内容でブランチを更新したりしません。新しいブランチをチェックアウトすると、競合がない限り、git はそれらの変更をインデックスからリセットしません。これは望ましい動作です。たとえば、別のブランチで作業していて、コミットされていない変更のサブセットのみを別のブランチに移行したい場合などです。git commit元のブランチのインデックスの状態を変更すると、テスト ブランチに戻ったときにインデックスはそれらの変更を保持しません。

  • 新しいファイルが追加または削除されたツリー間を移動するgit checkout場合、ファイルシステムからファイルが削除されるとは限りません (リセット操作がある場合)。次に、ブランチを切り替えたときにこれらのファイルを「見る」ことができます。たとえば、lsまたはの出力でgit status-- しかし、それらは「追跡されていない」ため、git はそれらに対して何もしようとしません (git commit -aたとえば、このファイルをインデックスに追加しません)。新しいツリーを書く前に)。これは心配する必要はありませんが、OCD である場合は、それらを削除 (または を使用git clean) できます。

于 2012-01-27T14:58:13.640 に答える
3
git branch test
git add .
git checkout test
git checkout master

コミットしない限り、作業ツリーとインデックス (追加したものを参照する) がブランチtestmaster.

git checkout test
git commit -m "files for test"
git checkout master

masterでコミットしたばかりのファイルには表示されませんtest
新しいブランチtestには、.com とは関係なく、新しいコミット (新しいコンテンツを含む) が記録されmasterます。

于 2012-01-27T14:52:56.277 に答える