입벌려 Git 들어간다

Kiwi·2024년 3월 12일

Git & GitHub

목록 보기
2/2
post-thumbnail

깃과 개발자는 마치 콜라와 햄버거같은 땔래야 땔수없는 존재이다.. 자주 쓰이고 다양하게 쓰인다. 여태까지 학교를 다니면서는 기초적인 커밋과 풀리퀘만 하면서 찍먹했는데 마음먹은 김에 쭉 정리해봤다.

📁 Git과 Github

깃은 버전을 관리해주는 강력한 도구. 프로젝트를 commit이라는 단위로 버전 기록을 남겨서 관리할 수 있다.
깃허브는 관리 중인 깃파일을 서버에 저장하는 일종의 플랫폼. 깃허브에는 깃이 저장된 수많은 원격저장소가 존재한다.

  • remote area (원격저장소) : 로컬에서 commit한 내역을 업로드하는 서버 (github)
  • staging area : 의도한대로, 더 안전하게 커밋을 하게 해주기 위한 임시 공간
  • local area : 프로젝트를 개발하는 pc 환경

✅ branch

프로젝트의 특정 시점에서의 코드 상태를 가리키는 포인터이다. 보통 프로젝트를 진행할때 각각의 기능에 따라 브랜치를 만든다.(login, chat...) 보통 main 브랜치는 기본 브랜치로 프로젝트 배포전 최종 브랜치로 사용한다. 그럼 협업하기 위한 브랜치는?? 일반적으로 develop(dev)브랜치를 하나 만들어 기능브랜치를 합치면서 프로젝트를 진행하고 오류를 점검한다.

branch 관련해서 명령어는 다음과 같다.

- 브랜치 만들기
git branch {새로 만들 branch 이름}

- 브랜치 확인하기
git branch

- 브랜치 이동하기
git switch {이동할 branch 이름}
git branch {이동할 branch 이름}

- 브랜치 만들기 + 이동하기
git checkout -b {새로 만들 branch 이름}

- 병합하기 (현재 branch에 다른 branch 병합하기)
git merge {병합할 branch 이름}

✅ git CLI로 사용해보기

1. 먼저 로컬 area로 사용할 폴더를 만든다. 그리고 터미널로 해당 폴더의 위치로 이동한다.

2. git init

git을 사용하기 위해 가장 처음 실행하는 command이다. 실행하면 프로젝트 디렉토리 내에 git 설정과 commit이 저장되기위한 .git 디렉토리가 추가된다.

3. git remote

로컬과 연동해 프로젝트를 관리할 원격지 주소를 등록하는 커맨드이다. 원격지 이름은 사용자가 임의로 저장할 수 있지만 origin으로 사용하는게 암묵적인 룰이다. git remote -v 명령은 각 원격지에 대한 fetch와 push URL을 표시하는데, fetch URL은 원격지에서 가져오는 url이고, push URL은 로컬에서 푸시하는 URL이다. 기본적으로 fetch URL과 push URL은 같은 URL을 사용한다. 그러나 다른 URL을 사용하여 분리하면 개발자가 프로젝트에 직접 push하지 못하게 할 수 있다

git remote add "원격지 이름" "원격지 주소"  //원격지 등록
git remote -v  //로컬에 등록된 원격지 목록 확인

clone 한 경우: 이미 존재하는 원격저장소를 clone 하여 로컬로 가져올 때, git은 자동으로 해당 원격저장소를 origin이라는 이름으로 등록한다. 따라서 복제한 이후에는 해당 원격저장소와의 연결이 자동으로 설정된다.
init 한 경우 : 원격저장소가 자동으로 등록되지 않기때문에 git remote로 직접 등록하여야 한다.

(보통 로컬에서 시작한 경우 init, 이미 원격저장소에서 진행되고 있는 프로젝트를 가져올때 clone을 쓰는것 같다.)

모든 원격 브랜치를 업데이트하여 최신 상태로 갱신한다. 하지만 로컬 저장소에서 변동사항을 병합(merge)하지 않는다

git remote update

4. git checkout -b

기본적으로 원격지를 등록하면 main 브랜치에 위치해 있다. 이제 dev 브랜치를 만들고 전환해보자. 동시에 dev 브랜치에서 파생되는 work1 브랜치도 만들어주었다.

이 설정을 하게 되면 이제 로컬에는 dev 브랜치와 work1 브랜치가 생성된 것이다. 이렇게 로컬에서 브랜치를 만들더라도 원격지에는 자동으로 해당 브랜치가 생성되지 않는다. 원격지에서 새로운 브랜치를 만들려면 명시적으로 원격지에 브랜치를 push 해야 한다.
깃허브에서도 확인할 수 있다.

4.1. git pull
혹시 원격지가 더 최신버전인 경우에 원격지의 변경사항을 로컬로 동기화하는 명령어이다. 이 명령어는 로컬의 변경사항이 모두 commit으로 이동된 후에 수행해야 오류없이 진행된다.

5. git add

git add 명령어로 이제 stage에 파일을 추가해준다. 여러 프로젝트를 추가해주었다.

git add . //현재 디렉토리 하위의 모든 파일을 추가
git add -A //현재 프로젝트 내의 모든 파일을 추가
git add abc.png //특정 파일을 추가

6. git commit

stage에 있는 변경사항들을 commit으로 합치고 stage를 비우는 명령어이다. 모든 commit에는 commit hash라는 이름의 고유값이 부여된다.

git commit -m "커밋 메시지"

7. git push

원격지로 commit을 업로드하는 명령어이다. 로컬이 원격지의 버전을 모두 포함하고 있으며, 로컬이 더 최신버전인 경우에만 정상적으로 작동한다. 원격지에만 있는 변경사항이 있다면 pull로 병합한 후 진행해야 오류없이 진행할 수 있다.

git push 원격지 브랜치


8. compare & pull request

push를 마치면 github에 compare & pull request라는 버튼이 뜨는것을 볼 수 있다. 이는 이제 push를 했으니 내 변경사항을 보고 적용해라 라는 뜻이다.
버튼을 누르면 다음과 같은 창이 나온다. 먼저 제일 윗부분의 base는 최종브랜치, compare는 현재브랜치로 compare브랜치 내용을 base에 적용하겠다는 의미이다. 그리고 그 밑에 pull request 메세지를 작성할 수 있다. 현재 나는 dev 브랜치에 현재 상황을 적용해달라는 요청을 보내겠다. 메세지를 다 작성하고 create pull request 버튼을 눌러준다.

버튼을 누르면 다음과 같은 화면이 뜬다. 여기서 코드 변경점과 커밋 메세지를 확인할 수 있다. 이 부분에서 code review를 하면 된다. 코드 리뷰를 하면서 오류가 있다면 다시 commit을 보낸다.

9. merge pull request

변경한 내용을 병합한다는 의미이다. merge pull request라는 버튼은 관리자 / 소유자에게만 활성화 된다.

profile
🐣 iOS Developer

0개의 댓글