Git 기록 제어

우리는 모두 다음과 같은 유형의 git 역사를 잘 알고 있다.

다음 내용은 git 역사의'나쁨'범주로 분류됩니다.
  • 잘못된 제출 메시지
  • 대규모 제출(관련 없는 변경 포함)
  • 커밋 (분산된 유사 변경)
  • 뚜렷하고 읽기 쉬운 역사는 프로젝트가 어떻게 구축되었는지 이야기한다.그것은 길을 따라 완성되는 모든 단계를 더욱 쉽게 제어하고 필요할 때 변경할 수 있으며 너무 많은 혼란을 초래하지 않는다.더 뚜렷한 역사 기록은 우리가 변경 주석을 생성하고 무료한 일을 자동화하는 것을 허용한다.모든 제출은 프로젝트의 작업 사본이어야 한다.
  • 만약 귀하가 작은 관련 제출이 있다면, 우리는 그것을 하나로 압박할 수 있습니다
  • 만약에 비교적 큰 제출이 있다면, 우리는 이 제출을 일련의 비교적 작은 제출로 분할할 수 있습니다. 이 제출은 논리적 변경 집합을 나타냅니다
  • .
  • 제출 메시지가 올바르지 않으면 다시 쓸 수 있습니다
  • 제출할 필요가 없으면 삭제합니다
  • 제출한 내용을 수정해야 할 경우 수정할 수 있습니다.
    우리는 모든 업무에 필요한 지식을 이해할 것이다.
  • git부터 시작합시다.

    제출 취소


    취소할 커밋은 다음 두 위치 중 하나에 있습니다.

    커밋이 푸시되고 다른 사용자가 사용됨


    이 경우 다음 명령을 사용할 수 있습니다.
    git revert HEAD
    
    이것은 이전 제출을 토대로 새로운 제출을 만들 것입니다. 여기에는 지난번 제출과 상반된 변경 사항이 포함되어 있습니다.

    an option --no-commit that would not auto commit, but introduce change in staging area.


    전송되지 않은 커밋 (로컬 저장소에만 있음)


    git reset --hard HEAD~1 // Go back in time, throwing away changes
    
    여기서 HEAD ~ 1은 목표가 goto에 제출됨을 나타내며 HEAD에서 한 걸음 후퇴합니다.재설정 시 다음 세 가지 옵션 제공

    --soft (removes the commit and bring it back to staging area, working directory untouched)
    --mixed (removes the commit from staging area (i.e. unstage) to working directory, the default option)
    --hard (removes the commit completely, even from working directory)


    분실된 제출 복구


    git를 사용하면 쓰레기가 수집되지 않는 한 제출을 잃어버리지 않습니다.역사상 생성된 모든 커밋을 볼 수 있는 신기한 명령이 있습니다.
    git reflog
    
    기본적으로 당신의 머리가 Git에서 어디로 가든지 Reflog에서 찾을 수 있습니다.reflog는 HEAD가 가리키는 제출 시퀀스 테이블입니다. 리셋 취소 기록입니다.reflog는 Repo 자체의 일부분이 아니며 전송, 가져오기 또는 복제에 포함되지 않습니다.이것은 단지 현지의 것이다.
    헤더를 방금 리셋해서 잘못된 제출을 가리키거나 의외의 재설정기를 실행하거나 의외로 지점을 삭제했다고 가정하십시오.이 명령에서 지정한 기록을 사용하여 작업을 복원할 수 있습니다.

    우리는 현재 제출한 모든 유일한 식별자를git 서명하거나 현재 지점에서 선택하기만 하면 됩니다.만약 우리가 서명하여 제출한다면, 우리는 다시 처음부터 그것을 재설정할 수 있다.
    이 명령은 분기, 심지어 시간을 필터로 사용할 수 있다
    git reflog HEAD@{1.day.ago} 
    

    정시에 다시 기록하다


    시간 필터는 모든git 명령에 전달할 수 있습니다
    지원되는 시간 필터는 다음과 같습니다.
    a、 1.분이전
    b、 1.시간이전
    c、 1.낮.이전
    어제
    e、 1.활용단어참조이전
    f、 1.달.이전
    g、 1.연중이전
    git diff master@{0} master@{1.day.ago}
    
    이 명령은 1일 전에 현재 주 지점과 주 지점을 구분합니다.한 시간 내에 발생한 변경 사항을 알고 싶다면, 이것은 매우 유용하다.

    마지막 제출 변경


    마지막으로 제출한 내용을 변경하든지 제출 메시지만 변경하든지 우리는 다음git 명령을 사용할 수 있습니다.
    git commit --amend
    

    마지막 커밋에서 변경 내용 추가

  • 필요한 변경
  • 변경 사항 준비
  • git 제출 - 수정
  • 마지막 커밋에 포함되지 않은 파일 추가

  • 파일 임시 저장
  • git 제출 - 수정
  • 마지막 커밋에 예기치 않게 포함된 파일 삭제

  • git 리셋 - 혼합 헤드 1
  • gitclean-fd(미추적 파일 삭제)
  • gitcommit-m'신규 제출 메시지'
  • 이전 제출 변경


    역사적으로 오래된 제출을 편집하려면gitrebase를 사용하십시오. (제출이 다른 누구에게도 사용되지 않았을 때만)
    git rebase -i HEAD~2
    
    여기서 두 번째는 역사를 재방송하고 싶을 때까지 목표가 된다.변경해야 할 id 앞에 id를 제출할 수도 있습니다.
    커밋은 변경할 수 없으므로 재설정 베이스는 커밋을 다시 작성합니다.
    이 명령은 다음 텍스트 편집기에서 스크립트를 엽니다.

    최신 커밋은 아래에 있습니다.
    스크립트를 필요에 따라 변경할 수 있습니다. 단어'pick'을 제출할 때 필요한 동작으로 바꿀 수 있습니다.마지막 세 번째 제출에 "편집"을 추가합니다. 변경하고 싶은 제출이기 때문입니다.

    이제 파일을 저장하고 종료합니다.Git은 커밋할 때 중지됩니다. 변경 사항을 실행하고 "Git commit-amend"명령을 사용할 수 있습니다.

    완성된 후에 우리가 해야 할 일은 다음과 같은 도구를 사용하여 기초를 계속 재설정하는 것이다.
    git rebase --continue
    

    재베이스 프로세스가 완료되고 제출 기록을 다시 볼 수 있습니다.편집으로 표시된 제출 메시지를 변경했습니다.
    git log
    

    따라서gitrebase는 전체git 제출 역사를 재방송하고 제출할 때마다 필요한 단독 작업을 수행할 수 있습니다.이 옵션은 여러 개의 커밋을 하나의 커밋으로 삭제하거나 재정리하거나 압축할 때도 사용됩니다.

    분할 제출


    다음 git 기록을 가지고 있다고 가정하십시오.

    상단의 두 번째 제출에서 보듯이 "cca3a22 업데이트 jquery 버전과 TnC"
    TnC와 jquery 버전을 업데이트하는 것은 두 가지 상관없는 일로 제출에 동시에 존재해서는 안 된다.그래서 우리는 이 제출을 두 개의 단독 제출로 나누어야 한다.
    따라서 제출 id를 잡고 아버지로부터 다시 지정합니다.
    git rebase -i 44da2c9
    
    커밋을 선택에서 편집으로 표시

    이제 재설정 베이스는 커밋할 때 중지되며 커밋을 별도의 커밋으로 분할할 수 있습니다.

    HEAD는 현재 조합 제출을 가리키며, 이 제출에 사용된 소프트 또는 혼합 변경 사항을 취소하려면reset 명령을 사용할 수 있습니다.
    git reset --mixed HEAD~1
    
    이것은commit의 내용을 작업 디렉터리로 가져갈 것입니다.지금 우리는 각각 이 두 가지 일을 제출할 수 있다.
    두 번의 제출을 완료한 후, 당신은 계속해서 중기를 완성할 수 있습니다.
    git rebase --continue
    
    이후 새 역사는 다음과 같습니다.

    당신이 할 수 있는 바와 같이, 우리는 우리의 제출을 두 개의 단독 제출로 나누는 데 성공했다.
    문장의 끝에 이 편지를 보내 주셔서 감사합니다.

    새로운 것을 배웠다면 피드백을 남기거나 이익을 얻을 수 있는 사람과 공유해 보세요.개인 정보에서 저에게 인사를 하거나 다른 일을 서명해 주십시오.:)

    좋은 웹페이지 즐겨찾기