원격 저장소의 특정 버전 GitClone
약 한 달 전에 원격 깃 저장소를 복제했습니다.원격 저장소는 많은 변경을 거쳤으며 이제 불안정해졌습니다.이제 한 달 전에 복제한 것과 동일한 버전의 저장소 복사본이 하나 더 필요합니다.
이거 어떻게 하는 거지?
원하는 모든 커밋(예: 한 달 전)으로 저장소를 "재설정"할 수 있습니다.
다음에 대해 git-reset을 사용합니다.
git clone [remote_address_here] my_repo
cd my_repo
git reset --hard [ENTER HERE THE COMMIT HASH YOU WANT]
간단하게 사용할 수 있습니다.
git checkout commithash
이 순서로
git clone `URLTORepository`
cd `into your cloned folder`
git checkout commithash
커밋 해시는 "45ef55ac20ce2389c9180658(ba35f4a663d)"처럼 보입니다.
사용하다git log롤백할 수정본을 찾고 커밋 해시를 기록합니다.그런 다음 두 가지 옵션이 있습니다.
개정 후 커밋할 사항이 있으면 새 지점으로 체크아웃할 것을 권장합니다.
그 개정 이후에 아무것도 커밋할 계획이 없다면 지점 없이 간단히 체크아웃할 수 있습니다. - 참고:이렇게 하면 리포지토리가 '분리된 HEAD' 상태가 됩니다. 즉, 현재 분기에 연결되어 있지 않습니다. 그러면 새 커밋을 실제 분기에 병합하기 위한 추가 작업이 발생합니다.
예:
$ git log
commit 89915b4cc0810a9c9e67b3706a2850c58120cf75
Author: Jardel Weyrich <suppressed>
Date: Wed Aug 18 20:15:01 2010 -0300
Added a custom extension.
commit 4553c1466c437bdd0b4e7bb35ed238cb5b39d7e7
Author: Jardel Weyrich <suppressed>
Date: Wed Aug 18 20:13:48 2010 -0300
Missing constness.
$ git checkout 4553c1466c437bdd0b4e7bb35ed238cb5b39d7e7
Note: moving to '4553c1466c437bdd0b4e7bb35ed238cb5b39d7e7'
which isn't a local branch
If you want to create a new branch from this checkout, you may do so
(now or later) by using -b with the checkout command again. Example:
git checkout -b <new_branch_name>
HEAD is now at 4553c14... Missing constness.
이렇게 하면 정보가 손실되지 않으므로 안정적으로 변경될 때 최신 버전으로 이동할 수 있습니다.
필요한 버전이 분기 또는 태그인 경우:
git clone -b branch_or_tag_name repo_address_or_path
uploadpack.allowReachableSHA1InWant
Git 2.5.0에서는 이 구성 변수를 서버에서 사용할 수 있으므로 여기서 GitHub 기능 요청 및 GitHub 커밋을 사용하여 이 기능을 사용할 수 있습니다.
Bitbucket Server는 버전 5.5 이상부터 이 기능을 사용하도록 설정했습니다.
용도:
# Make remote with 4 commits, and local with just one.
mkdir server
cd server
git init
touch 1
git add 1
git commit -m 1
git clone ./ ../local
for i in {2..4}; do
touch "$i"
git add "$i"
git commit -m "$i"
done
# Before last commit.
SHA3="$(git log --format='%H' --skip=1 -n1)"
# Last commit.
SHA4="$(git log --format='%H' -n1)"
# Failing control without feature.
cd ../local
# Does not give an error, but does not fetch either.
git fetch origin "$SHA3"
# Error.
git checkout "$SHA3"
# Enable the feature.
cd ../server
git config uploadpack.allowReachableSHA1InWant true
# Now it works.
cd ../local
git fetch origin "$SHA3"
git checkout "$SHA3"
# Error.
git checkout "$SHA4"
중앙 집중식 버전 제어 시스템과 달리 Git는 전체 저장소를 복제하므로 현재 원격 파일뿐만 아니라 전체 기록도 얻을 수 있습니다.로컬 리포지토리에 이 모든 내용이 포함됩니다.
당시 특정 버전을 표시하기 위한 태그가 있었을 수 있습니다.그렇지 않은 경우 로컬에서 직접 작성할 수 있습니다.이를 위한 좋은 방법은 다음과 같습니다.git log또는 아마도 같은 도구를 사용하여 더 시각적으로gitk(계속)gitk --all모든 분기 및 태그를 확인합니다.당시 사용된 커밋 해시를 찾을 수 있는 경우 다음을 사용하여 태그를 지정할 수 있습니다.git tag <hash>그런 다음 새 작업 복사본에서 확인합니다(예:git checkout -b new_branch_name tag_name또는 태그 이름 대신 해시를 직접 사용합니다.
다음과 같이 해결할 수 있습니다.
git reset --hard sha
sha 예:85a108ec5d8443626c690a84bc7901195d19c446
다음 명령을 사용하여 원하는 sha를 얻을 수 있습니다.
git log
필요한 소스 트리는 Git 저장소 내에서 계속 사용할 수 있지만 관심 있는 커밋의 SHA1이 필요합니다.현재 보유하고 있는 클론에서 SHA1을 얻을 수 있다고 생각합니다.
해당 SHA1을 가져올 수 있는 경우에는 분기를 생성하거나 동일한 저장소를 갖도록 재설정할 수 있습니다.
Rui의 답변에 따른 명령
ㅠㅠgit reset당신의 문제를 해결합니다.
git reset --hard -#commit hash-
언급URL : https://stackoverflow.com/questions/3555107/git-clone-particular-version-of-remote-repository
'programing' 카테고리의 다른 글
| 왼쪽 조인의 가장 최근 레코드 (0) | 2023.06.21 |
|---|---|
| WPF에서 종속성 속성과 연결된 속성의 차이점은 무엇입니까? (0) | 2023.06.21 |
| Git 하위 모듈의 추적되지 않은 상태를 제거하는 방법은 무엇입니까? (0) | 2023.06.21 |
| C#.net 코드에서 null 변수를 SQL 저장 프로시저로 전달하는 방법 (0) | 2023.06.21 |
| 오류 - 직렬화 가능으로 표시되지 않음 (0) | 2023.06.16 |