123

Git ですべてのファイルをチェックアウトせずに別のブランチに切り替えることは可能ですか?

ブランチを切り替えた後、すべてのファイルを削除して再生成し、コミットして元に戻す必要があります。したがって、ファイルのチェックアウトは時間の無駄です (約 14,000 個のファイルがあり、長い操作です)。

すべてを明確にするために:

ドキュメントを GitHubにアップロードするには、これらすべてが必要です。

gh-pagesブランチのリポジトリがあります。ドキュメントをローカルで再構築するときは、それをリポジトリ ディレクトリにコピーし、コミットして GitHub にプッシュします。しかし、ローカルにドキュメントのコピーが 2 つあったので、満足できませんでした。そして、空のブランチを作成し、コミット後に空に切り替えてファイルを削除することにしました。しかし、元に戻すには時間がかかるため、この質問をしました。

gh-pagesブランチに残してファイルを削除できることはわかっていますが、汚い作業ツリーは好きではありません。

4

11 に答える 11

56

基本的な git コマンドのみを使用:

この回答は Charles の回答よりも少し長いですが、基本的な git コマンドのみで構成されており、私が理解して覚えることができるため、調べ続ける必要がありません。

現在の場所をマークします (必要に応じて最初にコミットします)。

git checkout -b temp

作業ディレクトリを変更せずに、マーカーを他のブランチにリセット (移動) します。

git reset <branch where you want to go>

現在、temp と他のブランチは同じコミットを指しており、作業ディレクトリは変更されていません。

git checkout <branch where you want to go>

HEAD はすでに同じコミットを指しているため、作業ディレクトリは変更されません

git branch -d temp

これらのコマンドは、任意のグラフィカル クライアントからも簡単に使用できることに注意してください。

于 2012-07-01T02:08:26.423 に答える
14

2 つの作業ディレクトリ (2 つの作業領域) と 1 つのリポジトリ、または 2 つのリポジトリを使用することは、より良い解決策ではないでしょうか?

これに役立つgit-new-workdirツールがcontrib/セクションにあります。

于 2009-08-16T08:54:36.183 に答える
7

HEAD ファイルを別のブランチ名で上書きできます。

echo "ref: refs/heads/MyOtherBranch" > .git/HEAD

于 2009-08-15T19:55:05.677 に答える
0

非常に多くのファイルがあるため、ブランチごとに 1 つずつ、2 つのリポジトリを保持するだけでよい場合があります。必要に応じて変更を前後にプルできます。これは、git で壊血病のトリックを試みるよりも驚くべきことではありません。

于 2009-08-15T22:15:49.307 に答える