아이펠 리서치 과정을 진행하면서 가끔 버벅일때가 많아 작성하게 되었다.
1. Local 저장소 설정
1) 로컬의 Git에 GitHub의 계정 정보 등록
$ git config --global user.email "이메일"
$ git config --global user.name "사용자이름"
- --global 옵션은 특정 사용자와 모든 저장소에 대해 적용한다는 의미,만약 프로젝트마다 다른 이름과 이메일주소 사용시 --global 옵션 제거하면 됨
$ git config -l //Git에 등록한 config의 정보를 모두 확인
*커널이 초기화 되는 가상환경에서 실습하는 경우
가상실습환경 주피터 노트북 사용시 매번 해줘야 되는 경우가 발생 이유가 궁금하여 찾아보니
.gitconfig 속에 등록한 config 정보가 저장되어 있고 이 파일은 커널이 매번 초기화 되므로 발생됨
$ git config credential.helper "store --file ~/aiffel/.git-credentials"
위 명령어를 통해 계정정보를 원하는 위치에 저장가능 하므로, 초기화 되지 않는 repository에 설정 해 두면 될듯
2) Git으로 버전 관리 시작하기(git init)
버전관리를 진행할 폴더로 이동 후 버전관리를 위한 Git 심어놓기
$ git init
- 이 디렉토리를 새로운 Git local 저장소로 만들었다는 의미
- ls -a 로 확인해보면 .git 이라는 폴더가 생성됨
2. 버전관리
1) git으로 변화 확인(git status)
git으로 버전을 관리하고 있는 directory를 git status 명령어를 통해 변화를 감지함
$ git status
아래는 README.md 파일을 추가한 후 테스트
$ git status
On branch main
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
README.md
nothing added to commit but untracked files present (use "git add" to track)
- Untracked files : 새로운 파일 목록
2) git으로 버전만들기(git add & git commit)

1. staging area는 commit을 하기 전에 commit할 파일들을 골라놓는 곳
2. repository는 commit된 파일의 버전들을 모아놓는 곳입니다
2-1)스테이징하기 (git add)
staging area에 파일을 넣기
#여러개 파일 staging
git add 파일명1, 파일명2, ~
#작업폴더 모든 파일 staging
git add .
staging 취소
git restore --staged 파일명
2-2)commit하기 (git commit)
git commit -m '메세지'
commit 기록확인하기
git log --all --oneline
git log --all --oneline --graph
- -graph 옵션 : 그래프(Vim 에디터가 켜져서 q로 종료해야 함)
3. 협업하기
github.com은 이제 기본 브랜치 이름을 master가 아니라 main으로 사용하라고 권장하므로 변경
git branch -M main
Github 레파지토리의 주소를 로컬 저장소에 있는 git에게 알리기
git remote add origin 원격저장소주소
- push, pull 등을 사용하기 위해 원격저장소와 로컬저장소를 연결하기
- repository 접속url 뒤에 git만 붙이면 됨
1) 로컬 저장소의 기록을 원격 저장소로 전송(git push)
$ git push origin main
- origin으로 저장한 원격 저장소의 main branch로 push한다는 의미
- -u 추가하면 이후에 origin main 생략 가능
2)git push 전에 git pull 부터 해야함!(git pull)
원격 vs 로컬 내용이 다르다면 로컬저장소에서 git push가 안되므로 원격저장소에 수정사항이 있다면 먼저 pull을 해야함
- git pull 명령어는 git fetch + git merge 축약어
- git fetch는 원격저장소에 있는 commit 중에 로컬에 없는 신규 commit을 가져오라는 뜻
- git merge는 그걸 merge 하라는 뜻
git pull origin main
- git pull 원격저장소주소 브랜치명 입력하면 특정 브랜치만 가져올 수 있음
- -u 추가하면 이후에 origin main 생략 가능
3)원격 저장소 복제(git clone)
git clone 원격저장소주소
3. git의 branch 만들기

git 안에선 branch 기능을 이용해서 복사본을 만들 수 있고, 따로 버전관리도 할 수 있음
1) 프로젝트 사본생성(git branch)
git branch 브랜치이름
2) 브랜치로 이동(git switch)
git switch 브랜치이름
branch와 commit 내역 확인
git log --graph --oneline --all
3) branch 합치기(git merge)

main/master 브랜치로 다시 이동 후 git merge 브랜치명을 입력하여 합칠 수 있음
git switch main
git merge 브랜치명
- merge할 branch와 같은 파일, 같은 줄을 수정했을 경우 merge conflict 발생하는데, 충돌사항 확인 후 남길 코드 선택
나중에
3-way, fast-forward, squash, rebase 등과 같은 merge 방법
git flow / trunk-based 브랜치 전략 등에 대해서도 추가로 작성 해 봐야겠다