본문 바로가기
개발/TIL

[Git] git 공부 Day1

by candosh 2023. 5. 6.

이제는!
정말 Git&Github를 써야 하기 때문에 공부를 시작해보려고 한다.
 
항상 대충씩만 보고 한 번도 제대로 공부해 본 적이 없기 때문에, 부족할 수 있지만 공부 start!!! Git 마스터의 길로!!!!
 
오늘 공부는 'TECHIT'이라는 사이트의 프론트엔드 온보딩 트랙 중 깃&깃허브 챕터 내용이다!
 
그럼!! 강의 들으며 내용을 정리해보겠습니다!!


Git 동작 흐름과 구성 요소

Local
: 사용하고 있는 컴퓨터 그 자체의 공간을 말함
1) Working Directory : 현재 작업 중인 프로젝트가 위치한 디렉토리
2) Staging : commit 할 파일의 예비 저장소
3) Local Repository : 각 컴퓨터의 git이 관리하는 로컬 저장소
 
remote
Remote Repository(Github) : 깃허브 등 외부에 위치한 원격 저장소
 

로컬 Git 저장소 생성

Step1.
$ git init
: Working Directory에 있는 파일들을 init명령어를 통해 초기화시켜줌, 그럼 해당 디렉토리 파일들이 '. git'에 모두 저장됨
** 주의) 나의 프로젝트가 위치한 곳으로 이동 후 터미널에서 명령 실행!
 
Step2.
. gitignore 파일 추가
: gitignore 파일과 같은 위치에 있는 config.txt는 git에서 무시
**무시되는 파일은 보안상 민감 정보, 각종 설정 파일, 빌드 산출물, 개발용 데이터베이스
 
Step3.
$ git status 
: 현재 어떠한 파일이 추적되고 있는지, 예비 저장소인 Staging Area에 어떤 파일이 있는지 확인하는 명령어
 
Step4.
$ git add .
$ git add "<파일명>"
: 'add.'은 전체 파일, 'add "<파일명>"'은 특정 파일만
: 나의 프로젝트 중 버전관리에 반영할 파일 지정
: 버전관리에 반영된 파일의 영역이 Staging Area
: git -rm으로 add 취소 가능
 
Step5.
$ git commit -m "<message>"
: Staging Area에 있는 것을 저장소에 하나의 버전으로 작업할 수 있는 커밋
: 로컬 저장소에 변동 기록을 남기기 위해 commit 실행
: commit을 통해 새로운 버전 git에 등록
: message를 통해 commit에 대한 정보 기록
 
-> 주의!! 아직까진 local에서만 존재

Step6.
$ git branch -M main
branch
1) main/ master : 즉시 운영/ 배포할 수 있는 버전, 사용자가 지금 이용 중인 코드
2) staging : 상용에 반영하기 전 테스트 버전
3) feature : 새로운 기능 추가 개발(병렬 작업)
 

Github에 소스 반영

Step1.
$ git remote add origin <원격저장소 주소>
 
Step2.
$ git push -u origin <브랜치명>
: git push도 가능!
: push 대상 원격 저장소 계정정보 인증 필요
: 원격 저장소로 프로젝트를 push 하면 Github에서 코드 확인 가능
 

Github으로 협업하기

Step1.
$ git clone <원격저장소 주소>
: git clone https://github.com/[계정명]/[프로젝트명].git 
 

Step2.
$ git checkout -b <브랜치명>
$ git checkout <브랜치명>
: main에 영향을 미치지 않고 내 브렌치에서 자유롭게 작업
: 내 브랜치에서 작업 후에는 커밋을 해서 다시 메인 브랜치로 가야 함
: 전자는 새로운 브랜치를 만드는 것이고, 후자는 원래 브랜치로 돌아가는 명령어
 
Step3.
$ git merge <브랜치명>
: 서로 다른 브랜치의 같은 곳에 위치한 코드가 다르면? 정상적으로 머지되지 않음(conflict 발생!)
: conflict 발생 시 어떤 라인의 것을 사용할지 정한 후 다시 commit 해주면 됨
 


오늘은 여기까지! 직접 터미널에 쳐보면서 공부했더니 금방 이해가 되었다!
 
과제를 이제 깃허브에 올려야 하는데, 오늘 배움을 바탕으로 도전해 보겠다!!
 
그럼 안뇽~~!!