Skip to content

Latest commit

 

History

History
191 lines (157 loc) · 8.17 KB

github-basic-zip.md

File metadata and controls

191 lines (157 loc) · 8.17 KB

📂 Git & GitHub 기초 지식.zip

Git이란?

git은 버전 관리를 위한 소프트웨어 중 하나 입니다.
어떤 작업물의 최종본만 갖고 있는 것이 아니라 그 이전 각 수정본을 모두 보유함으로써, 필요할 때 이전 버전을 참고하거나 그 버전으로 되돌릴 수 있게 합니다.

깃을 사용하기 전에 사람들은 프로젝트를 진행할 때 '다른 이름으로 저장..'등 을 사용해서 매번 새 버전을 저장함으로 각 버전들을 유지하는 식으로 프로젝트를 해왔는데, 이제는 Git과 같은 시스템에서 이런 버전을 저장소repoditory라는 곳에 각 버전 사본을 유지하는 것입니다

☆☆☆☆☆

하지만 깃이 아직 익숙하지 않다면 백업은 필수입니다..!!

pull 받아오기 전에 백업하는 것을 습관화합시다!
(깃을 사용하기 전에 하던 원시적인 방법처럼 다른 이름으로 복사해서 저장해둡시다)


Git 기본 용어

  • 레포지터리repository: 깃에 생성하는 저장소의 단위입니다. 프로젝트의 단위라고 생각해도 좋습니다. 지금 이 깃허브 스터디에서 레포지터리 이름은 'Github-Study'입니다.
  • 커밋commit: 비디오 게임에서 진행 도중 특정 지점을 임시 저장하듯이 일시 정지할 수 있는 지점에 해당하는 버전을 저장소에 저장하는 것을 커밋이라고 합니다. 모든 커밋에는 작업자의 이름이 포함되므로, 특정 변경 작업과 관련해서 칭찬하거나 원망할 사람이 누군지 정확히 알아낼 수 있습니다. :)
  • 브랜치branch: 커밋들이 모여 구조화된 것이 브랜치입니다. 각 브랜치는 프로젝트 히스토리 안에서 하나의 진화하는 트랙에 해당합니다. 공식적인 주 버전에 해당하는 브런치는 보통 main 또는 master입니다.
    • Tip: 협업을 진행할 때, 메인 브런치에 바로 올리는 것보다, 본인 이름의 브랜치를 생성해서 그 브랜치에 작업 후, 메인 브랜치에 합치는 것이 더 충돌 관리가 쉬울 것입니다!

  • 로컬 레포지터리Local repository: 개인 컴퓨터에 저장된 레포지터리입니다. 각 버전이 개인 컴퓨터 저장소에 저장되어 있어, 깃허브에 올리지 않으면 다른 사용자들이 확인할 수 없습니다.

  • 원격 레포지터리Github repository: Github에 저장된 레포지터리입니다. 다른 깃허브 사용자들이 확인할 수 있고, 이 레포지터리를 이용해 다른 개발자와 협업할 수 있습니다.

  • 푸시push: 로컬 레포지터리에서 생성한 커밋들을 깃허브 레포지터리에 올리는 작업입니다.

  • pull: 깃허브 레포지터리에 있는 커밋들을 로컬 레포지터리로 가져오는 작업입니다.

  • 포크fork: 누군가의 레포지터리를 복사해 내 계정의 레포지터리로 가져오는 작업입니다.

  • 풀리퀘스트pull request: 브런치 두 개를 합치기를 요청하는 작업입니다.


Git 설정

git을 사용하기 이전에 git config명령을 이용해, git에 사용자 정보를 저장해야 합니다.

cmd창을 켜고 다음과 같이 입력합니다. (name와 email은 github의 정보와 동일하게 작성합니다)

git config --global user.name "<github 이름>"
git config --global user.email  "<github 이메일>"

Git 기본 명령어

프로젝트 폴더 우클릭하고 'Git Bash Here' 클릭해서 나오는 터미널 창에 입력합니다.


  • 해당 폴더로 로컬 레포지터리 생성하기
    git init
    

  • 로컬 레포지터리를 깃허브 레포지터리에 올리기
    • GitHub 사이트에서 레포지터리 새로 생성 (Initialize this repository with 옵션 사용하지 않음)
    • 깃허브 레포지터리를 로컬 레포지터리에 연결하기
      git remote add origin '깃허브 레포지터리 주소'.git
      
      Ex.
      git remote add origin https://github.com/HeoJiye/Git-Study.git
      
    • 로컬 레포지터리에서 commit한 내용들을 push
      git push origin 'branch 이름'
      
      Ex.
      git push origin main
      

  • 깃허브 레포지터리를 해당 폴더에 가져오기
    git clone '깃허브 레포지터리 주소'.git .
    
    • 위에 점(.)을 붙이지 않으면 해당 폴더 안에 새로운 폴더가 생기고 그 파일이 로컬 레포지터리가 됩니다.

  • 커밋할 데이터 등록하기(스테이징)
    git add <스테이징할 파일 경로>
    
    • 폴더 경로를 입력하면 해당 폴더 안 모든 파일이 스테이징됨.
    • 모든 데이터 스테이징하기
      git add *
      
    • 스테이징된 파일들 확인하기
      git status
      
      • Changes to be committed: 스테이징된 파일들
      • Changes not staged for commit: 수정되었으나 스테이징된 파일들 (커밋 시 이 파일들은 무시됨)
      • Untracked files: 한번에 커밋한 적 없는 파일들
    • add 취소하기
      git reset HEAD <취소할 파일 경로>
      
      • 취소할 파일 경로없이 git reset HEAD만 입력하면 스테이징된 모든 파일들을 취소함.
    • 각 변경 사항들을 모두 터미널에서 직접 확인하면서 스테이징 여부를 체크
    git add -p
    

  • 커밋하기

    • 커밋할 데이터 등록(스테이징) 이후
    git commit -m <커밋 메세지 입력>
    

    upgrade! 의미있는 커밋 메세지 작성하기


    • 커밋 기록 확인하기
      git log
      
      • q를 입력해, 터미널로 돌아가기
    • 커밋 취소하기
      • github에 올린 커밋은 취소 불가
      git reset HEAD^
      
      • 최근 하나를 취소함.
      • 커밋되었던 파일들은 모두 unstaged 상태로 돌아감.

  • 로컬 레포지터리의 변경사항 업로드하기(push)
    git push origin <브랜치 이름>
    
    • 본인 레포지터리가 최신 버전이 아니면 실패, fetch을 먼저 시도

  • 깃허브 레포지터리의 변경사항 가져오기(pull)
    • pull: 깃허브 레포지터리로부터 필요한 파일을 다운 + 자동 병합

      git pull origin <브랜치 이름>
      
      • (주의) 충돌이 일어날 수 있고, 의도치않게 파일이 날아갈 수 있습니다..!
    • fetch: 깃허브 레포지터리로부터 필요한 파일을 다운

      git fetch origin <브랜치 이름>
      
      • 받아온 깃허브 레포지터리의 파일들이 브런치를 새로 생성
        • 브런치 확인
          git branch -r
          
      • 현재 브런치와 생성된 브런치 비교하기 (충돌 확인)
        git diff HEAD <생성된 브런치>
        
        ex.
        git diff HEAD origin/main
        
      • 로컬의 변경사항 커밋 후, 브런치 합치기
        git merge <생성된 브런치>
        
        ex.
        git merge origin/main
        
      • 충돌 해결하기
        • 해당 파일에서 두 변경 사항이 모두 적혀있음. 직접 충돌 사항 변경하기
        • visual studio 등은 충돌 편집기를 지원함.
      • 이후 commit 후, push


출처: 데이비드 디마리, 『인간다운 Git』, webactually(2020)과 지예의 경험