답변:
git checkout <sha1>
특정 커밋을 체크 아웃하는 데 사용 합니다.
git log
이제 첫 번째 커밋 만 표시합니다. 다음 커밋의 sha1을 찾을 수 있습니까?
git log --oneline
참조를 위해 출력을 텍스트 파일로 실행 하고 붙여야합니다 (축약 된 sha1 합계는 고유 한 것으로 보장됩니다). 당신의 역사는 선형 경우 또 다른 옵션은,의 처음까지 커밋에서 얼마나 많은 커밋 파악하는 것입니다 master
사용 git checkout master~543
후, (543 개 커밋이있는 경우) git checkout master~542
등
특정 버전 / 커밋으로 이동하려면 다음 명령을 실행하십시오. 당신이 얻을 수있는 해시 코드git log --oneline -n 10
git reset --hard HASH-CODE
주 – 특정 버전 / 커밋으로 재설정 한 후 git pull --rebase
폐기 된 모든 커밋을 다시 가져 오려면을 실행할 수 있습니다 .
reset
만 그것은 또한 이동 그래프에서 특정 지점을 체크 아웃하지 않는 현재 지점 체크 아웃
reset
보류중인 모든 변경 사항이 삭제됩니다.
git pull --rebase
당신이 당신의 repo에 대한 원격이있는 경우에만 작동 및 이 최신입니다.
와 같은 도구를 사용하여 프로젝트 히스토리를 그래픽으로 볼 수 있습니다 gitk
. 그냥 실행 :
gitk --all
특정 지점을 체크 아웃하려면 다음을 수행하십시오.
git checkout <branch name>
특정 커밋의 경우 분기 이름 대신 SHA1 해시를 사용하십시오. (참조 Treeishes 에서 힘내 커뮤니티 도서 좋은 읽기입니다, 당신의 나무를 탐색하기위한 다른 옵션을 볼 수 있습니다.)
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>
나는 우리에게 마스터 브랜치가 있고 17.0이라는 또 다른 브랜치가있는 상황에 있었고이 17.0 안에는 "XYZ" 라는 커밋 해시가있었습니다 . 그리고 XYZ 개정판까지 고객에게 빌드가 제공됩니다. 이제 버그가 발생하여 해당 고객을 위해 해결해야합니다. 따라서 "xyz"해시까지 해당 고객에 대해 별도의 지점을 만들어야합니다. 그래서 내가 한 일이 여기에 있습니다.
먼저 로컬 컴퓨터에 해당 고객 이름으로 폴더를 만들었습니다. 해당 폴더가 생성되면 고객 이름이 "AAA"라고 말하고이 폴더 내에서 다음 명령을 실행하십시오.
한 가지 방법은 패치에 대한 모든 커밋을 만드는 것입니다. 초기 커밋을 확인한 다음 읽은 후 순서대로 패치를 적용하십시오.
사용 git format-patch <initial revision>
후 git checkout <initial revision>
. 감독은 4 자리 숫자로 시작하여 파일 더미를 가져와야합니다.
개정판을 다 읽었을 때 git apply <filename>
어떤 모양
git apply 0001-*
과 계산이 필요한지 확인하십시오.
그러나 왜 패치 자체를 대신 읽고 싶지 않을까요? 궁금해서 의견을 적어주십시오.
자식 매뉴얼도 나에게 이것을 제공합니다 :
git show next~10:Documentation/README
다음 지점의 마지막 10 번째 커밋에서 현재 상태 인 Documentation / README 파일의 내용을 표시합니다.
또한 git blame filename
각 줄이 커밋 해시 + 작성자와 관련된 목록을 제공합니다.
커밋 된 특정 코드를 얻으려면 해당 커밋 의 해시 코드 가 필요합니다 . 해시 코드는 두 가지 방법으로 얻을 수 있습니다.
git log
해당 지점에서 최근 커밋을 확인하십시오. 커밋의 해시 코드와 코드를 커밋하는 동안 떠난 메시지가 표시됩니다. 그냥 복사 한 다음git checkout commit_hash_code
해당 코드로 이동 한 후 작업하고 변경하려면을 사용하여 다른 분기를 작성해야합니다 git checkout -b <new-branch-name>
. 그렇지 않으면 변경 사항이 유지되지 않습니다.
git log -n1
. 그러나git checkout
실패 하지 않으면 노력의 낭비입니다.