36

問題: このプロジェクトの特定のフォルダーになくても、ファイル システムで既にローカルにクローンされているプロジェクトの既存のブランチを何らかの方法でチェックアウトする必要があります。

解決策:私は次のことをしようとしています:

  1. git clone 'github-project-url' 'file-system-folder'
  2. git checkout 'existing-branch' 'file-system-folder'

2 番目のステップが正しくないことは認識していますが、回避しようとしていcd 'file-system-folder'ます。

4

5 に答える 5

76

を使用して、リポジトリとして使用--git-dirするディレクトリを指定したり、チェックアウトする作業ツリーを指定したりできます。詳細については、man ページを参照してください。.git--work-treegit

git --git-dir=file-system-folder/.git --work-tree=file-system-folder checkout existing-branch
于 2011-05-20T14:46:51.667 に答える
2
git clone ./foo ./foo-copy
git --git-dir=./foo-copy/.git --work-tree=./foo-copy checkout branch
于 2011-05-20T14:46:17.860 に答える
2

--git-dircd を使用して回避することは大歓迎です--work-treeが、正直なところ、cd するだけの方が簡単です。cd で戻る必要がないようにするには、サブシェルで行うことができます。

git clone foo foo-copy
(cd foo-copy && git checkout branch)

もちろん、この特定のケースでは、実際には 2 つのコマンドは必要ありません。

git clone -b <branch-to-checkout> foo foo-copy 
于 2011-05-20T15:04:31.583 に答える
1

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し、リポジトリ内の孤立したワークツリーをクリーンアップできます。

于 2015-12-13T13:42:18.367 に答える