git 버 전 리 턴동력 노드 자바 대학 정리

7598 단어 git.판본
readme.txt 파일 을 다음 과 같이 수정 합 니 다.

Git is a distributed version control system.
Git is free software distributed under the GPL.
그리고 제출 시도:

$ git add readme.txt
$ git commit -m "append GPL"
[master 3628164] append GPL
 1 file changed, 1 insertion(+), 1 deletion(-)
이렇게 파일 을 계속 수정 한 다음 에 버 전 라 이브 러 리 에 수정 사항 을 계속 제출 하 는 것 은 RPG 게임 을 할 때 관문 을 통과 할 때마다 자동 으로 게임 상 태 를 저장 하 는 것 과 같 습 니 다.만약 에 특정한 관문 이 지나 가지 않 으 면 이전 관문 의 상 태 를 읽 는 것 도 선택 할 수 있 습 니 다.어떤 때 는 보스 를 때 리 기 전에 수 동 으로 저장 해서 만약 에 보스 를 때 리 는 데 실패 하면 가장 가 까 운 곳 에서 다시 시작 할 수 있 습 니 다.Git 도 마찬가지 입 니 다.파일 이 어느 정도 수정 되 었 다 고 생각 될 때마다'스냅 샷 저장'을 할 수 있 습 니 다.이 스냅 샷 은 Git 에서 commt 라 고 부 릅 니 다.파일 을 어 지 럽 히 거나 파일 을 잘못 삭제 하면 최근 의 commt 에서 복원 한 다음 에 몇 달 동안 의 업무 성 과 를 모두 잃 어 버 리 는 것 이 아니 라 계속 일 할 수 있 습 니 다.
이제 readme.txt 파일 의 몇 가지 버 전이 Git 창고 에 제출 되 었 는 지 살 펴 보 겠 습 니 다.
버 전 1:

wrote a readme file
Git is a version control system.
Git is free software.
버 전 2:

add distributed
Git is a distributed version control system.
Git is free software.
버 전 3:

append GPL
Git is a distributed version control system.
Git is free software distributed under the GPL.
물론 실제 업무 에서 우리 머 릿 속 에 수천 줄 의 파일 이 매번 어떤 내용 을 고 쳤 는 지 기억 할 수 있 습 니까?그렇지 않 으 면 버 전 관리 시스템 에서 무엇 을 해 야 합 니까?버 전 관리 시스템 에 과거 기록 을 알려 주 는 명령 이 있 을 것 입 니 다.Git 에 서 는 git log 명령 으로 볼 수 있 습 니 다.

$ git log
commit 3628164fb26d48395383f8f31179f24e0882e1e0
Author: Michael Liao <[email protected]>
Date: Tue Aug 20 15:11:49 2013 +0800
 append GPL
commit ea34578d5496d7dd233c827ed32a8cd576c5ee85
Author: Michael Liao <[email protected]>
Date: Tue Aug 20 14:53:12 2013 +0800
 add distributed
commit cb926e7ea50ad11b8f9e909c05226233bf755030
Author: Michael Liao <[email protected]>
Date: Mon Aug 19 17:51:55 2013 +0800
 wrote a readme file
git log 명령 은 최근 부터 가장 먼 곳 까지 의 제출 로 그 를 보 여 줍 니 다.우 리 는 세 번 의 제출 을 볼 수 있 습 니 다.가장 가 까 운 것 은 append GPL 이 고,지난번 에는 add distributed 이 며,가장 먼저 wrote a readme file 입 니 다.출력 정보 가 너무 많아 서 눈 이 어 지 럽 습 니 다.-pretty=oneline 인 자 를 추가 해 보 세 요.

$ git log --pretty=oneline
3628164fb26d48395383f8f31179f24e0882e1e0 append GPL
ea34578d5496d7dd233c827ed32a8cd576c5ee85 add distributed
cb926e7ea50ad11b8f9e909c05226233bf755030 wrote a readme file
우정 힌트 가 필요 한 것 은 당신 이 본 커 다란 꼬치 가 3628164...882 e1e 0 과 비슷 한 것 은 commt id(버 전 번호)입 니 다.SVN 과 다 릅 니 다.Git 의 commt id 는 1,2,3...증가 하 는 숫자 가 아니 라 SHA 1 이 계산 한 아주 큰 숫자 입 니 다.16 진법 으로 표시 합 니 다.그리고 당신 이 본 commt id 는 나의 것 과 다 를 것 입 니 다.당신 의 것 을 기준 으로 합 니 다.왜 commt id 는 이렇게 큰 숫자 로 표시 해 야 합 니까?Git 은 분포 식 버 전 관리 시스템 이기 때문에 그 다음 에 우 리 는 여러 사람 이 같은 버 전 라 이브 러 리 에서 일 하 는 것 을 연구 해 야 한다.만약 에 모두 가 1,2,3 을 버 전 번호 로 사용한다 면 충돌 할 것 이다.
새 버 전 을 제출 할 때마다 Git 은 자동 으로 타임 라인 으로 연결 합 니 다.Git 과거 기록 을 시각 화 도구 로 보면 과거 기록 을 제출 하 는 타임 라인 을 더 잘 볼 수 있 습 니 다.

자,이제 타 임 머 신 을 시작 해서 readme.txt 를 이전 버 전,즉"add distributed"버 전 으로 되 돌려 보 내 려 고 합 니 다.어떻게 하 시 겠 습 니까?
먼저,Git 은 현재 버 전이 어떤 버 전인 지 알 아야 합 니 다.Git 에 서 는 HEAD 로 현재 버 전,즉 최신 제출 3628164...882 e1e 0(내 제출 ID 와 당신 의 것 이 다 를 것 임 을 주의 하 세 요)을 표시 합 니 다.이전 버 전 은 HEAD^,이전 버 전 은 HEAD^입 니 다.100 개 버 전 으로 100 개 를 쓰 면^쉽게 셀 수 없 기 때문에 HEAD~100 으로 쓰 십시오.
현재 버 전의"append GPL"을 이전 버 전의"add distributed"로 되 돌려 주 려 면 git reset 명령 을 사용 할 수 있 습 니 다.

$ git reset --hard HEAD^
HEAD is now at ea34578 add distributed
--hard      ?      ,        。
readme.txt 의 내용 이 버 전 add distributed 인지 확인 하 세 요:

$ cat readme.txt
Git is a distributed version control system.
Git is free software.
과연.
이전 버 전 writted a readme file 로 계속 되 돌 릴 수 있 습 니 다.하지만 잠시 만 요.git log 로 현재 버 전 라 이브 러 리 의 상 태 를 다시 보 겠 습 니 다.

$ git log
commit ea34578d5496d7dd233c827ed32a8cd576c5ee85
Author: Michael Liao <[email protected]>
Date: Tue Aug 20 14:53:12 2013 +0800
 add distributed
commit cb926e7ea50ad11b8f9e909c05226233bf755030
Author: Michael Liao <[email protected]>
Date: Mon Aug 19 17:51:55 2013 +0800
 wrote a readme file
최신 버 전의 append GPL 은 이미 볼 수 없습니다!마치 당신 이 21 세기 에 타 임 머 신 을 타고 19 세기 에 온 것 과 같 습 니 다.다시 돌아 가 고 싶 어도 돌아 갈 수 없습니다.부 으 면 어떻게 합 니까?
방법 은 사실 있 습 니 다.위의 명령 행 창 이 꺼 지지 않 았 다 면 위 를 찾 아 보 세 요.찾 아 보 세 요.그 append GPL 의 commt id 는 3628164 입 니 다.그래서 미래 로 돌아 가 는 버 전 을 지정 할 수 있 습 니 다.

$ git reset --hard 3628164
HEAD is now at 3628164 append GPL
버 전 번 호 를 다 쓸 필요 가 없어 요.앞 자리 만 쓰 면 돼 요.Git 이 자동 으로 찾 아 갈 거 예요.물론 한두 자리 만 쓸 수 는 없다.Git 이 여러 버 전 번 호 를 찾 을 수 있 기 때문에 어느 것 인지 알 수 없다.
readme.txt 의 내용 을 조 심 스 레 살 펴 보 자.

$ cat readme.txt
Git is a distributed version control system.
Git is free software distributed under the GPL.
과연 나 후 한 삼 이 다시 돌 아 왔 다.
Git 의 버 전 을 되 돌 리 는 속도 가 매우 빠 릅 니 다.Git 내부 에 현재 버 전 을 가리 키 는 HEAD 포인터 가 있 기 때 문 입 니 다.버 전 을 되 돌 릴 때 Git 은 HEAD 를 append GPL 을 가리 키 는 것 일 뿐 입 니 다.

add distributed 로 변경:

그리고 작업 영역의 파일 을 업 데 이 트 했 습 니 다.그래서 HEAD 에 게 어떤 버 전 번 호 를 가리 키 라 고 하면 현재 버 전 을 어디 에 위치 시 킵 니까?
지금 당신 은 어떤 버 전 으로 되 돌아 가 컴퓨터 를 껐 습 니 다.다음날 아침 에 후 회 했 습 니 다.새로운 버 전 으로 회복 하려 면 어떻게 합 니까?새 버 전의 commt id 를 찾 을 수 없 으 면 어떻게 합 니까?
Git 에 서 는 항상 후회 하 는 약 을 먹 을 수 있다.$git reset--hard HEAD^를 add distributed 버 전 으로 되 돌 릴 때 append GPL 로 복원 하려 면 append GPL 의 commt id 를 찾 아야 합 니 다.Git 은 모든 명령 을 기록 하기 위해 git reflog 명령 을 제공 합 니 다.

$ git reflog
ea34578 HEAD@{0}: reset: moving to HEAD^
3628164 HEAD@{1}: commit: append GPL
ea34578 HEAD@{2}: commit: add distributed
cb926e7 HEAD@{3}: commit (initial): wrote a readme file
드디어 한숨 을 쉬 었 습 니 다.두 번 째 줄 에 append GPL 을 표시 하 는 commt id 는 3628164 입 니 다.이제 타 임 머 신 을 타고 미래 로 돌아 갈 수 있 습 니 다.
작은 매듭
이제 정리 해 보 자.
  • HEAD 가 가리 키 는 버 전이 현재 버 전이 기 때문에 Git 은 버 전의 역 사 를 오 가 며 git reset--hard commt 명령 을 사용 할 수 있 습 니 다.id。
  • 오 가기 전에 git log 로 제출 역 사 를 확인 하여 어느 버 전 으로 되 돌아 갈 지 확인 할 수 있 습 니 다
  • 미래 로 돌아 가 려 면 git reflog 로 명령 역 사 를 살 펴 보고 미래 로 돌아 가 려 는 버 전 을 확인 하 십시오
  • 좋은 웹페이지 즐겨찾기