2013-04-20 4 views
0

GIT의 체크 아웃 및 레포로 시스템을 릴리스하는 데 도움이되는 스크립트를 만들고 싶습니다.GIT 미리보기 체크 아웃 또는 병합

내 퀘스트는 파일 시스템에서이 작업을 수행하지 않고 오류가 발생했는지 확인하기 위해 지점을 체크 아웃하는 방식으로 테스트 할 수 있습니다.

동일한 방법으로 파일 시스템을 수정하지 않고 쉽게 충돌을 식별 할 수있는 GIT 병합을 미리 볼 수 있습니까? 당신이 분기를 체크 아웃 경우, 오류가 없을거야

답변

0

(이 도움이 경우 전체 시스템은 리눅스 시스템에서 실행됩니다). 체크 아웃하면 분기의 이전 상태 만 복원됩니다.

병합을 확인하려면 상황이 달라집니다.

당신은 지점 mybranch이 있고, 그것으로 otherbranch 병합 병합하기 전에 mybranch의 상태를 기억하고 싶은 경우

git log -1 --oneline 

이것은 마지막 커밋의 해시를 반환합니다. 해시 (예 : CAFEBABE).

지금, 병합을 수행하려고 :

git merge otherbranch 

모든 작동합니다. 벌금. 당신이 오류를 얻고이를 해결하고자하지 않은 경우 : git merge이 완료되기 전에

git reset --hard CAFEBABE 

이 상태로 mybranch 재설정됩니다. 여기에 설명 된대로

대신 해시 CAFEBABE을 기억, 당신은 또한 ORIG_HEAD의 사용을 만들 수 : HEAD and ORIG_HEAD in Git

+0

예, 커밋되지 않았거나 gitinrgnor 파일의 repo가 ​​아닌 로컬 변경 사항이있어 체크 아웃 중에 오류가 발생할 수 있습니다. –

+0

커밋되지 않은 상태를 병합하지 않으려는 경우 – eckes

1

사용 git merge --ff-only - 그것은이 빠르게 전달 될 수있는 경우에만 지점을 병합합니다. 충돌이 불가능하고 항상 작동한다는 것을 의미합니다 (예 : 디스크 공간 부족과 같은 코스 시스템 장애 제외). 분명히 지점이 분기되지 않아야한다는 것을 의미하지만, 대부분의 경우 그렇지 않은 경우 "repo"를 변경하지 않고 다른 repo에서 잠재적 충돌을 병합해야합니다.

또 다른 방법은 심볼릭 링크 (linux 또는 ntfs)를 사용하는 것입니다. repo1repo2이라는 두 개의 리포지토리와 이들 중 하나를 가리키는 심볼릭 링크 releaserepo이 있어야합니다. 예를 들어, releaserepo ->repo1입니다. 이제 repo2을 업데이트하고 모든 것이 작동하는지 확인한 다음 심볼릭 링크를 변경하고 다음 번에 repo1을 업데이트하고 심볼릭 링크를 되돌릴 수 있습니다. symlink 생성 작업이 원초 적이기 때문에 모든 시스템 오류도 피할 수 있습니다.