Git: 기존 폴더에 "git clone"하는 가장 좋은 방법은 무엇입니까?
소스 제어 메타데이터 없이 프로젝트의 작업 복사본을 가지고 있습니다.이제 이 폴더에 git-clone과 동일한 작업을 수행하고 로컬 변경사항을 유지하려고 합니다.
git-clone을 사용하면 기존 폴더로 복제할 수 없습니다.여기서 가장 좋은 방법은 무엇입니까?
이 작업은 새 디렉터리로 복제한 다음 다음 이동하여 수행할 수 있습니다..git
디렉토리를 기존 디렉토리로 이동합니다.
기존 디렉토리의 이름이 "code"인 경우.
git clone https://myrepo.com/git.git temp
mv temp/.git code/.git
rm -rf temp
복제 명령을 실행하는 동안 체크아웃하지 않고도 이 작업을 수행할 수 있습니다. 자세한 내용은 여기에서 확인할 수 있습니다.
복제하지 말고 가져오십시오.레포에서
git init
git remote add origin $url_of_clone_source
git fetch origin
git checkout -b master --track origin/master # origin/master is clone's default
그런 다음 원하는 커밋을 얻기 위해 트리를 재설정할 수 있습니다.
git reset origin/master # or whatever commit you think is proper...
그리고 당신은 복제된 것과 같습니다.
여기서 흥미로운 질문(그리고 답이 없는 질문):벌거벗은 트리가 어떤 커밋을 기반으로 했는지 확인하는 방법, 따라서 어떤 위치로 재설정해야 하는지 확인합니다.
기존 디렉토리에서 마스터 분기를 체크아웃하기 위해 다음 작업을 수행했습니다.
git init
git remote add origin [my-repo]
git fetch
git checkout origin/master -ft
임시 디렉토리를 사용하는 것은 괜찮지만, 이 단계를 수행하지 않으려면 이렇게 하면 됩니다.작업 디렉토리의 루트에서 다음을(를) 선택합니다.
$ rm -fr .git
$ git init
$ git remote add origin your-git-url
$ git fetch
$ git reset --mixed origin/master
나는git clone
새 디렉터리로 이동하고 기존 디렉터리의 내용을 새 복제본으로 복사합니다.
git clone your_repo tmp && mv tmp/.git . && rm -rf tmp && git reset --mixed
git init
git remote add origin git@github.com:<user>/<repo>.git
git remote -v
git pull origin master
OP가 질문한 방식으로 이미 많은 답변이 있었습니다.그러나 반대로 하는 것이 훨씬 더 간단하다는 점에 주목할 필요가 있습니다.
git clone repo-url tmp/
cp -R working/ tmp/
이제 원하는 대상 상태(신규 복제 + 로컬 변경)를 갖게 되었습니다.
Git repo를 빈 기존 디렉토리에 복제하려면 다음 작업을 수행합니다.
cd myfolder
git clone https://myrepo.com/git.git .
에 하십시오..
의▁▁of▁.git clone
디렉토리에 됩니다.그러면 repo가 현재 작업 디렉토리에 다운로드됩니다.
이것은 내가 발견한 모든 방법 중 최고입니다.
합니다( .git에 있는 ).existing-dir
빈 디렉토리에 합니다.
git clone --no-checkout repo-path-to-clone existing-dir/existing-dir.tmp
repo// repo 를 위한 링크 .
합니다.git 폴더를 파일이 있는 디렉토리로 이동합니다.이것은 만듭니다.existing-dir
재치 있는 레포
mv existing-dir/existing-dir.tmp/.git existing-dir/
임시 디렉터리 삭제
rmdir existing-dir/existing-dir.tmp
cd existing-dir
Git는 모든 파일이 삭제되었다고 생각합니다. 그러면 보고서 상태가 HEAD로 돌아갑니다.
경고: 파일의 로컬 변경 내용이 손실됩니다.
git reset --mixed HEAD
이에 대한 두 가지 접근법이 있습니다.가능하면 새 git 작업 디렉토리에 대한 폴더를 정리한 후 나중에 당신의 버전을 복사하겠습니다.이는 다음과 같이 보일 수 있습니다*:
mv $dir $dir.orig
git clone $url $dir
rsync -av --delete --exclude '.git' $dir.orig/ $dir/
rm -rf $dir.orig
이 시점에서 이전 작업 폴더를 현재 작업 디렉토리로 사용하여 파일 삭제를 포함한 모든 변경 사항이 실행되면 레이더에 표시됩니다.git status
.
반대로, 만약 당신이 정말 반대로 해야 한다면, 당신은 다음과 같은 결과를 얻을 수 있습니다.
cd $dir
git clone --no-checkout $url tempdir
mv tempdir/.git .
rmdir tempdir
git reset --mixed HEAD
어느 쪽이든, 제가 가장 먼저 할 일은 다음과 같은 것을 운영하는 것입니다.git stash
모든 로컬 변경사항의 복사본을 별도로 설정한 후 다시 작성하고 커밋할 변경사항을 처리할 수 있습니다.
* Both examples assume you start out on the shell in the parent directory of your project.
참고로 Gitlab 명령줄 지침에서 다음을 참조하십시오.
기존 폴더 밀어넣기
cd existing_folder
git init
git remote add origin <url>
git add .
git commit -m "Initial commit"
git push -u origin master
또는 기존 Git 저장소 푸시
cd existing_repo
git remote rename origin old-origin
git remote add origin <url>
git push -u origin --all
git push -u origin --tags
일반적으로 초기 리포지토리를 먼저 복제한 다음 기존 폴더의 모든 항목을 초기 리포지토리로 이동합니다.매번 작동합니다.
이 방법의 장점은 README 또는 .gitignore를 포함한 초기 저장소를 전혀 놓치지 않는다는 것입니다.
아래 명령을 사용하여 단계를 완료할 수도 있습니다.
$ git clone https://github.com/your_repo.git && mv existing_folder/* your_repo
다음 명령줄을 재귀적으로 입력하여 이 작업을 수행할 수 있습니다.
mkdir temp_dir // Create new temporary dicetory named temp_dir
git clone https://www...........git temp_dir // Clone your git repo inside it
mv temp_dir/* existing_dir // Move the recently cloned repo content from the temp_dir to your existing_dir
rm -rf temp_dir // Remove the created temporary directory
그냥 마지막에 있는 .를 사용하세요.git clone
다음과 같은 명령(해당 디렉터리에 있음):
cd your_dir_to_clone_in/
git clone git@github.com/somerepo/ .
적어도 git 1.7.7을 사용하는 경우 (이를 통해)clone
그--config
옵션), 현재 디렉토리를 작업 복사본으로 변환합니다.
git clone example.com/my.git ./.git --mirror --config core.bare=false
이 작업은 다음을 통해 수행됩니다.
- 리포지토리를 새 리포지토리로 복제
.git
폴더 --mirror
새 복제본을 다음과 같이 순수 메타데이터 폴더로 만듭니다..git
필요한--config core.bare=false
암묵적인 명령에 대항합니다.bare=true
의--mirror
저장소에 연결된 작업 디렉토리가 있고 일반 복제처럼 작동하도록 허용하는 옵션
이것은 분명히 작동하지 않을 것입니다..git
메타데이터 디렉터리가 작업 복사본으로 만들 디렉터리에 이미 있습니다.
동일한 리포지토리를 복제하는 경우 기존 리포지토리를 통해 다음 스니펫을 실행합니다.
git pull origin master
언급URL : https://stackoverflow.com/questions/5377960/git-whats-the-best-practice-to-git-clone-into-an-existing-folder
'programing' 카테고리의 다른 글
기능 호스트가 실행되고 있지 않습니다. (0) | 2023.04.28 |
---|---|
여백의 특성 순서 (0) | 2023.04.28 |
파일 연결 해제 실패 (0) | 2023.04.28 |
WPF 텍스트 상자에 대한 검증 구현 (0) | 2023.04.28 |
Entity Framework를 사용하여 SQL Server 데이터베이스의 변경 내용을 저장하는 동안 하나 이상의 엔티티에 대한 유효성 검사에 실패했습니다. (0) | 2023.04.28 |