1

次のコマンドで空の GIT リポジトリを作成するとします。

# git init

次に、リモート リポジトリの追加を開始します。

# git remote add remote1 ........
# git remote add remote2 ........
# git remote add remote3 ........

そしてフェッチ:

# git fetch --all

最後に、必要なすべてのリモート ブランチをローカル リポジトリにマージします。

# git merge remote1/branchX
# git merge remote2/branchY
# git merge remote3/branchZ

ここで、すべてのマージの前にローカル リポジトリをリセットする必要があるとします。自然な解決策は、新しい空のリポジトリを作成することです。しかし、問題は、リモート リポジトリの取得に非常に長い時間 (数時間) かかることです。

すべてのマージに先行するコミットがないため、「git reset」を実行できません。

4

2 に答える 2

3

これをごまかす適切な方法はgit init && git commit --allow-empty -m 'Initial commit.'、リポジトリをセットアップするときにa を実行することです。これにより、HEAD少なくとも存在しないという症状が軽減されます。

しかし、すでにすべてのリモートをフェッチしているので、探しているものよりも新しい空の/関連のないブランチを作成するためにリポジトリを吹き飛ばす必要はありません。

git symbolic-ref HEAD refs/heads/new-branch

次に、何でもコミット/マージするとHEAD、git が新しいブランチに入力します。別の既存のブランチを作成したら、master をハード リセットするか、それらをうまく使いこなしたい他のトリックを実行できます。

于 2012-10-02T14:00:06.130 に答える
0

このスレッド: Checkout old commit and make it new commitがいくつかの可能性を与えると思います。マージ前に以前のコミットの 1 つをチェックアウトするか、その時点にリセットします。複数のコミットが行われた場合は、まずマージの前に SHA 値を検索し、それを使用します。

于 2012-10-02T13:42:49.690 に答える