GIT 요약

5003 단어 생산성GIT 요약
전재:https://github.com/CyC2018/CS-Notes/blob/master/notes/Git.md
카탈로그
중앙 집중식 및 분산
Hub 서버
워크플로우
분기 실현
충돌
Fast forward
지점 관리 정책
저장(Stashing)
SSH 전송 설정
.gitignore 파일
Git 명령 요약
참고 자료

중앙 집중식 및 분산


Git는 분산 버전 제어 시스템이고 SVN은 중앙 집중식입니다.
집중식 버전 제어는 센터 서버만 코드를 가지고 있고 분포식 버전 제어는 모든 사람의 컴퓨터에 완전한 코드를 가지고 있다.
중앙 버전 제어에 보안 문제가 있어서 센터 서버가 끊기면 모두가 일을 할 수 없습니다.
집중식 버전 제어는 네트워크가 연결되어야만 작동할 수 있으며, 만약 네트워크 속도가 너무 느리다면, 파일을 제출하는 것은 참을 수 없을 정도로 느릴 것이다.분포식 버전 제어는 인터넷을 연결하지 않아도 작동할 수 있다.
분산 버전 제어 새 브랜치, 통합 브랜치 작업 속도가 매우 빠르고 중앙 버전 제어 새 브랜치는 전체 코드를 복제하는 것과 같다.

Hub 서버


Hub 서버는 모든 사용자의 수정을 교환하는 데 사용되며 Hub 서버가 없어도 작동할 수 있지만 Hub 서버는 24시간 켜진 상태를 유지할 수 있어 더욱 편리하게 수정을 교환할 수 있다.
Github는 Hub 서버입니다.

워크플로우


                         
 
창고를 새로 만들면 현재 디렉터리는 작업공간이 되고 작업공간 아래에 숨겨진 디렉터리가 있습니다.git, Git의 버전 라이브러리에 속합니다.
Git 버전 라이브러리에는 스테이지라는 임시 저장소가 있고 자동으로 생성된 마스터 브랜치와 브랜치를 가리키는 HEAD 포인터가 있습니다.
                    
 
  • gitadd 파일은 파일의 수정을 임시 저장소에 추가합니다
  • gitcommit는 임시 저장 구역의 수정을 현재 지점에 제출하고 제출 후 임시 저장 구역은 비워집니다
  • git reset - files는 현재 지점의 수정 덮어쓰기 임시 저장소를 사용하여 마지막gitadd files를 취소합니다
  • git checkout - 파일은 임시 저장소의 수정을 사용하여 작업 디렉터리를 덮어쓰고 로컬 수정을 취소합니다

  •         
     
    임시 저장 영역을 건너뛰고 지점에서 직접 수정을 꺼내거나 수정을 지점에 제출할 수 있습니다.
  • gitcommit-a는 모든 파일의 수정을 임시 저장소에 추가한 후 제출을 실행합니다
  • git checkout HEAD - 마지막 수정 파일을 꺼내서 롤백 작업에 사용할 수 있습니다

  • 분기 실현


    포인터를 사용하여 각 커밋을 하나의 타임라인으로 연결하고 HEAD 포인터는 현재 분기 포인터를 가리킵니다.
                                                                  
     
    새 브랜치는 타임라인에 대한 새 포인터의 마지막 노드이며 HEAD 포인터가 새 브랜치를 가리키면 새 브랜치가 현재 브랜치가 됨을 나타냅니다.
                                             
     
    커밋할 때마다 현재 분기 포인터만 앞으로 이동하고 다른 분기 포인터는 이동하지 않습니다.
                                                  
     
    분기를 합쳐도 포인터를 바꾸기만 하면 된다.
                                                         
     

    충돌


    두 지점 모두 같은 파일의 같은 줄을 수정하면 지점이 합병될 때 충돌이 발생한다.
                                                              
     
    Git는 <<,=======,>>>>을 사용하여 서로 다른 지점의 내용을 표시합니다. 서로 다른 지점의 충돌 부분을 똑같이 수정하면 충돌을 해결할 수 있습니다.
    <<<<<<< HEAD
    Creating a new branch is quick & simple.
    =======
    Creating a new branch is quick AND simple.
    >>>>>>> feature1
    

    Fast forward


    '쾌진식 합병'(fast-farward merge)은 마스터 지점을 합병된 지점을 가리킨다. 이런 모드에서 지점 합병을 하면 지점 정보를 잃어버리거나 지점 역사에서 지점 정보를 볼 수 없다.
    병합할 때 --no-ff 파라미터를 추가하여 Fast forward 모드를 사용하지 못하게 하고, -m 파라미터를 추가하여 병합할 때 새로운commit을 만들 수 있습니다.
    $ git merge --no-ff -m "merge with no-ff" dev
    

                                                 
     

    지점 관리 정책


    마스터 지점은 새로운 버전만 발표하는 데 매우 안정적일 것이다.
    일상적인 개발은 개발 지점 dev에서 진행된다.
                                  
     

    저장(Stashing)


    한 지점에서 작업을 한 후에 수정을 지점에 제출하지 않으면 지점을 전환하면 다른 지점에서도 새로운 수정을 볼 수 있습니다.이것은 모든 지점이 하나의 작업 구역을 공용하기 때문이다.
    gitstash를 사용하여 현재 지점의 수정을 저장할 수 있습니다. 현재 작업 영역의 모든 수정은 창고에 저장됩니다. 즉, 현재 작업 영역은 깨끗하고 제출하지 않은 수정이 없습니다.이제 다른 지점으로 안전하게 전환할 수 있습니다.
    $ git stash
    Saved working directory and index state \ "WIP on master: 049d078 added the index file"
    HEAD is now at 049d078 added the index file (To restore them type "git stash apply")
    

    이 기능은 버그 지점의 실현에 사용할 수 있습니다.현재 dev 지점에서 개발 중이지만 마스터에 버그가 있습니다. 복구가 필요하지만 dev 지점에서 개발이 완료되지 않았습니다. 바로 제출하고 싶지 않습니다.새 버그 지점을 만들고 버그 지점으로 전환하기 전에gitstash를 사용하여 dev 지점의 미제출 수정을 저장해야 합니다.

    SSH 전송 설정


    Git 창고와 Github 센터 창고 사이의 전송은 SSH를 통해 암호화됩니다.
    작업공간 아래에 없으면.ssh 디렉터리, 또는 이 디렉터리에 id_rsa 및 id_rsa.pub 이 두 파일은 다음 명령을 사용하여 SSH 키를 만들 수 있습니다.
    $ ssh-keygen -t rsa -C "[email protected]"
    

    그리고 공개 키 id_rsa.pub의 내용은 Github Account settings의 SSH Keys로 복사됩니다.

    .gitignore 파일


    다음 파일을 무시합니다.
  • 운영체제가 자동으로 생성한 파일, 예를 들어 축소판
  • 자바 컴파일과 같은 중간 파일을 컴파일합니다.class 파일;
  • 자신의 민감한 정보, 예를 들어 구령을 저장하는 프로필..

  • 전부 직접 작성할 필요 없이 도착할 수 있다https://github.com/github/gitignore에서 질의합니다.

    Git 명령 요약


                       
     
    비교적 상세한 주소:http://www.cheat-sheets.org/saved-copy/git-cheat-sheet.pdf

    참고 자료

  • Git - 간단명료한 안내서
  • 도해 Git
  • 료설봉: Git 튜토리얼
  • Learn Git Branching
  • 좋은 웹페이지 즐겨찾기