問題:このプロジェクトの特定のフォルダーにいなくても、ファイルシステムにローカルで既に複製されているプロジェクトの既存のブランチを何らかの方法でチェックアウトする必要があります。
解決策:私は次のことをしようとしています:
私は、2番目のステップが完全に正しくないことを認識していますが、「cd'file-system-folder '」を回避しようとしています。
--git-dir
を使用してリポジトリとして使用する.git
ディレクトリを指定し、--work-tree
を使用してチェックアウトする作業ツリーを指定できます。 git
man page 詳細については。
git --git-dir=file-system-folder/.git --work-tree=file-system-folder checkout existing-branch
オプションとして-Cを使用することもできます。次のような他のコマンドの前に必ず使用してください。
git -C ~/my-git-repo checkout master
特に.gitフォルダーである必要はないことに注意してください。これが男の文書です:
-C <path> Run as if git was started in <path> instead of the current working directory. When multiple -C options are given, each subsequent non-absolute -C <path> is interpreted relative to the preceding -C <path>. This option affects options that expect path name like --git-dir and --work-tree in that their interpretations of the path names would be made relative to the working directory caused by the -C option. For example the following invocations are equivalent: git --git-dir=a.git --work-tree=b -C c status git --git-dir=c/a.git --work-tree=c/b status
git clone ./foo ./foo-copy
git --git-dir=./foo-copy/.git --work-tree=./foo-copy checkout branch
git 2.5は、 git worktree を使用して複数の作業ツリーを持つ機能を追加しました。したがって、この場合、次のようなものを使用します
git worktree add -b new-branch-name ../dir-name existing-branch
その後、dir-nameに変更して、通常どおりコミットを行うことができます。コミットは、元のリポジトリ(worktree add
を使用した場所)に保存されます。
完了し、必要なものがすべてコミットされたら、dir-name
フォルダーを削除してgit worktree Prune
を実行し、リポジトリ内の孤立したワークツリーをクリーンアップできます。
--git-dir
と--work-tree
を使用して、CDを回避することは大歓迎ですが、正直なところ、CDを作成する方が簡単です。 CDを戻す必要がないように、サブシェルで行うことができます。
git clone foo foo-copy
(cd foo-copy && git checkout branch)
もちろん、この特定のケースでは、実際には2つのコマンドは必要ありません。
git clone -b <branch-to-checkout> foo foo-copy