git worktree add
新しいワークツリーを作成します。ワークツリーと同じ名前でリポジトリに新しいブランチが作成されていることに気付きました。このブランチは何のためですか?
2番目のワークツリーにある他の既存のブランチをチェックアウトしました。そのブランチを自由に削除できますかgit worktree add
作成した?
同じブランチを異なるワークツリーで同時にチェックアウトすることはできないため、ブランチが必要です。
したがって、ワークツリーを追加するときにブランチを指定しない場合、gitは現在のブランチとワークツリーディレクトリの名前に基づいて自動的にブランチを追加します。
あなたは尋ねるかもしれません、なぜ私は同じブランチチェックアウトを二度持つことができないのですか? BにコミットしたときにワークツリーAがどうなるかを考えてみます。両方がブランチを共有している場合...ワークツリーAはBでのコミットをローカルな違いとして認識しますが、逆です!あなたがしたかのようにgit reset --soft HEAD^
...それはかなり危険です。
ところで、これは、チェックアウトされた非ベアリポジトリのブランチPush toができないのと同じ理由です。
最後の質問について:ブランチを削除できますか?もちろん、そのブランチは決して特別なものではありません。どこにもチェックアウトされていない限り、削除できます。
他の人がこの質問に答えるので、folder
を削除し、worktree
を削除し、branch
を削除するコマンドをここに入力します。
最初に、すべてのワークツリーをリストして再確認します...
$ git worktree list
次に、ワークツリーのフォルダを削除します
$ rm -rf ../path/to/worktree
その後、ワークツリー自体を削除します
$ git worktree Prune
複数のワークツリーがある場合、上記のコマンドは、そのパスがもう存在しないワークツリーをプルーニングするだけなので、心配しないでください!
最後に、ブランチを削除します(ワークツリーと同じブランチ名)。
$ git branch -D <branch-name>
_git worktree
_ 何も指定されていない場合、新しいブランチを追加します:
_
<commit-ish>
_を省略し、_-b
_も_-B
_も_--detach
_も使用しない場合、便宜上、HEAD-b $(basename <path>)
が指定されたかのように、自動的に作成されます。
Git 2.17以降 、 _git worktree remove
_ でそのブランチを削除できます。
ただし、同じremove
コマンドも含まれています。
汚れた作業ツリーまたはサブモジュールのある作業ツリーは、_
--force
_で削除できます。
メインの作業ツリーは削除できません。
True ... _--force
_以外は完全には実装されていませんGit 2.17では実装されていません。
Git 2.18(2018年第2四半期)では、「_git worktree remove
_」は「_-f
_」が「git worktree add」と同じように「_--force
_」オプションの省略形であることを学びました。
Stefan Beller(stefanbeller
) による commit d228eea (2018年4月17日)を参照してください。
支援者: Eric Sunshine(sunshineco
) 。
( Junio C Hamano-gitster
- によってマージ commit 90186fa 、2018年5月8日)
worktree
:_-f
_を_--force
_の省略形として受け入れ、削除する多くのコマンドは、「_
--force
_」オプションをサポートしています。これは、しばしば「_-f
_」と省略されます。
ただし、「_git worktree remove
_」と記載されている「_OPT_BOOL
_」がサポートされているにもかかわらず、「_git-worktree.txt
_」の手巻き_-f
_は短い形式を認識しません。
_OPT_BOOL
_を_OPT__FORCE
_に置き換えます。これにより、「_-f
_」が無料で提供され、「remove
」と「add
」が一致しますオプションの解析(これは_PARSE_OPT_NOCOMPLETE
_フラグも指定します)。
git worktree --helpはこれを以下のように明確に述べています。
COMMANDS
add <path> [<branch>]
Create <path> and checkout <branch> into it. The new working directory is linked to the current repository, sharing everything
except working directory specific files such as HEAD, index, etc.
If <branch> is omitted and neither -b nor -B is used, then, as a convenience, a new branch based at HEAD is created automatically,
as if -b $(basename <path>) was specified.
Prune
Prune working tree information in $GIT_DIR/worktrees.
--detach
を使用すると、デタッチモードで実行でき、ブランチが作成されないようです。これは、ワークツリーで変更を行う予定がなく、たとえばビルドまたはテストを実行するだけの場合に役立ちます。
ソース: https://stacktoheap.com/blog/2016/01/19/using-multiple-worktrees-with-git/#long-running-tasks
Git 2.17.0以降、このオールインワンコマンドを安全に実行できます
git worktree remove <path>