01. Git이란?
코드의 버전 관리 시스템 중 하나
코드를 짤 때는, 여러 명이 협업해서 하나의 버전을 생성되기 때문에, 되돌리는 과정 등이 부가적으로 필요하다.
또한 중간마다 변화사항이 생길 때마다 백업도 필요한데, 유의미한 변화를 중심으로 효율적 백업이 필요하다.
이런 버전 관리작업을 돕는 도구 중 하나가 바로 Git 이다!
02. Github란?
각자의 컴퓨터에만 존재하는 버전(local에서 만들어준 버전)을 저장/관리해주는 서비스
우리가 만약 원격 저장소에 저장을 한다면, 레포지토리에 저장된 모든 버전들을 저장할 수 있다.
03. Git 버전에 대하여
3-1. Git 내에서 버전이 생성되는 단계
Git은 세 개의 공간이 존재한다.
1. working directory (작업공간) : 내가 코드 작업을 현재 진행하는, 즉 파일의 생성/수정/삭제가 이뤄지는 공간
이 작업공간에서 수정한 모든 것을 버전으로 생길 필요는 없다. 왜냐면 굳이 업데이트하고 싶지 않은 경우가 존재하기 떄문이다. 따라서 작업공간 내에서 원하는 파일만 선정해서 버전으로 설정하는게 좋다.
2. staging area - 버전 후보들이 올라오는 공간이며, 작업공간에서 선별.
3. Repository - 최종 버전이 된 것을 하나의 버전으로써 저장하는 공간, 이 곳에는 지금까지의 지난 모든 버전들에 대해 저장한다.
이 공간 사이에서, 움직임으로써 버전이 생성되는데, 아래의 단계를 거친다.
1. 버전이 될 파일들을 선별(working directory -> staging area)
2. 선별된 파일들 중에서 최종 선정해 하나의 버전을 생성하는 작업(staging area -> repository)
04. Git 핵심 명령어 정리 (1)
1. git init
이 폴더 안에서 버전관리를 시작하겠다는 명령어다.
아래처럼, ls -al 명령어 실행 시, git init 명령을 한 이후에는 .git 폴더가 생긴 것을 알 수 있다.
2. git status
해당 폴더의 상태를 확인한다. 파일의 수정 여부 등을 확인할 수 있다.
3. git add 파일명 (전체를 옮기고 싶으면 파일명 대신 .)
staging area 로 옮기는 작업이다.
4. git rm --cached 파일명
staging area 에서 내리는 (= git add 취소하는) 방법이다.
5. git commit -m "commit message"
빠른 commit 을 수행한다. 만약 자세한 커밋 메시지를 남기고 싶다면, git commit 이라고만 명령을 주면 된다.
특정 add 한 파일을 commit 하고 싶은 경우 git commit -m "변경내역" 파일(또는폴더)경로 or 파일명 명령어를 준다.
6. git config --global user.email "you@example.com"
7. git config --global user.name "Your Name"
계정 설정 방법이다.
8. git log
커밋 현황을 확인할 수 있다.
9. git commit -am "commit message"
add와 commit 을 동시에 하는 코드다.
단, 한 번이라도 커밋을 했던 대상에서만 가능한 명령이다.
10. git remote add origin 주소
주소와 로컬을 연결하기 위해, remote 명령어로 주소를 등록한다.
11. git branch -M main
main 이라는 브랜치를 생성한다.
12. git push -u origin main
해당 origin 주소의 main 브랜치에 commit 내역을 저장한다.
이때, 처음 push 이후의 push는 git push 만 작성해도 된다. (단, 등록한 origin의 main 브랜치에 저장이 될 것이다.)
4-1. RESET 명령어 알아보기 - add, commit 리셋 방법
1. git reset --hard HEAD^
수정한 것까지 통째로 되돌리기 (레포지토리에서 워킹디렉토리 전까지 & 첫번째 버전)
가장 최근 커밋으로부터 한 개 전으로 되돌리는 명령어다.
만일 최근 커밋으로부터 2개 전으로 되돌리기를 원하면 HEAD^^라고 작성한다.
혹은, 특정 상태로 되돌리고 싶으면 git reflog 해서 나온 아이디를 이용하여 git reset --hard <id> 명령어를 이용하면 된다.
2. git reset --mixed HEAD^
add 한 것까지 되돌리기. 즉, 레포지토리에서 워킹디렉토리까지만 변경한다.
최근커밋과 add 된 내용(staging area)이 삭제되나, working directory 에 있는 내용은 삭제되지 않는다.
3. git reset --soft HEAD^
commit 한 것까지 살짝만 되돌리기 (레포지토리에서 스테이징 area까지)
working directory, staging area는 그대로 보관된다는 특징이 있다.
4-1. Branch 명령어 알아보기
Git Branch의 필요성?
직접 코드를 주고 받을때, 올바른 병합을 위해 코드의 모든 부분이 완벽히 동기화가 되는지 확인해야 한다.
이런 문제를 해결해야 할 때 Branch가 유용하게 쓰인다.
Git의 협업 원리는 작업 단위로 나눠서 각자 작업한 뒤 합치는 것이다. 따라서 Branch 가 필요하다.
1. git branch
현재 branch 목록 확인
※ git branch는 한번이라도 커밋을 한 다음 브랜치 작업을 해야 한다.
2. git branch <브랜치이름>
브랜치 생성
3. git checkout <브랜치이름>
해당 브랜치로 전환
🔥 여기서 잠깐! 브랜치에 잘 들어갔는지 확인하는 방법?
ls -al 명령어를 사용한다. 특정 Branch에 Commit을 하는 순간, 다른 Branch에서 해당 파일을 확인할 수 없다.
4. git merge <합치려는 branch>
현재 checkout된 Branch에 다른 branch를 합칠 때 사용
🔥 어떤 branch를 어디로 합칠 것인가?
만약 main 브랜치에 my-branch를 합치고 싶으면, 병합의 결과가 되는 대상(main)에 checkout를 한 뒤, merge 함수 뒤에 합치려는 branch 명을 작성한다.
05. 원격 저장소(Repository)로 협업하는 방법
1. 나는 변함없고 원격이 변한 경우 pull & push
2. 나도 변했고 원격도 변한 경우 pull request
3. push 권한 주고 (collaborator 추가하기)
05 이후로부터는 다음 포스팅에서 계속 다뤄보도록 하겠다 !
'컴퓨터 사이언스 (CS) > Docker & Git' 카테고리의 다른 글
개발자 선물로 추천, 도커(Docker) 컨테이너 각티슈 케이스 (0) | 2023.01.28 |
---|---|
Git Push & Clone 오류 원인 - repository 인증 정책 변경 (0) | 2021.08.17 |
03. Docker Image 생성하는 방법 (0) | 2021.06.25 |
02. Docker 통한 Redis CLI 접속 방법 + 기본 사용법 (0) | 2021.06.24 |
01. 도커란 무엇인가? (0) | 2021.06.10 |