Git - repository, push, pull, branch : 데이터 취업 스쿨 스터디 노트 12/28

slocat·2023년 12월 28일
0

start-data

목록 보기
52/75

1. Git, ready

1-1. global configuration

git config --global user.name <username>
git config --global user.email <email>

windows line ending = CR(\r) + LF(\n)
unix or mac line ending = LF(\n)
windows 사용자와 mac 사용자가 같은 git repository를 작업할 때 코드에서 변경된 내용이 없어도 CRLF 차이로 인해 commit이 발생할 수 있다.

# windows 사용자
# 가져올 때는 LF를 CRLF로, 보낼 때는 CRLF를 LF로 변경

git config --global core.autocrlf true

에디터 설정

git config --global core.editor vim

전체 설정 확인

git config --list
# Q 눌러서 빠져나올 수 있다.

항목별 설정 확인

git config <key>

1-2. 기본 용어

  • repository
    - 여러 개의 branch가 모여 있는 디스크 상의 물리적 공간
    - 프로젝트 단위로 생성
  • checkout
    - 특정 시점이나 branch의 소스코드로 이동하는 것
    - checkout 대상 : branch, commit, tag
    - checkout을 통해 과거 여러 시점의 코드로 이동 가능

  • stage
    - 작업할 내용이 올라가는 임시 저장 영역
    - 작업한 내용 중 commit에 반영할 파일만 선별하여 commit 수행 가능

  • commit
    - 의미 있는 변경 단위로, 변경에 대한 설명을 commit log로 남김
    - commit을 아끼지 말 것!

  • tag
    - 임의의 commit 위치에 쉽게 찾아갈 수 있도록 붙여 놓은 이정표
    - tag가 붙은 commit은 commit id 대신 tag name으로 checkout 가능

  • push
    local repository에서 수정한 내용을 remote repository에 반영되지 않은 commit을 remote repository로 내보내는 과정(코드 검증 후 push 하기)

  • pull
    - remote repository에 있는 내용 중 local repository에 반영되지 않은 내용을 가져와서 local repository에 저장하는 과정
    - pull 과정에서 conflict 일어나면 remote repository의 변경 내용을 local repository에 반영하여 conflict 해결 후 다시 push

  • branch
    - 특정 시점에서 분기하여 새로운 commit을 쌓을 수 있는 가지를 만드는 것
    - master branch = 개발의 주축이 되는 branch
    - 모든 branch는 최종적으로 다시 master branch에 merge 되는 방식

  • merge
    - branch의 반대 개념으로 하나의 branch를 다른 branch와 합치는 과정
    - merge 과정에서 conflict 일어나면 diff를 수정하여 conflict 해결 후 merge 진행

2. local repository 생성

  • working directory (작업 공간) : 실제 소스 파일, 생성한 파일
  • stage = index (준비 영역) : git add 한 파일
  • head : git commit 한 파일
# 폴더에서 git 초기화 - 해당 폴더를 git이 관리하기 시작
git init

# git에 존재하는 파일 확인
git status

>>>
On branch master
No commits yet
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        test.txt
nothing added to commit but untracked files present (use "git add" to track)
# 빈 파일 생성
touch test.txt

# working directory에서 변경된 파일을 stage에 추가
git add test.txt

git status

>>>
On branch master
No commits yet
Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   test.txt
# stage에 추가된 변경 사항을 head에 반영
git commit -m "first commit" test.txt

git status

>>>
On branch master
nothing to commit, working tree clean

3. remote repository 생성 및 연결

Github token 생성

# remote repository 등록
git remote add origin https://github.com/<repository>.git

got remote add origin https://<username>:<token>@github.com/<repository>.git

# remote repository 정보 확인
git remote -v

4. push

# local의 master branch를 remote
git push origin master

5. pull

README.md 파일 생성 후

git pull origin master

6. remote repository를 가져와서 작업하기

  • README file : 프로젝트 설명, 사용 방법, 라이센스, 설치 방법 등
  • .gitignore : git 버전 관리에서 제외할 파일 목록을 지정하는 파일

6-1. default branch

  • main or master
  • local에서 시작하면 master, remote에서 시작하면 main
  • default branch 설정
    사용자 메뉴 > settings > repositories > repository default branch

6-2. remote repository 복제하기

local repository를 생성하지 않은 상태에서 git clone 명령을 사용하여 remote repository를 local에 복제할 수 있다.

# 폴더 만들기 ➡ git init (폴더 초기화) ➡ remote 등록 ➡ pull 한 번에
git clone https://github.com/<repository>.git

git clone https://<username>:<token>@github.com/<repository>.git

7. branch

# local branch 조회
# branch를 local에서 생성해도 바로 remote에 공유되지 않음
git branch

# remote branch 조회
git branch -r

# local + remote branch 조회
git branch -a
# branch 생성
git branch <branchname>

# branch 이동
git checkout <branchname>

# branch 생성 + 이동
git checkout -b <branchname>
# remote에 branch push
git push origin <branchname>

git branch -a
>>>
  branch01
* branch02
  main
  remotes/origin/HEAD -> origin/main
  remotes/origin/branch01
  remotes/origin/main
# branch 삭제 (local)
# 현재 머물고 있는 branch는 삭제 불가 - 다른 branch로 이동 후 삭제
git branch -d <branchname>

# branch 삭제 (remote)
git push origin --delete <branchname>

0개의 댓글