알 아야 할 Git 명령

이 노트 는 Git 지식 을 배우 기 위해 수집 하고 정리 한 것 으로 주로 '모 를 수도 있 는 15 개의 Git 명령' 이라는 댓 글 의 영향 을 받 아 이 노트 를 기록 하려 고 한 것 이다. 만약 에 비슷 한 점 이 있다 면 순 전 히 우연 한 일치 이다.
Git 은 분포 식 버 전 관리 소프트웨어 로 처음에는 더 잘 관리 하기 위해 서 였 다.Linux 커 널 개발 로 디자인 되 었 습 니 다.
출처: 위 키 백과 - GitGit 시스템 (또는 그룹) 파일 의 역 사 를 주석 할 수 있 는 소프트웨어 입 니 다.이 제출 은 주어진 시간 에 시스템 에 대한 차이 점 인 '스냅 샷' 입 니 다.
홈 페이지 다운로드 속도 가 느 립 니 다. 이 링크 를 사용 하여 다운로드 하거나 Github 주 소 를 다운로드 할 수 있 습 니 다. 다른 버 전이 필요 하 시 면 issue 연락 주세요.
1. Git 설정
--system #    
--global #    
--local #      

git config --global user.name "xxxx" #   
git config --global user.email "[email protected]" #  

git config --list #       

원 격 창고 연결 github
  • 창설 SSH Key
    ssh-keygen -t rsa -C 
  • 로그 인 GitHub, 열기 Account settings -> SSH Keys -> Add SSH Key, 임의의 Title 을 작성 하고 Key 텍스트 상자 에 파일 내용 붙 이기 id_rsa.pub
  • 연결 여부 테스트
    ssh [email protected]
  • 몇 가지 개념:
    작업 공간 (Working Directory): 컴퓨터 에서 볼 수 있 는 목록 입 니 다.
    임시 저장 소 (stage / index): 다음 에 제출 할 파일 목록 정 보 를 저장 합 니 다. 보통 .git 디 렉 터 리 에 저 장 된 index 파일 (.git/index) 에 저 장 됩 니 다. 그래서 저 희 는 임시 저장 소 를 색인 (index) 이 라 고도 부 릅 니 다.
    버 전 라 이브 러 리 (Repository): 작업 영역 에 숨겨 진 디 렉 터 리 .git 가 있 습 니 다. 이것 은 작업 영역 이 아니 라 Git 버 전 라 이브 러 리 입 니 다.
    원 격 창고 (Remote)완 일 봉 선생님 이 Git 작업 구역, 임시 저장 구역, 버 전 라 이브 러 리, 원 격 창고 에 대한 설명
    Runoob Git 작업 영역, 임시 저장 영역, 버 전 라 이브 러 리, 원 격 창고 에 대한 설명
    파일 설정 무시: 추가 .gitignore 파일
    파일 .gitignore 의 형식 규범 은 다음 과 같다.
  • 모든 빈 줄 이나 로 시작 하 는 줄 은 Git 에서 무시 합 니 다.
  • 표준 glob 모드 를 사용 하여 일치 할 수 있 습 니 다.
  • 매 칭 모드 는 / 로 시작 하여 재 귀 를 방지 할 수 있 습 니 다.
  • 일치 모드 는 / 마지막 으로 디 렉 터 리 를 지정 할 수 있 습 니 다.
  • 지정 한 모드 이외 의 파일 이나 디 렉 터 리 를 무시 하려 면 모드 앞 에 느낌표 ! 를 붙 여 반대 할 수 있 습 니 다.

  • 2. 버 전 라 이브 러 리 만 들 기
    버 전 라 이브 러 리 는 창고 라 고도 부 릅 니 다. 영어 이름 repository 은 하나의 디 렉 터 리 로 간단하게 이해 할 수 있 습 니 다. 이 디 렉 터 리 안의 모든 파일 은 Git 관리 할 수 있 습 니 다. 모든 파일 의 수정, 삭제, Git 추적 할 수 있 습 니 다. 언제든지 역 사 를 추적 하거나 미래 어느 순간 에 '복원' 할 수 있 습 니 다.
    git clone url # clone    
    git init #         

    3. Git 분기master: 기본 개발 지점HEAD: 현재 개발 지점HEAD^([n]): HEAD 의 제 n 차 부 는 제출 했 고 ^^1 에 해당 했다.HEAD~([n]): HEAD 의 제 n 조상 제출origin: 기본 원 격 버 전 라 이브 러 리
    graph TD;
        br1_c1-->master*;
        br2_c2-->master*;
        br3_c3-->master*;
        br1_c1_c1-->br1_c1;
        br2_c2_c2-->br2_c2;
        br3_c3_c3-->br3_c3;
    master: master 분기*: HEAD, 현재 활약 (개발) 지점br1_c1: br1 분기 의 제출 첫 번 째 제출br1_c1_c1: br1_c1 의 첫 번 째 제출
        `^` `~`?
         ,       `master`, `HEAD`  `master`, `c1`, `c2`, `c3` `master`      
    `HEAD^ -> c1`,`HEAD^2 -> c2`,`HEAD^3 -> c3`, `HEAD~ -> c1`,`HEAD~2 -> c1_c1`
    
    git branch #     
    
    git branch -r #      
    
    #                  。
    git branch --contains 
    
    git branch  #     
    
    git checkout  #     
    
    git checkout -b  #    +     
    
    #        
    git branch -m  
    
    #           
    git branch -m 
    
    #        :            ,           ,            。
    git push origin :
    git push origin 
    
    git merge  #           
    
    git branch -d  #     
    
    git branch -D  #       
    
    #       (         ),         push server ,        。
    git push origin :
    Note: checkout 포인터 만 이동 HEAD 하고 reset 인용 치 를 변경 합 니 다.
    4. 보기
    git status #     
    
    git diff  #       
    
    git diff .. #            
    
    git diff --shortstat "@{n day ago}" #   n      
    
    git diff --cached(--staged) #            
    
    git show : #        ,       
    
    git show  #                
    
    git show --name-only  #              
    
    git reflog #              
    
    git blame  #           

    5. 수정
    git add |
    # , ( ) git add . # # -p( -patch) 。 。 git add -p git mv # git rm --cached # , git rm -f # -f

    6.

    git commit -m 'message' #      
    
    git commit -a -m 'message' #             ,      (       )
    
    git commit --amend -m #         ,           ,        commit     
    HEAD
    7. 취소, 버 전 스크롤 백
    git reset --hard HEAD #                       
    
    git reset --keep [commit] #     HEAD   commit,            
    
    git reset [file] #           ,    commit    ,      
    
    git commit --amend #           
    
    git checkout [file] #               
    
    # --patch                    。
    git checkout -p
    
    #                   。      -          。              。
    git checkout -
    
    #         ,               ,     。
    git checkout .
    
    git checkout HEAD  #               
    
    git checkout --patch  #         
    
    git revert  #       

    8. 과거 기록 제출
    일반적인 매개 변수 옵션:Git Commit: 제출 할 때마다 내용 의 차 이 를 표시 합 니 다.-p: 업데이트 할 때마다 파일 수정 통계 정 보 를 표시 합 니 다.—stat: —shortstat 의 마지막 줄 수 수정 에 제거 통 계 를 추가 합 니 다.—stat 정 보 를 제출 한 후에 수 정 된 파일 목록 만 표시 합 니 다.--name-only 새로 추 가 · 수 정 · 삭 제 된 파일 목록 을 표시 합 니 다.--name-status: 모든 40 글자 가 아 닌 앞의 몇 글자 만 표시 합 니 다.--abbrev-commit: 비교적 짧 은 상대 시간 표시 (예 를 들 어 SHA-1 를 사용 합 니 다.--relative-date: 2 weeks ago 도형 이 나타 내 는 분기 합병 역 사 를 표시 합 니 다.--graph: 이 옵션 은 제출 역 사 를 기본 형식 과 다른 방식 으로 보 여 줍 니 다.이 옵션 은 당신 이 사용 할 수 있 도록 내 장 된 하위 옵션 이 있 습 니 다.
    - `oneline`:            ,             。
    - [`format`](https://git-scm.com/book/zh/v2/Git-  -      #rpretty_format):                     。
    ASCII: —pretty=(oneline,short,medium( ),full,fuller,email,raw,format) 의 간소화 용법.—oneline: 날짜 형식 을 맞 춥 니 다.
    일반적인 출력 매개 변수:--pretty=oneline --abbrev-commit: 최근 n 개 만 표시--date= (relative|local|default|iso|rfc|short|raw), -n: 지 정 된 시간 후의 제출 만 표시 합 니 다.—since, —after: 지정 한 작성 자 와 관련 된 제출 만 표시 합 니 다.--until: 지정 한 제출 자 와 관련 된 제출 만 표시 합 니 다.—before: 지정 한 키워드 만 표시 하 는 제출—author: 키 워드 를 추가 하거나 제거 한 제출 만 표시 합 니 다.
    기본적으로 매개 변 수 를 사용 하지 않 으 면 —grep 제출 시간 에 따라 모든 업 데 이 트 를 표시 합 니 다. 최근 업 데 이 트 는 맨 위 에 있 습 니 다.
    git log #         
    
    git log -p -n #        n   
    
    git log -p -n  #            n   
    -S 설정
    git log --pretty=format:'%s %C(bold blue)(%an)%Creset' --abbrev-commit
    
    git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)%Creset' --abbrev-commit
    
    #   git alias
    git config --global alias.slg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)%Creset' --abbrev-commit"
    #                    。
    git whatchanged —-since='2 weeks ago'

    9. 라벨git log 역사의 한 제출 에 라벨 을 붙 여 중요 함 을 나 타 낼 수 있다.git log alias 두 가지 주요 유형의 라벨 을 사용 합 니 다. 경 량 라벨 Git 과 주석 라벨 Git 을 사용 합 니 다.
    경 량 탭: 변 하지 않 는 지점 같 습 니 다. - 특정한 인용 일 뿐 입 니 다.그것 은 본질 적 으로 검사 제출 과 파일 에 저장 합 니 다. - 다른 정 보 를 저장 하지 않 았 습 니 다.
    주석 라벨 은 (lightweight) 데이터베이스 에 저 장 된 완전한 대상 입 니 다.그것들 은 검 증 될 수 있다.태그 작성 자의 이름, 이메일 주소, 날짜 시간 이 포함 되 어 있 습 니 다.태그 정보 가 하나 더 있 습 니 다.또한 (annotated) 서명 과 검증 을 사용 할 수 있 습 니 다.일반적으로 주석 탭 을 만 드 는 것 을 권장 합 니 다. 그러면 상기 모든 정 보 를 가 질 수 있 습 니 다.그러나 임시 탭 을 사용 하거나 어떤 이유 로 정 보 를 저장 하지 않 으 려 면 가 벼 운 탭 도 사용 할 수 있 습 니 다.Git: 주석 태그 만 들 기GNU Privacy Guard(GPG) 탭 에 저 장 될 정 보 를 지정 합 니 다.주석 탭 에 정 보 를 지정 하지 않 으 면 -a 편집 기 를 실행 하여 정 보 를 입력 하 라 고 요구 합 니 다.
    git tag #        
    
    git tag  #     ,-a       
    
    git tag -d  #             
    
    git show  #               
    
    git push origin  #              
    
    git push origin --tags #                     

    10. 변성 기-m: 이미 검출 된 지점 에 하나 이상 의 지점 을 합병 한 다음 에 현재 지점 바늘 을 합병 결과 로 이동 시 키 면 기 존 지점 은 수정 되 지 않 습 니 다.Git: 보통 '연 합' 이 라 고 부 릅 니 다. 제출 역 사 를 수정 하여 쌍방의 merge 역 사 를 비교 한 다음 에 서로 다른 캐 시 를 찾 아 간 다음 에 rebase 역 사 를 수정 합 니 다.commit: 다른 분기 에 있 는 commt 를 수정 하여 현재 분기 (HEAD) 에 이식 하 는 데 사용 합 니 다. push 매개 변 수 는 원래 제출 한 작성 자 정 보 를 보류 하고 제출 하 는 것 을 의미 합 니 다.
    git merge  #            
    
    git rebase  #            
    
    #            commit   ,        (HEAD), ^…  
    git cherry-pick 

    11. 저장 및 정리
    프로젝트 의 일부분 에서 한동안 일 한 후에 모든 것 이 혼 란 스 러 운 상태 에 들 어 갔 을 때 다른 부분 으로 전환 하여 다른 일 을 하려 고 합 니 다.문 제 는 잠시 후 이 점 으로 돌아 가 절반 의 일 을 하기 위해 제출 을 만 들 고 싶 지 않다 는 점 이다.
    저장 은 작업 디 렉 터 리 의 더러 운 상 태 를 처리 합 니 다. 즉, 수 정 된 추적 파일 과 임시 저장 변경 - 그리고 완료 되 지 않 은 수정 사항 을 한 스 택 에 저장 합 니 다. 이 변경 사항 을 언제든지 다시 적용 할 수 있 습 니 다.
    git add . && git stash #           
    
    git stash save 'message' #     ,   stash  
    
    # -p( -patch)                     。               。
    git stash -p
    
    #      ,    ,         。               ,     -u  。   -a(-all)               ,             。
    git stash -u
    
    git stash list #         
    
    git stash apply  #              ,           ,  :        
    
    git stash pop  #      ,      ,      ,  :        
    
    git stash drop  #            
    
    git stash clear #     
    
    git stash branch  #          

    12. 원 격 조작
    원 격 창 고 는 인터넷 이나 다른 네트워크 에 위탁 관리 되 는 프로젝트 의 버 전 라 이브 러 리 를 말한다.
    git remote #              
    
    git remote -v #      -v,               Git            URL。
    
    git remote show  #              
    
    git remote add   #          Git   
    
    git remote rm  #       
    
    git remote rename  #        
    
    git fetch  #           
    
    #          ,      origin              ,   git pull
    git pull  
    
    #           ,--set-upstream    -u
    git push --set-upstream  
    
    #        ,                origin    ,    git push
    git push  
    
    git push [remote] --force #              ,     
    
    git push [remote] --all #            
    
    git push  : #          
    
    git push --tag #       

    13. 충돌
    #            ,           ,                       。
    git diff --name-only --diff-filter=U | uniq  | xargs $EDITOR

    로 컬 초기 화 에서 원 격 창고 로 업로드 하 는 일반적인 절차
    git init
    git add .
    git commit -m 'hint message'
    git remote add origin 'your project repositories href on github'
    git pull origin master
    git push -u origin master

    첫 번 째 commit 원 격 창고 제출 오류 -> 오류 캡 처 해결 상세 참조
    error: failed to push some refs to 'https://github.com/xxx.git'
    # --allow-unrelated-histories                 。
    git pull origin master --allow-unrelated-histories
    
    git push -u origin master

    참고 자료
    Git 문서 중국어 문서
    15-git-commands-you-may-not-know
    완 일 봉 상용 cherry-pick 명령 목록
    류 설 봉 -x 튜 토리 얼
    Runoob GitHub 튜 토리 얼push 입문Git , 알 지? 금 캐 기, 소질 3 연 타 ~ ~
    Github
    알다
    금 을 파다

    좋은 웹페이지 즐겨찾기