programing

특정 리비전으로 이동

skycolor 2023. 5. 17. 22:38
반응형

특정 리비전으로 이동

특정 프로젝트의 깃 저장소를 복제했습니다.파일을 초기 상태로 전환하고 파일을 검토할 때 2, 3, 4... 최신 버전으로 이동할 수 있습니까?프로젝트가 어떻게 발전하고 있었는지에 대한 개요를 알고 싶습니다.

명령을 실행하기 헤드가 분리된 상태로 유지됩니다.

사용하다git checkout <sha1>특정 커밋을 확인합니다.

에▁where디<sha1>는 를사여 얻수있커고번유호다니입밋으로 수 입니다.git log

다음은 분리된 헤드 상태가 된 후의 몇 가지 옵션입니다.

  • 폴더 하고, 한 경우 합니다. Git 더 외 부 폴 폴 복 내 변 경 분 필 다 체 를 웃 합 아 니 크 기 우 한 요 후 한 을 경 용 한 요 필 하 의 거 나 더 파 사 에 을 일 ▁copy ▁were it 다 ▁the ▁checkout ▁you ▁branch 니 합 , ▁that ▁your ▁outside 웃 ▁folder ▁g git checkout <existingBranch>
  • 지점 git checkout -b <new_branch_name> <sha1>

참고: 분리된 헤드 상태를 "실행 취소"(복귀)하려면 다음을 사용합니다.

git checkout <branch>서)<branch>예를 들어,master).

특정 버전/커밋으로 이동하려면 다음 명령을 실행합니다.얻을 수 있는 해시 코드git log --oneline -n 10

git reset --hard HASH-CODE

참고 - 특정 버전/커밋으로 재설정한 후 실행할 수 있습니다.git pull --rebase삭제된 모든 커밋을 되돌리려면 이 옵션을 선택합니다.

다음과 같은 도구를 사용하여 프로젝트 기록을 그래픽으로 볼 수 있습니다.gitk그냥 실행:

gitk --all

특정 분기를 체크아웃하려는 경우:

git checkout <branch name>

특정 커밋의 경우 지점 이름 대신 SHA1 해시를 사용합니다.트리 탐색을 위한 다른 옵션을 보려면 Git 커뮤니티 북의 Treeish를 참조하십시오.

git log에는 상세 내역 또는 요약 내역을 표시할 수 있는 전체 옵션 집합이 있습니다.

저는 커밋 히스토리에서 으로 나아가는 쉬운 방법을 모릅니다.선형 이력이 있는 프로젝트는 일반적이지 않을 수 있습니다.SVN이나 CVS와 같은 "개정"에 대한 아이디어는 Git에서 그렇게 잘 매핑되지 않습니다.

커밋의 SHA1 키를 사용하여 다음을 수행할 수 있습니다.

  • 먼저 특정 파일에 대해 원하는 커밋을 찾습니다.

    git log -n <# commits> <file-name>

    이것은 당신의 다을기합니다에 <# commits>특정 파일에 대한 커밋 목록을 생성합니다.

    어떤 약속을 명령을 하는 것이 명령은 과 같습니다.git diff <commit-SHA1>..HEAD <file-name>이 명령은 특정 파일에 대한 현재 버전의 커밋과 이전 버전의 커밋 간의 차이를 표시합니다.

    키은 "": "" "SHA1" ""입니다.git log -n은 다음과 같습니다.

지다를 <SHA1 id>

  • 둘째, 원하는 버전을 확인합니다.

    커밋 다음.git checkout <desired-SHA1> <file-name>

    지정한 파일의 버전이 준비 영역에 배치됩니다..reset HEAD <file-name>

다음하십시오.git checkout HEAD <file-name>

특정 커밋된 코드로 이동하려면 해당 커밋의 해시 코드가 필요합니다.이 해시 코드는 두 가지 방법으로 얻을 수 있습니다.

  1. github/gitlab/bitbucket 계정에서 가져옵니다.(commit url(: github.com/user/my_project/commit/commit_hash_code), )에 있습니다.
  2. git log해당 분기에 대한 최근 커밋을 확인합니다.커밋의 해시 코드와 코드를 커밋하는 동안 남긴 메시지가 표시됩니다. 복한다수행음사수행▁copy▁just다.git checkout commit_hash_code

해당 코드로 이동한 후 작업하고 변경하려면 다음을 사용하여 다른 분기를 만들어야 합니다.git checkout -b <new-branch-name>그렇지 않으면 변경 내용이 유지되지 않습니다.

저는 마스터 브랜치가 있고, 그리고 나서 17.0이라는 다른 브랜치가 있고, 이 17.0 안에는 "XYZ"라는 커밋 해시가 있었습니다.XYZ 개정 전까지는 고객에게 빌드가 제공됩니다.이제 버그를 발견했는데 그 고객을 위해 해결해야 합니다.따라서 "xyz" 해시가 발생할 때까지 해당 고객을 위해 별도의 지점을 만들어야 합니다.제가 이렇게 했습니다.

먼저 로컬 컴퓨터에 해당 고객 이름으로 폴더를 만들었습니다.폴더가 생성되면 고객 이름이 "AAA"라고 입력하고 이 폴더 내에서 다음 명령을 수행합니다.

  1. 잽싸게
  2. git clone 이 명령을 실행하면 마스터 분기에 있게 됩니다.원하는 지점으로 전환합니다.
  3. git checkout 17.0 그러면 커밋이 있는 지점으로 이동합니다.
  4. git checkout 해시 커밋까지 리포지토리를 가져옵니다.해당 commit hash no로 변경된 지점의 이름을 참조하십시오.이제 이 해시에 분기 이름을 지정합니다.
  5. git branch ABC 로컬 컴퓨터에 새 branch를 만듭니다.
  6. git checkout ABC
  7. git push origin ABC 이 분기를 원격 리포지토리로 푸시하고 git 서버에 분기를 만듭니다.끝났습니다.

한 가지 방법은 패치에 대해 수행된 모든 커밋을 만드는 것입니다.초기 커밋을 확인한 다음 읽은 후 순서대로 패치를 적용합니다.

사용하다git format-patch <initial revision>그리고 나서.git checkout <initial revision>당신은 당신의 디렉터에 패치인 4자리 숫자로 시작하는 파일 더미를 얻어야 합니다.

당신이 당신의 개정판을 다 읽었으면 그냥 하세요.git apply <filename>처럼 보여야 하는 것.git apply 0001-*그리고 세어보세요.

그런데 왜 패치 자체를 읽지 않으시는지 정말 궁금합니다.궁금하니까 댓글로 올려주세요.

Git 설명서에서도 다음과 같은 정보를 제공합니다.

git show next~10:Documentation/README

Documentation/README 파일의 내용을 다음 분기의 마지막 10번째 커밋에서 최신 상태로 표시합니다.

당신은 또한 볼 수 있습니다.git blame filename각 행이 커밋 해시 + 작성자와 연결된 목록을 제공합니다.

언급URL : https://stackoverflow.com/questions/7539130/go-to-particular-revision

반응형