연구 노트 --- 자식 버전 반환

 

 

우리는 성공적으로 우리는 다음을 변경, readme.txt 파일을 수정하기 위해 계속 수 있도록 현재 작업을 계속 할 수있는 시간이다, 제출하고 readme.txt 파일을 추가했습니다 :

힘내 분산 버전 관리 시스템입니다. 
힘내는 무료 소프트웨어입니다.

이제 실행 git status결과를 볼 명령을 :

$ 자식 상태 
지점 마스터에 
커밋 개최하지 않은 변경 : 
  (사용이 커밋 될 것입니다 무엇을 업데이트하기 위해 "자식이 ... <파일> 추가") 
  (사용 "자식 체크 아웃 - <파일> ..."작업의 변경 사항을 취소합니다 디렉토리) 

	수정 : README.TXT없는 

커밋에 추가 변경을 (사용 "자식 추가"및 / 또는 "자식 -a 커밋")

git status명령은 우리가 항상 저장소의 현재 상태를 파악 할 수 있습니다, 위의 명령의 출력은 우리에게 알려줍니다, readme.txt수정,하지만 제출 된 수정하려면 아직 준비가 안되었습니다.

힘내 우리가 말할 있지만 readme.txt수정,하지만 우리는 콘텐츠에 대한 어떤 구체적인 변화를 볼 수 있다면, 자연이 좋다.

그래서, 우리는 사용할 필요가 git diff볼이 명령을 :

$ 자식 사랑하는 readme.txt를 
사랑하는 --git A / readme.txt를 B / readme.txt를 
인덱스 46d49bf..9247db6 100644 
--- A / readme.txt를 
+++ B / readme.txt를 
@@ -1, +1 2 @@ 
-Git는 버전 관리 시스템이다. 
+ 힘내 분산 버전 관리 시스템입니다. 
 힘내는 무료 소프트웨어입니다.

 

git diff차이를 살펴 보는 것입니다 이름에서 알 수 있듯이, 표시 형식은 일반적인 유닉스은 diff 형식입니다, 위의 명령 출력에서 볼 수있는, 우리는 첫 번째의 라인을 추가 한 distributed단어.

알고 readme.txt변경이 있었는지 후, 다음 더 많은 창고 걱정에 제출하여 변경 내용을 커밋하고 새 문서가 같은 두 단계입니다 제출, 첫 번째 단계는 git add:

$의 자식은 readme.txt를 추가

 또한 출력 없음. 두 번째 단계에서 git commit우리는 실행하기 전에 git status창고의 현재 상태를 살펴 :

$ 자식 상태 
지점 마스터에 
변경 사항이 최선을 다하고있다 : 
  (사용 "자식 ... HEAD <파일> 재설정"unstage하는) 

	수정 :있는 readme.txt를

git status변경 사항을 포함하도록 제출됩니다 것을 우리에게 알려줍니다 readme.txt다음 단계를 안전하게 제출 할 수 있습니다 :

$의 자식이 "분산 추가"-m 커밋 
[마스터 e475afc]를 추가 분산 
 파일 1은 1 개 삽입 (+), 1- 삭제 변화 (-)

제출되면, 우리는 다음 git status저장소의 현재 상태를보고 명령 :

$ 자식 상태 
지점 마스터에 
아무것도 깨끗한 나무 작업, 커밋하기

힘내 우리가 현재 제출 할 필요가 없습니다 임의로 변경 할 이야기, 및 작업 디렉토리가 깨끗한 지입니다 (트리 청소 작업).

개요

  • 작업 영역의 상태에 뒤지지 않도록하기 위해 사용하는 git status명령을.

  • 경우 git status당신이 가진 파일이 수정 된이 말 git diff수정 된 내용을 볼 수 있습니다.

 

버전 롤백

이제 다음과 같이 파일을 수정 한 다음 지금 Git 저장소로 변경 한 후 다시 연습, readme.txt 파일을 수정해야하는지 알고있다 :

힘내 분산 버전 관리 시스템입니다. 
힘내는 GPL에 따라 배포 된 무료 소프트웨어입니다.

 그런 다음 커밋하려고 :

$의 자식 README.txt가 추가 
"GPL을 추가"-m 커밋 $의 자식을 
[마스터 1094adb]가 GPL 추가 
 변경 한 파일을 삽입 1 (+), 1- 삭제 (-)

이러한 방법으로, 당신은 지속적으로 RPG 게임을 같이 저장소에 변경 사항을 커밋 계속 다음 파일을 변경하고, 각 게임은 자동으로되지 일부 과거 해제하는 경우, 당신은 또한 읽을 선택할 수 있습니다 패스를 통해 상태를 저장한다 테이크 오프 상태 전에. 보스 싸울 실패의 경우에, 당신은 가장 가까운 곳에서 다시 시작할 수 있도록 때로는 보스를 재생하기 전에, 당신은 수동으로 저장합니다. 힘내는 어느 정도 수정 파일을 느낄 때마다,이 스냅 샷이 망할 놈의 호출은 "스냅 샷을 저장할"수 동일합니다 commit. 당신은뿐만 아니라 최근의 혼란, 또는 실수로 삭제 된 파일의 변경 파일되면 commit복원하고 오히려 손실 작품의 몇 개월의 결과보다, 작업을 계속합니다.

이제, 우리는보고 readme.txt창고에 제출 망할 놈의 여러 버전의 파일 :

版本 1 : readme 파일을 작성

힘내는 버전 관리 시스템입니다. 
힘내는 무료 소프트웨어입니다.

  

버전 2 : 분산 추가 할

힘내 분산 버전 관리 시스템입니다. 
힘내는 무료 소프트웨어입니다.

  

버전 3 : GPL을 추가

힘내 분산 버전 관리 시스템입니다. 
힘내는 GPL에 따라 배포 된 무료 소프트웨어입니다.

물론, 실제로, 우리는 각 파일의 수천 라인은 무엇을 변경, 또는 버전 제어 시스템을 수행하는 방법에 내 마음을 기억하고 있습니다. 버전 관리 시스템은 명령 기록 힘내, 우리가 사용하는, 우리를 말할 수 있어야합니다 git log보기 명령을 :

git log명령은 우리가 가장 최근에, 3 제출을 볼 수있는 가장 먼에서 가장 최근의 커밋 로그 표시 append GPL, 마지막 시간 add distributed, 처음이었다 wrote a readme file.

출력 너무 많은 정보는, 눈부신 표시되면 추가 할 수있는 --pretty=oneline매개 변수를 :

 

$ 이눔 = oneline --pretty 로그인 
GPL을 추가 - 1094adb7b9b3807259d8cb349e7df1d4d6477073 (> 마스터 HEAD) 
분산 추가 e475afc93c209a690c39c13a46716e8fa000c366 
eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0는 readme 파일을 작성

필요한 팁 비슷한의 긴 목록을 볼 수 있다는 것입니다 1094adb...이다 commit id힘내는, SVN과 같은 (버전 번호), 그리고 commit id1,2,3 ...... 증분 번호가 아닙니다,하지만 SHA1이 매우 큰 계산 디지털 16 진수, 당신은보고 commit id, 나는 확실히 당신의 주제를 좋아하지 않는다. commit id우리는 그것을 대표 번호와 같은 문자열을 사용해야합니까? 망할 놈의 분산 버전 관리 시스템이기 때문에 모두가 1,2,3를 사용하는 경우, 우리는 버전 번호, 그것은 충돌에 확실히 ......, 같은 저장소 작업을 다시 사람들을 연구해야합니다.

각 사실, 힘내 함께 자동으로 타임 라인을 중독 넣어 것, 새 버전을 제출했다. 당신이 망할 놈의 기록을 볼 수 시각화 도구를 사용하는 경우, 우리는 더 명확하게 역사의 타임 라인의 제출을 ​​볼 수 있습니다 :

우선, 힘내 버전, 힘내에서 사용하는 최신 버전의 알고 있어야 HEAD제출 한 최신 현재 버전을 나타냅니다을 1094adb...(내 제출 ID를 기록하고 당신은 확실히 동일하지 않습니다), 이전 버전입니다 HEAD^, 이전 버전입니다 HEAD^^, 물론, 100 쓰기 100 버전은 ^이렇게 기록, 계산하는 것이 더 쉽습니다 HEAD~100.

이제, 우리는 현재 버전이 원하는 append GPL이전 버전으로 가을 add distributed, 당신이 사용할 수있는 git reset명령을 :

$의 자식은 --hard HEAD ^ 다시 
분산 추가 할 e475afc에서 지금 HEAD를

한 번 봐 가지고 readme.txt버전이 아닌 내용을 add distributed:

$ 고양이의 readme.txt 
힘내 분산 버전 관리 시스템입니다. 
힘내는 무료 소프트웨어입니다.

 

아니나 다를까,이 복원되었습니다.

당신은 이전 버전으로 계속 감소 할 수 wrote a readme file있지만, 분을 기다린 후 우리는 git log저장소의 현재 상태를 보면 :

$의 자식이 로그 
e475afc93c209a690c39c13a46716e8fa000c366 커밋 (HEAD를 -> 마스터) 
저자 : 마이클 리아 <[email protected]> 
날짜 : 금 5월 18일 21시 3분 36초 2018 0800 

    분산 추가 

eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0 커밋 
저자 : 마이클 리아 <[email protected]> 
날짜 : (18) 20시 59분 18초 2018 0800 금 

    추가 정보 파일을 작성

  

최신 버전 append GPL이었다가 볼 수 있습니다! 21 세기가 19 세기에 와서에서 당신은 타임 머신처럼 앉아, 이미 돌아가서 다시 가고 싶어, 부어합니까?

방법하지만 여전히, 한 위의 명령 줄 창을 해제하지 않은, 당신은하고 검색 및 아 검색, 그 발견 후속 할 수있다 append GPLcommit id1094adb..., 그래서 그는 미래의 버전을 지정 반환 할 수 있습니다 :

$의 자식 --hard 1094a의 재설정 
GPL을 추가 83b0afe에서 지금 HEAD입니다

버전 번호가 전체 그것에 처음 몇을 쓸 필요가 없습니다, 힘내 자동으로 찾습니다. 망할 놈의 하나 개 이상의 버전 번호를 찾을 수 있기 때문에 물론, 첫 번째 하나 또는 두 개의를 작성하지, 당신은 어느 하나를 확인할 수 없습니다.

그런 다음 조심스럽게보고 readme.txt내용 :

$ 고양이의 readme.txt 
힘내 분산 버전 관리 시스템입니다. 
힘내는 GPL에 따라 배포 된 무료 소프트웨어입니다.

  

아니나 다를까, 다시 난 후 한산.

힘내 내부의 현재 버전에 포인트가 있기 때문에 Git 버전 롤백 속도가 매우 빠르고, HEAD당신은 시간의 버전을 롤백 포인터, 힘내 그냥 HEAD 점에서이다 append GPL:

 

┌────┐
│HEAD│
└────┘
   │
   └──> ○ append GPL
        │
        ○ add distributed
        │
        ○ wrote a readme file

를 가리 키도록 add distributed:

┌────┐
│HEAD│
└────┘
   │
   │    ○ append GPL
   │    │
   └──> ○ add distributed
        │
        ○ wrote a readme file

그 다음 방법은 문서 작업 영역을 업데이트합니다. 그래서 당신은 얻을 HEAD버전 번호, 당신은 위치의 현재 버전은 넣어 포인트.

지금, 당신은 다시 버전으로 가을, 컴퓨터를 끄고, 다음 아침에 후회 것이고, 수행하는 방법의 새로운 버전으로 돌아가시겠습니까? 의 새 버전을 찾을 수 없습니다 commit id하는 방법을?

힘내에서 항상 먹을 수있다 후회한다. 사용할 때 $ git reset --hard HEAD^다시 퇴각 add distributed릴리스의 시간으로 돌아 싶습니다 append GPL당신이 찾아야합니다, append GPL커밋 ID를. 힘내는 명령을 제공 git reflog하여 모든 명령을 기록하기를 :

$의 자식 reflog의 
e475afc 헤드 @는 {1} 리셋 : HEAD ^ 이동 
1094adb (HEAD -> 마스터) HEAD의 @ {2} 커밋 GPL 추가 
e475afc HEAD의 @을 {3} : 커밋 분산 추가 
eaadf4e 헤드 @을 {4} (초기)를 커밋 : 추가 정보 파일을 작성

 마지막으로 우리는 출력에서 볼 수있는, 한숨 append GPLID가시 커밋 1094adb, 지금, 당신은 다시 미래로 타임머신을 탈 수 있습니다.

개요

요약하면 :

  • HEAD감독 버전은 따라서 힘내는 명령을 사용하여, 역사의 버전 간 셔틀 우리를 허용, 현재 버전입니다 git reset --hard commit_id.

  • 와 셔틀 전에 git log커밋 역사를 볼 수있는, 다시 떨어질 버전을 확인합니다.

  • 로, 미래로 돌아가려면 git reflog당신이 미래 버전으로 돌아가려면 무엇을 결정하기 위해 뷰 명령 기록.

 

추천

출처www.cnblogs.com/saryli/p/11367676.html