Git 기본 자습서

7209 단어
[TOC]

git 상용 개념 및 기초


git분지의 개념


이 대상에는 임시 저장 내용의 스냅샷을 가리키는 지침이 포함되어 있으며 이번에 제출한 작가와 같은 부속 정보를 포함하고 이 제출 대상을 가리키는 0개 이상의 부모 대상 지침이 포함되어 있다. 첫 제출은 직접적인 조상이 없고 보통 제출은 조상이 한 명 있고 두 개 이상의 지점이 합쳐진 제출은 여러 조상이 있다.
매번 commit에서hashvalue를 생성하여 이번에 제출한 내용에 대응합니다.
Git 원리도

git 일반 명령


git branch 관리 분기

  • git branch -l 분기 목록 보기;
  • git branch-m 분기 이름 수정;
  • git checkout -b new_branch를 새 지점으로 전환하기;()
  • git branch 새 지점;
  • git branch --no-merged에서 통합되지 않은 분기 보기;
  • git branch --merged 병합된 분기 보기
  • git branch -d shortname(분기 이름) 분기 삭제;
  • git branch -v 마지막 제출 대상 보기
  • git branch-a 매개 변수는 원격 지점을 볼 수 있고 원격 지점은 빨간색으로 표시된다.(fetch 후 직접 checkout에서 원격의 어떤 지점으로 갈 수 있음)
  • git push origin - delete에서 원격 분기를 삭제합니다.
  • git push origin - delete tag에서 원격 탭을 삭제합니다.​ ​
  • git add


    수정된 파일, 추적 파일,.와일드카드를 사용하여 수정된 모든 파일을 임시로 저장합니다.

    git status


    상태 간략화, 가-s로 격식을 더욱 치밀하게 할 수 있다

    git commit


    저장소에 임시 저장소 파일 제출하기

    git pull


    원격 창고에서 파일을 가져와 로컬 지점과 통합합니다.예:git pull origin master,origin 창고에서 master 지점을 가져와 로컬로 통합하기;

    git push


    로컬 지점의 수정 파일을origin 창고(사실은 링크의 대칭)의 마스터 지점으로 전송하고 코드를 통합합니다. 예:git push origin 마스터;

    git log 레코드 보기


    제출 내용 보기
  • git log -n 1 -stat # 변경 사항을 최근에 제출한 모든 파일을 확인
  • git log -n 1 -p# 최근 제출된 모든 변경 사항에 대한 자세한 내용 보기
  • git log -p - 파일 경로 # 이 파일의 모든 제출 기록 보기
  • git show(commit 해시 값) 파일 경로 # 한 파일이 제출한 변경 사항을 보기
  • git log [-author=Wenhao] # 특정 구성원의 제출 보기
  • 두 브랜치 비교하기
  • git log master ^fix_branch# 두 갈래의 다른 점을 비교한 예는 마스터에 있는fixbranch에 없는commit.같은 이치로fix 보기branch에 있고 마스터에 없는commitgit log fix_branch ^master;
  • git log dev...master # 누가 많이 냈는지 적게 냈는지 모르고 단순히 두 가지의 차이를 비교한다.
  • git-left-right dev...master # 위의 경우 제출한 각 지점을 표시합니다.​
  • 사화 출력 내역 제출
  • git log - pretty=oneline # 출력의 제출 기록 줄 표시, 더욱 조리 있게![] (/Users/sks/Desktop/스크린샷 2017-03-14 오후 2.55.34.png)
  • git tag - 태그

  • git tag v0.4.0 -light # 라이트 레이블 생성
  • **git tag -a v1.0.8(3)-m**#메모 태그 만들기
  • git tag -l # 태그 목록 보기;
  • git tag -d v0.4.0 # 지정된 태그 삭제
  • git tag -a v1.0 9fbe3.. (commit의hashvalue)#지정한 제출에 태그
  • git push origin v1.0.8번 커밋 레이블 v1.0.8-git 서버
  • git push origin -tags # 로컬 모든 태그를 서버에 한 번에 제출
  • git reset and revert - 사용 내역 보기


    git에서 HEAD 로 현재 버전을 표시하는데, 사실은 어떤commit을 가리키는 지침이다.HEAD^는 지난번commit,HEAD^^지난번제출,HEAD~100전 100번의commit
    git reset은 코드 롤백에 사용됩니다.git reset - Hard HEAD^ 이전에 제출한 커밋으로 롤백합니다.git reset - hard 34434ef (commit id) 를 커밋으로 롤백합니다.
    bogon:Show sks$ git reset --hard 44e62d03aeb4fdc9e3b84f7b51fe8720c8b9f2e6
    HEAD is now at 44e62d0 Merge remote-tracking branch 'origin/master'
    
    checkout에서 원격 분기git branch-a로 원격 분기 보기;git fetch origin fetch 원격 지점에서 로컬 git checkout [branch-name] (주:remote origin을 추가할 필요가 없습니다. 예를 들어origin/develop)

    git rebase 분기의 결합


    연화 기본 사용
    주 분기에서gitcheckout -b experiment에서 테스트 분기를 생성하고 파일 조건을 수정한 후 스냅샷 C3 생성
    ![](file:////Users/sks/Library/Group%20Containers/UBF8T346G9.Office/msoclip1/01/DD084AEC-84B4-A845-8BB7-B6C0488FAE94.png)
    앞서 소개한 바와 같이 가장 쉽게 지점을 통합하는 방법은merge명령이다. 두 지점의 최신 스냅숏(C3과 C4)과 양자의 최신 공동 조상(C2)을 삼자합병하여 합병한 결과 새로운 제출 대상이 생성된다(C5).
    ![](file:////Users/sks/Library/Group%20Containers/UBF8T346G9.Office/msoclip1/01/81371B41-EBD9-D94E-8A3C-0DA730CF6B77.png)
    또 다른 합병 방법이 있어요. - 연화.
    너는 C3에서 발생한 변화 패치를 C4의 기초 위에서 다시 한 번 칠 수 있다.Git에서 이런 조작을 연합(rebase)이라고 부른다.리베이스 명령이 있으면 한 지점에서 제출한 변경 사항을 다른 지점으로 옮겨서 다시 한 번 재생할 수 있습니다.
    ![](file:////Users/sks/Library/Group%20Containers/UBF8T346G9.Office/msoclip1/01/B3A77D28-5EFD-2143-B9ED-B6F0D0D6667B.png)
    ![](file:////Users/sks/Library/Group%20Containers/UBF8T346G9.Office/msoclip1/01/E60BDAFD-E375-074F-8129-596B7243D570.png)
    Gitcheckout experiment
    Gitrebase master
    First,rewinding head to replay your work on top of it... Applying: added stagedcommand
    그들의 원리는 두 지점의 가장 가까운 공동 조상으로 돌아가 현재 지점(즉 진화를 진행하는experiment 지점)의 후속 역대 제출 대상(이곳은 C3)에 따라 일련의 패치 파일을 생성한 다음에 기저 지점(즉 주요 지점 마스터)의 마지막 제출 대상을 새로운 출발점으로 하여 이전에 준비한 패치 파일을 하나씩 응용하여 새로운 합병 제출 대상 C3'을 생성하는 것이다.experiment의 제출 역사를 바꿉니다
    그것을 마스터의 직접 하류로 만들다.제출 기록을 깨끗하게 하다.마지막 C3랑 C5랑 결과는 똑같아요.
    연화의 진급 사용 - 기타 지점에서 연화를 진행
    ![](file:////Users/sks/Library/Group%20Containers/UBF8T346G9.Office/msoclip1/01/024EA003-ACA7-184E-A342-39BDA45CC6FE.png)
    하나의 특성 지점에서 하나의 특성 지점의 역사를 나누는 것이다
    우리가 먼저 클라이언트의 수정을 주 지점에 합쳐서 서비스 측의 합입을 잠시 연기할 것이다. (더 많은 테스트가 필요하기 때문이다.)이럴 때, 우리는 서버 지점이 아닌 클라이언트 지점에 기반한 변경 (C8, C9) 을 서버 지점을 건너뛰고 마스터 지점에서 직접 재연할 수 있습니다.그러나 이것은gitrebase의onto 명령으로 새로운 베이스 지점 마스터를 지정해야 합니다
    Git rebase --onto master server client
    이것은 마치 "client 지점을 꺼내서 client 지점과 서버 지점의 공동 조상 이후의 변화를 찾아내고 그것들을 마스터에서 재연하는 것과 같다"는 말과 같다.좀 복잡하지 않아요?그러나 그 결과는 그림3-32와 같다.아주 멋있다.
    ![](file:////Users/sks/Library/Group%20Containers/UBF8T346G9.Office/msoclip1/01/C6A5DF5B-3AA6-1142-82C4-BE8C463E0152.png)
    특성 분지의 다른 특성 분지를 다른 분지로 확대하다
    이제 마우스트 지점으로 들어갈 수 있어요.
    Git checkout master;
    Git merge client;
    빨리 마스터 지점에 들어가서client의 변화를 포함합니다
    서버 분기의 변화도 포함하여 서버를 마스터로 직접 연결할 수 있으며 수동으로 서버 분기로 전환하지 않고 다시 연결할 수 있습니다 -git rebase [주 분기] [특성 분기] 명령은 먼저 특성 분기 서버를 꺼내서 주 분기 마스터에서 재연합니다:
    Gitrebase master server;
    Gitrebase master server;
    그래서 서버의 변화가 마스터에 포함됩니다
    그리고 빨리 마스터 지점으로 들어가세요.
    Gitcheckout master;
    Git mergeserver;
    현재client와 서버의 변화가 마스터 지점에 합쳐져서 특성 지점을 삭제할 수 있습니다
    Gitbranch -d client;
    Gitbranch -d server;
    결국 저희가 제출한 역사는 이렇습니다.
    ![](file:////Users/sks/Library/Group%20Containers/UBF8T346G9.Office/msoclip1/01/64F901D7-AB61-124C-8550-E3D3C609BEA6.png)
    파생적 위험
    반드시 하나의 준칙을 준수해야 한다. 일단 지점의 수정 대상이 공공 창고에 제출되면 이 지점에 대해 확대하고 조작하지 말아야 한다.
    이유:
    연합을 진행할 때 사실상 현존하는 제출 대상을 버리고 유사하지만 다른 새로운 제출 대상을 만들었다.만약 당신이 원래 지점의 제출 대상을 발표하고 다른 사람이 다운로드를 업데이트한 후에 그 기초 위에서 작업을 전개한다면, 잠시 후에 gitrebase로 제출 대상을 버리고, 새로운 재연된 제출 대상을 발표한다면, 당신의 협력자는 그들의 업무를 다시 통합시켜야 한다. 그러면 당신이 다시 그들에게서 내용을 얻게 되면 제출 역사는 엉망이 될 것이다.

    git diff


    git diff 저장된 업데이트 및 저장되지 않은 업데이트 보기

    git remote 관련 명령

  • git remote에서 현재 원격 라이브러리 보기;
  • git remote add: 원격 창고 추가;
  • git remote show [remote-name]원격 창고에 대한 자세한 정보 보기
  • git remote rename 명령으로 원격 창고의 로컬 약칭 수정
  • gitremoterm 대응하는 원격 창고 제거
  • git 기타 명령


    git reflog


    Git에서 명령을 제공합니다. git reflog 명령을 기록할 수 있습니다.
    bogon:Show sks$ git reflog
    0b7e40c HEAD@{0}: commit:  
    594d9ef HEAD@{1}: commit:  
    045cb6e HEAD@{2}: commit:  
    e4b50cf HEAD@{3}: commit:  
    44e62d0 HEAD@{4}: merge origin/master: Merge made by the 'recursive' strategy.
    d934ed9 HEAD@{5}: commit:  
    5c8fbc7 HEAD@{6}: merge origin/master: Merge made by the 'recursive' strategy.
    

    mac ssh 공공 키 개인 키 생성


    ssh-keygen -t rsa -b 4096 -C "[email protected]"
    ssh-keygen -t rsa -C "[email protected]"

    git 고려 사항

  • 새 파일을git로 관리할 때 반드시 추가해야 합니다.gitignore 파일;
  • 참조 링크(http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html)

    좋은 웹페이지 즐겨찾기