Programming

Git을 현재 디렉토리로 복제하는 방법

procodes 2020. 2. 17. 22:24
반응형

Git을 현재 디렉토리로 복제하는 방법


나는 일을 해요:

git clone ssh://user@host.com/home/user/private/repos/project_hub.git ./

나는 얻는다 :

치명적 : 대상 경로 '.' 이미 존재하며 빈 디렉토리가 아닙니다.

나는 길을 알고있다. 이미 존재 함. 그리고 나는 디렉토리가 비어 있는지 확인할 수 있습니다. (나는 안에 있고 아무것도 볼 수 없다!)

해당 프로젝트를 현재 디렉토리에 복제하기 위해 여기에서 무엇을 놓치고 있습니까?


단순히 옆에 점을 두십시오

git clone git@github.com:user/my-project.git .

보낸 사람 git help clone:

기존 디렉토리로의 복제는 디렉토리가 비어있는 경우에만 허용됩니다.

따라서 디렉토리가 비어 있는지 확인하십시오 (로 확인 ls -a). 그렇지 않으면 명령이 실패합니다.


다음은 아마도 모든 경우에 클론과 완전히 동일하지는 않지만 나를 위해 트릭을 수행했습니다.

git init .
git remote add -t \* -f origin <repository-url>
git checkout master

내 경우 .git/config에는 복제를 할 때 얻는 파일과 동일한 파일 이 생성 됩니다.


@Andrew가 여기에 명확하게 답변했습니다 . 그러나 디렉토리가 비어 있지 않은 경우에도 간단하게 작동합니다.

git init .
git remote add origin <repository-url>
git pull origin master

repo를 복제하려면 임시 디렉토리로 이동하여 프로젝트를 복제하십시오.

git clone ssh://user@host.com/home/user/private/repos/project_hub.git

이것은 물건을 project_hub디렉토리에 복제합니다 .

복제가 완료되면이 디렉토리를 원하는 곳으로 이동할 수 있습니다.

mv project_hub /path/to/new/location

이것은 안전하며 마법의 물건을 필요로하지 않습니다.


git clone your-repo tmp && mv tmp/.git . && rm -rf tmp && git reset --hard

하다

git clone https://user@bitbucket.org/user/projectname.git .

디렉토리는 비어 있어야합니다


현재 디렉토리가 비어 있으면 다음과 같이 작동합니다.

git clone <repository> foo; mv foo/* foo/.git* .; rmdir foo

@StephaneDelcroix의 답변 외에도 다음을 사용하십시오.

git clone git@github.com.user/my-project.git .

사용하여 현재 디렉토리가 비어 있는지 확인하십시오.

ls -a

솔루션 :이 경우 솔루션은을 사용 dot했으므로rm -rf .* && git clone ssh://user@host.com/home/user/private/repos/project_hub.git .

rm -rf .* && 디렉토리가 비어 있다고 확신하면 생략 할 수 있습니다.

크레딧은 아래 의견에 @James McLaughlin으로 이동하십시오.


@GoZoner의 답변 개선 :

git clone <repository> foo; shopt -s dotglob nullglob; mv foo/* .; rmdir foo

shopt 명령은 이 SO 답변 에서 가져 왔으며 Bash에서 'mv'명령의 동작을 변경하여 .git 디렉토리 및 기타 숨겨진 파일을 포함 해야하는 도트 파일을 포함시킵니다.

또한 현재 디렉토리 (.)가 비어있는 경우에만 그대로 작동하지만 복제 된 저장소에있는 파일 중 현재 디렉토리에있는 파일과 이름이 같은 파일이없는 한 작동합니다. 현재 디렉토리의 내용을 신경 쓰지 않으면 'mv'명령에 -f (강제) 옵션을 추가 할 수 있습니다.


나는 똑같은 필요가 있었다. 필자의 경우 웹 서버 설치로 생성되는 표준 웹 폴더가 있습니다. 이 그림의 목적 상 이것이

/server/webroot

webroot에는 다른 표준 파일 및 폴더가 포함되어 있습니다. 내 저장소에는 사이트 특정 파일 (html, javascript, CFML 등)이 있습니다.

내가해야 할 일은 :

cd /server/webroot

git init

git pull [url to my repo.git]

대상 폴더에서 git init을 수행 할 때는 두 가지 중 하나가 발생하지 않으므로주의해야합니다.

  1. 내 경우에는 git 파일이 없다는 메시지와 함께 git pull이 실패합니다.

치명적 : 자식 저장소가 아니거나 부모 디렉토리가 아닙니다 : .git

  1. 폴더의 상위 경로 어딘가에 .git 파일 있으면 .git 파일이 포함 된 THAT 상위에 풀링 된 저장소가 작성됩니다. 이것은 나에게 일어 났고 나는 그것에 놀랐다. ;-)

이것은 webroot 폴더에있는 "표준"파일을 방해하지는 않았지만 후속 커밋에 부주의로 추가되는 것을 방지하기 위해 .gitignore 파일에 추가해야했습니다.

이것은 비어 있지 않은 디렉토리로 "복제"하는 쉬운 방법 인 것 같습니다. 풀에 의해 생성 된 .git 및 .gitignore 파일을 원하지 않는 경우, 풀 후 삭제하십시오.


@phatblat의 답변을 더 개선하십시오 :

git clone --no-checkout <repository> tmp \
  && mv tmp/.git . \
  && rmdir tmp \
  && git checkout master

하나의 라이너로 :

git clone --no-checkout <repository> tmp && mv tmp/.git . && rmdir tmp && git checkout master


흠 ... 절대적으로 절대 전류 경로를 지정 $(pwd)하면 나를 위해 일했습니다.

git clone https://github.com/me/myproject.git $(pwd)

자식 버전 : 2.21.0


shopt -s dotglob
git clone ssh://user@host.com/home/user/private/repos/project_hub.git tmp && mv tmp/* . && rm -rf tmp

아래와 같이 명령 끝에. (점)을 사용하십시오.

자식 복제 URL .


로 제거

rm -rf. *

문제 또는 더 많은 오류가 발생할 수 있습니다.

/ path / to / folder가 있고 해당 폴더가 아닌 내부의 모든 것을 제거하려면 다음을 실행하십시오.

rm -rf / 경로 / to / 폴더 / *


내가 찾은 것은 다음과 같습니다.

나는 이것을 본다 :

fatal: destination path 'CouchPotatoServer' already exists and is not an empty directory.

검색 중에 나는 다음과 같이 넘어졌다.

https://couchpota.to/forum/viewtopic.php?t=3943

Clinton.Hall의 항목을 찾으십시오.이 작업을 시도하면 (내가했던 것처럼) access denied응답을 얻었을 것입니다. 내 첫 번째 단서가 있었으므로 초기 오류 (나를 위해)는 실제로 잘못된 루트로 뛰어 들었습니다. 발행물.

창에서 이것에 대한 해결 방법 : 실행 확인 cmd또는 git elevated다음 실행 :

git clone https://github.com/RuudBurger/CouchPotatoServer.git

위의 문제는 내 문제이며 단순히 높이는 것이 나에게 효과적이었습니다.


에 의해 새 파일을 만드는 것이 유용 mkdir filename합니다. 명령을 실행하면 git clone xxxxx내 컴퓨터에서 작동합니다.


그래서 루트 디렉토리에서 숨겨진 .git 폴더를 삭제 한 다음 'git clone repo'에 마침표를 추가하여 동일한 오류를 수정했습니다. 내 루트 / dist 폴더에 이것은 vue-cli 웹팩 프로젝트와 관련이 있습니다. 따라서 다른 사람들이 말하는 것은 옳습니다. 일반적으로 복제하려는 폴더 또는 상위 폴더 또는 해당 폴더의 루트에 git 추적이 있음을 의미합니다!


해결책 Windows은 저장소를 다른 폴더에 복제 한 다음 원래 위치에 복사하여 붙여 넣거나 .git보이지 않는 폴더를 복사하는 것입니다.


.git주어진 디렉토리의 디렉토리를 포함하여 내용을 삭제하거나 이동 하십시오.
Android 스튜디오와 같은 자동화 된 도구 Rebuild가 문제를 해결합니다.

자세한 내용 :
표시된 jarresolvergit repo
경로 에 대한 오류는 다음과 같습니다.temp\jarresolver\

temp\jarresolver\숨겨진 .git디렉토리를 포함하여 디렉토리의 내용을 삭제했습니다 .

그게 전부 였고 복제가 필요하지 않았습니다.
내가했을 때 RebuildAndroid Studio 복제 자체 및 빌드가 성공했습니다.


repo가 ​​비공개 인 경우 먼저 ssh 키를 사용하십시오 => git clone git@github.com : yourusername / yourrepo.git 그렇지 않으면 => git clone https://github.com/yourusername/yourrepo.git


나는이 질문을 여러 번 보았습니다 git pull. 디렉토리 내에서 트릭을 수행 할 것이라고 지적하고 싶습니다 .

내가 여기에 뭔가 빠진 경우가 아니면-그것은 나를 위해 일했다.

참고 URL : https://stackoverflow.com/questions/9864728/how-to-get-git-to-clone-into-current-directory

반응형