Github 요약 (Linux system 상에서)

github를 통한 협업 요약 (2)

Liam Lim 2023. 12. 3. 01:20
728x90

지금까지 git branch를 통한 merge까지 알아봤다.

 


 

 

branch를 합칠 때 다양한 방법이 있는데 추천하는 두 가지를 설명한다.

 

1. 3-way merge

2. squash and merge

 

 

1. 3-way merge는

저번에 봤던 것과 같이 master branch 와 slave branch 각각에 신규 commit이 1회 이상 있는 경우, merge를 하면 두 branch의 코드를 합쳐서 새로운 commit을 자동으로 생성해준다.

그림 출처 : codingapple

 

이 방식을 merge의 기본 동작방식인 3-way merge라고 한다.

 

 

하지만, 회사에서 외주를 맡거나 혹은 회사에 들어갔을 때 대충 모든 branch를 3-way merge를 해버리면 곤란한 경우가 생긴다.

3-way merge 된 것들은 위에서 보이는 commit 과의 선을 모두 표현해서 나중에 여러 branch 사이에서의 merge를 이어나가면 (1) 알아보기 힘들 정도의 복잡성을 띄게 된다.

master branch의 git log 출력해보면 3-way merge된 branch들의 commit 내역도 다 같이 출력되어서 또한 (2) 지저분해진다.

 

이 경우 추천하는 방식이 squash and merge이다.

 

 

2. squash and merge

 

squage and merge (그림출처 : codingapple)

 

이 방식을 쓰면 위의 두가지 문제점을 다 해결할 수 있다.

그럼 이제 master branch의 git log을 출력해볼 때, merge operation이 완료된 branch의 commit 같은 것들은 출력되지 않는다.

 

git switch master
git merge --squash branch_name
git commit -m "원하는 메시지"

 

squash and merge를 사용하는 방법은 merge 시에 --squash 옵션을 추가하면 끝이다.

즉, slave branch에서 만들어놨던 commit들을 다 합쳐서 하나의 commit으로 master branch에 생성을 해준다.

 

 

회사에 들어가면 branching/merge guide가 있을 것임

    - 중요도가 떨어지는 branch는 squash and merge

    - feature / develop branch는 3-way merge

 

만약 회사에 들어갔는데 branching / merge guide가 없을 경우, 퇴사를 추천한다고들 한다.....

 


 

 

git은 버전 관리 프로그램

commit은 중간 저장 ctrl + s 같은 기능이지만 ctrl + s 처럼 남발하면 안된다.

 

commit을 중간중간 해놓았을 때 이전 commit으로 돌아가거나 문제가 되는 commit 내역을 취소할 수 있다.

git restore ( file 복구 )

git revert ( commit 복구 )

 

# Syntax
git restore file_name

 

파일을 수정했던것이 마음에 안들때 제일 최근에 commit한 상태로 현재 file의 수정 내역을 되돌릴 수 있다.

 

git restore --source commit_ID file_name

 

입력한 file이 특정 commit한 ID 시점으로 복구된다.

 

git restore --staged file_name

 

staging 영역에 있는 file을 취소할 수 있다.

 

# Syntax
git revert commit_ID

 

해당 commit_ID에서 일어난 일을 취소해준다.

실행하면 vi editor 가 실행되고 원하는 message를 입력한 후 종료시키면 된다.

 

 


 

 

만약 내가 local repository에서 작업을 하다가 만약 local에서 문제가 생겨서 저장소에 문제가 생길 경우 내가 작업한 것들이 다 사라지는 문제가 발생하게 된다.

 

먼저, repository에 대해 알아보자면

내 directory에서 git init 명령어를 치고나면 .git이라는 repository가 생성된다.

( 숨어있기 때문에 window라면 숨긴 file 보기를 해야할 것이고, linux base system이라면 ls -al을 통해서 확인할 수 있다.)

그래서 local working directory에 있는 repository 라고 해서 local repository라고 한다.

 

이번에는 github이라는 remote repository (원격 저장소)를 사용하는 법을 알아볼건데

먼저, github에 가입을 하고 repository를 (default로) 하나 생성해준다.

 

1. github (remote repository)에서는 기본 브랜치 이름을 master가 아니라 main 을 사용하기 때문에

만약 local working directory에서 기본 브랜치 이름이 master라면 main으로 아래와 같이 변경해준다.

git branch -M main

 

2. 다음은 local -> remote repository로 업로드를 하는 방법이다.

git push -u 원격저장소주소 main

 

이 말은 local repository의 main branch를 원격 저장소에 올리는 것이고 main branch가 아닌 다른 branch에 올리고 싶다면 main자리에 해당하는 다른 branch의 이름을 적으면 된다.

원격 저장소 주소는 생성한 github의 repository에 보면 http옆에 있는 주소를 복사해서 붙여넣으면 된다.

참고로 user_name과 user_password를 통해서 로그인을 하라고 하는데 password는 token으로 대체되어서 구글링을 통해 어떻게 하는지 찾아보길 바람.

 

728x90