2017-03-01 6 views
0

通常は、cherry-pickを使用してプッシュされたコミットを別のリポジトリに移動できます。I fetch関連する別のリポジトリから新しいリポジトリへの関連するブランチと、コミットID付きのcherry-pick腐敗したgitリポジトリからローカルの未処理のコミットを別のリポジトリに移動するにはどうすればよいですか?

壊れたリポジトリのlocal-unpushed-commitについても同じことをしたい(何かがうまくいかず、変更をプッシュできませんが、別のリポジトリに移動する必要があります)。

cherry-pickは破損したレポから別のレポにコミットする方法はありますか?

PS:両方のリポジトリが同じマシンに存在します。

答えて

1

もう1つの可能な方法です。

cd repo1_path 
git format-patch -1 <commit> --stdout > /tmp/xxx.patch 
cd repo2_path 
git checkout <branch> 
git am /tmp/xxx.patch 
+0

はSHAを表していますか? – likeachamp

+1

@ likeachampはい、あなたが移動したいものです。コミットを表すブランチ、タグ、またはsha1になります。 – ElpieKay

+0

すごい!私の古いレポが壊れているので、これは私にとって完璧な解決策です。 – likeachamp

3

コミットをローカルリポジトリから別のローカルリポジトリにプッシュするだけですか?

git remote add local /path/to/repo.git 
git push local master 
+1

はい、すべてではありません。 spesificなもの。私は最初のステップの後にチェリーピックアップできると仮定します – likeachamp

+1

はい、実際には違いがないので、最初のコマンドの後にリモートを別のリモートとして扱うことができます。 – jready

+1

ありがとう! btwそれは 'リモート追加'する必要があります – likeachamp

3

リモートのは、別のマシンに限定されない:あなたは/repo2で1つの/repo1でリポジトリと別のものを持っている場合は、単にファイルシステムのパスを使用してrepo2へのリモートとしてrepo1を追加することにより、repo1からrepo2にコミットをコピーすることができます。

cd /repo2 
git remote add repo1 /repo1 

あなたできるようになりましたrepo1repo2からfetchpull、およびcherry-pickコミット。

+0

とにかくそれを追加せずにチェリーピックするにはありますか? .git/objectsの下にある1つのファイルが壊れているので、私はリモートとして追加することも、自分の変更などをプッシュすることもできません。 – likeachamp

+1

Repoをリモートとして追加できない場合は、 'cherry-pick'を実行できません:ベットは@ ElpieKayの答えをパッチをエクスポートすることです(効果的には手動でチェリーピックする)。 – Guildencrantz

関連する問題