2013-08-14 5 views
4

GIT 문서를 읽었지 만 최신 버전의 코드를 다른 디렉토리에 복사 (또는 배포)하는 방법을 알 수 없습니다. 물론 단순히 copy -r code /path/to/another/dir 일 수도 있지만 GIT에서 만든 다른 모든 파일을 복사합니다. 그리고 나는 그것을 필요로하지 않는다. 그래서 숨겨진 파일이나 원본 파일의 복사본이없는 원시 파일을 복사하는 간단한 방법이 있습니까?GIT - 최신 디렉토리를 다른 디렉토리에 복사하십시오.

+0

bash 쉘 또는 Cygwin 같은 유닉스 툴을 사용할 수 있습니까? –

+1

"[git export"("svn export"와 같은 방법)]의 복제본으로 간주 할 수 있습니다. (http://stackoverflow.com/questions/160608/how-to-do-a-git- export-like-svn-export). –

답변

4

이 그것을 할 수있는 한 가지 방법은 다음과 같습니다 여기에 유닉스 cp와 예입니다. 파일을 표준 출력으로 아카이브하기 위해 덤프합니다. 여기에서는 명령을 약간 뒤집습니다. 리디렉션하는 대신 지정된 디렉터리에 즉시 추출합니다. 대상 디렉토리가 먼저 작성되어야합니다.

즉, 프로젝트를 배포 할 때이 기능이 필요할 것으로 보입니다. 개인적으로 Git 자체를 사용하여 프로젝트를 배포합니다. 그렇게하면 Git 명령을 사용하여 쉽게 업그레이드하고 롤백 할 수 있습니다. 물론, .git 디렉토리는 배포 디렉토리에 존재하지만, 단순히 복사해도 저장소에서 제거 된 파일은 삭제되지 않으며 대상에 남아 있습니다.

마지막으로 내 개인 즐겨 찾기에 관심이있을 수 있습니다 : using a post-receive hook to deploy projects remotely.

4

옵션 1 : 당신이 당신의 힘내의 repo에 대한 표준 설정을 가지고 가정 .git 디렉토리

제외, 당신은 당신의 프로젝트의 루트에 모든 것을 복사,하지만 .git 하위 디렉토리를 제외 할 수있다.

분명히이 with a bash terminal using rsync을 수행 할 수 있습니다

rsync -av --exclude='.git' source destination 

하지만 난 당신이 윈도우 copy 함께 할 수있는 방법을 모르겠어요.

옵션 2 : 자식 아카이브 수출

또 다른 옵션은 git archive을 사용하는 것입니다

git archive --format zip --output "output.zip" master -0 

은 (-0 비 압축에 대한 플래그입니다) 당신에게 압축 아카이브를 제공 할 것입니다. 이 문제는 아카이브에서 파일을 추출해야한다는 것입니다.

bash 쉘 또는 Cygwin과 같은 유닉스 도구에 액세스 할 수있는 경우 janos's answer에서 이러한 Unix 도구를 사용할 수도 있습니다. How to do a “git export” (like “svn export”)을 참조하십시오.

# 옵션 3 : 이눔 LS-파일

내가 잘못된 순서로 cp에 인수를 전달 해요 때문에 하나 실제로하는 데 문제가 (대신 소스의 대상 디렉토리와 같은 파일)

편집 , 지금은 이것을 긁어 라.

또 다른 옵션은 힘내가 작업 복사본에서 추적하는 모든 파일의 목록을 얻은 다음 복사 명령에 인수로 전달하는 것입니다.

mkdir /path/to/target/dir 
git archive master | tar x -C /path/to/target/dir 

git archive 명령은 저장소의 내용에서 아카이브 파일을 생성하는 일반적입니다 :

git ls-files | xargs cp <destination-root> 
+0

'rsync -av --exclude = '.git'source destination' 명령으로 시도했지만'~'으로 끝나는 파일을 여전히 복사합니다.'~'로 끝나는 파일을 제외 할 수 있습니까? ? – Andrius

+0

@Cupcake 나는 당신이'... | xargs -I {} cp {} DEST' 거기에 – janos

+0

@Andrius 당신은 여러 개의'--exclude' 플래그를 추가 할 수 있습니다 :'rsync -av --exclude = '. git'--exclude = '* ~'source destination ' – janos

관련 문제