본문 바로가기

협업하자!?!!

개발자 필수템 - github 사용하기 02. github 개념 익히기

728x90

GitHub 용어와 개념 정리 및 원격과 로컬 연동하기

1. 개념 정리

1.1 레포지토리란?

1.1.1 Local Repository

로컬 레포지토리는 사용자의 컴퓨터에 저장된 Git 저장소로, 개발자는 여기에서 코드를 작성하고 테스트할 수 있다. 모든 작업은 로컬에서 이루어지며, 나중에 원격 저장소에 푸시할 수 있다.

1.1.2 Remote Repository

원격 레포지토리는 GitHub와 같은 서버에 저장된 저장소로, 다른 개발자와의 협업을 가능하게 한다. 원격 저장소에 푸시하면 팀원들과 변경 사항을 공유할 수 있다.

1.2 버전이란?

버전은 코드의 특정 상태를 나타내며, Git에서는 각 버전이 고유한 커밋 해시를 가진다. 이를 통해 언제든지 이전 상태로 되돌릴 수 있고, 코드 변경 이력을 관리할 수 있다.

1.3 History란?

History는 레포지토리의 모든 커밋 이력을 의미한다. 사용자는 이력을 통해 과거의 변경 사항을 추적하고, 특정 버전으로 돌아갈 수 있다.

1.4 Staging이란?

Staging은 변경 사항을 커밋하기 전에 준비하는 단계이다. 사용자는 원하는 파일만 선택하여 Staging 영역에 추가하고, 이후에 커밋할 수 있다.

1.5 Branch란?

Branch는 독립적으로 작업할 수 있는 경로를 제공한다. 개발자는 각 기능이나 버그 수정을 위한 브랜치를 생성하고, 작업 후 메인 브랜치에 병합할 수 있다.

1.6 Commit과 Add란?

  • Add: 변경된 파일을 Staging 영역에 추가하는 명령어이다.
  • Commit: Staging 영역에 있는 변경 사항을 로컬 레포지토리에 기록하는 명령어이다. 커밋할 때마다 메시지를 작성하여 변경 내용을 설명한다.

1.7 Pull과 Push란?

  • Pull: 원격 저장소의 변경 사항을 로컬로 가져오는 명령어이다. 팀원이 작업한 내용을 최신 상태로 유지하는 데 사용된다.
  • Push: 로컬의 변경 사항을 원격 저장소에 반영하는 명령어이다. 팀원과의 협업을 위해 변경 사항을 공유할 수 있다.

1.8 Clone이란?

Clone은 원격 저장소의 모든 내용을 로컬에 복제하는 작업이다. 이를 통해 로컬에서 작업을 시작할 수 있으며, 원격 저장소와 동기화된다.

1.9 Merge란?

Merge는 두 개 이상의 브랜치를 통합하는 작업으로, 주로 기능 브랜치를 메인 브랜치에 병합할 때 사용된다. 충돌이 발생할 경우 수동으로 해결해야 한다.

1.10 Upstream이란?

Upstream은 로컬 브랜치가 추적하는 원격 브랜치를 의미한다. 사용자는 git push 또는 git pull 명령어를 사용할 때 업스트림 설정을 통해 원격 브랜치와 연결된다.

2. 실제 사용법

2.1 GitHub 레포지토리 만들기

github에 접속 후 로그인한다. Repositories 탭의 new를 선택하면 새로운 레포지토리 생성 페이지로 들어간다.

  1. Repository name: 사용자의 레포지토리 이름을 입력한다.(필수)
  2. Description: 레포지토리에 관한 간단한 설명을 입력한다.(선택)
  3. Public/Private: 레포지토리의 공개 여부를 설정한다.(필수)
  4. Add a README file: README.md 파일의 자동 생성 여부를 선택한다.(선택) -> 생성하는 것을 추천한다.
  5. Add .gitignore: .gitignore 파일을 양식에 맞추어 자동 생성할 수 있다.(선택)
  6. Choose a license: 지정된 양식의 license를 선택할 수 있다.(선택)

위의 6가지 선택을 한 후 Create Repository 버튼을 눌러 레포지토리를 생성한다.

2.2 로컬에서 생성된 레포지토리 받아오기

  1. 원하는 폴더에서 마우스 우클릭 -> Open Git Bash Here을 선택해서 Git bash terminal을 연다.
  2. git 시작: git init
  3. commit 작성자 설정
     git config --global user.name {username}
     git config --global user.email {useremail}
    을 한 후에
     git config --global -l
    으로 작성자 설정을 확인한다. 이렇게 하면 기본 설정이 끝난다.

2.3 로컬에서 작업한 파일 및 폴더 push 하기

  1. 스테이징 작업
    git add . 명령어로 변경사항을 Staging 한다. 만약 특정 폴더만 Staging하고 싶다면 git add {location}을 사용할 수 있다. (. 은 루트 디렉토리 이하의 모든 폴더 및 파일을 말한다.)
  2. git status를 통해 현재 add 상태를 확인할 수 있다.
  3. Commit 작업
    git commit -m '{commit message}'를 이용하여 commit 한다.
  4. Push 작업
    git push -u origin master를 사용하여 원격 저장소에 push한다. -u를 통해 upstream 설정을 한다.
    • git push origin master: upstream 설정을 하지 않는다.
    • git push: upstream이 설정되어 있다면 사용.
  5. 참고사항

3. 명령어 정리 (<필수 변수>, [선택 변수])

3.1 git add [옵션] <파일명>

파일의 내용을 스테이징 한다.

  • 옵션 설명
    • -A: 모든 변경사항 추가
    • -u: 추적된 파일의 변경 사항만 추가
    • -i: 대화형 모드로 추가

3.2 git commit [옵션]

변경 사항을 저장소에 기록한다.

  • 옵션 설명
    • -m "<메시지>": 커밋 메시지 입력
    • -a: 자동으로 변경된 모든 추적 파일을 포함
    • --amend: 마지막 커밋 수정

3.3 git clone <저장소 URL> [대상 디렉토리]

원격 저장소의 내용을 로컬 디렉토리로 복제한다.

  • 옵션 설명
    • -b <브랜치>: 특정 브랜치를 클론
    • --depth <숫자>: 특정 깊이만큼의 커밋을 클론
    • --single-brnach: 기본 브랜치만 클론

3.4 git push [원격] [브랜치] [옵션]

로컬 변경사항을 원격 저장소에 반영한다.

  • 옵션 설명
    • --force: 강제로 푸시 (기존 이력을 덮어 씌움)
    • --tags: 태그도 함께 푸시
    • --set-upstream: 로컬 브랜치와 원격 브랜치를 연결

3.5 git pull [원격] [브랜치] [옵션]

원격 저장소의 변경 사항을 가져와 현재 브랜치에 병합한다.

  • 옵션 설명
    • --rebase: 병합 대신 재적용
    • --no-commit: 자동으로 커밋하지 않음

3.6 git branch [옵션] [브랜치 이름]

브랜치를 관리한다.

  • 옵션 설명
    • -d <브랜치>: 브랜치 삭제
    • -D <브랜치>: 브랜치 강제 삭제
    • -m <이름>: 브랜치 이름 변경

3.7 git merge [브랜치] [옵션]

두 개 이상의 개발 이력을 병합한다.

  • 옵션 설명
    • --no-ff: 병합 시 항상 커밋 생성
    • --squash: 여러 커밋을 합침

3.8 git status [옵션]

현재 작업 트리의 상태를 보여준다.

  • 옵션 설명
    • -s: 간단한 형식으로 상태 표시
    • -b: 현재 브랜치와 추적 브랜치 정보 표시

3.9 git log [옵션]

커밋 로그를 보여준다.

  • 옵션 설명
    • --oneline: 한 줄 형식으로 요약
    • --graph: 그래프 형태로 로그 표시
    • --author=<이름>: 특정 작성자의 커밋만 표시
    • --since=<날짜>: 특정 날짜 이후의 커밋만 표시
    • --until=<날짜>: 특정 날짜 이전의 커밋만 표시

3.10 git fetch [원격] [브랜치] [옵션]

원격 저장소의 새로운 변경 사항

반응형