2017-03-01 9 views
0

일반적으로 cherry-pick을 사용하여 밀어 넣은 커밋을 다른 저장소로 이동할 수 있습니다. I fetch 관련 저장소를 다른 저장소에서 새 저장소로, 커밋 ID가 cherry-pick입니다.손상되었거나 처리되지 않은 커밋 된 저장소를 다른 저장소로 옮기는 방법은 무엇입니까?

손상된 저장소에서 로컬 푸시 된 커밋에 대해 동일한 작업을 수행하고 싶습니다. (뭔가 잘못되어 변경 사항을 적용 할 수 없지만 다른 저장소로 이동해야합니다).

cherry-pick은 손상된 레포에서 다른 레포로 커밋 할 수 있습니까?

PS : 두 저장소가 동일한 시스템에 있습니다.

답변

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 것들. 나는 첫 번째 단계 후에 cherry-pick을 선택할 수 있다고 가정합니다. – likeachamp

+1

예. 첫 번째 명령 이후에 리모컨을 다른 리모컨으로 처리 할 수 ​​있습니다. – jready

+1

감사합니다! btw '원격 추가' – likeachamp

3

원격의 다른 컴퓨터에 국한되지 않습니다 :

: 당신은 당신이 단순히 파일 시스템 경로를 사용 repo2에 원격으로 repo1을 추가하여 repo2repo1에서 커밋을 복사 할 수 있습니다 /repo2 하나 개 /repo1에서 저장소와 다른 경우
cd /repo2 
git remote add repo1 /repo1 

할 수 있습니다 지금 repo1repo2-fetch, pullcherry-pick 커밋.

+0

어쨌든 체리 - 그것을 추가하지 않고 선택? .git/objects 아래에있는 하나의 파일이 손상되어 원격으로 추가하거나 변경 사항을 푸시 할 수 없습니다. – likeachamp

+1

아니요, 리모컨으로 Repo를 추가 할 수 없다면 '체리 피크'를 할 수 없습니다. 베팅은 @ ElpieKay의 대답을 패치를 내보내도록 시도하는 것입니다 (효과적으로 수동 체리 피킹). – Guildencrantz