Study/기술 및 용어 정리

[Git] Git Bash 브랜치 사용법 + pr(Pull Request)하기

토기발 2023. 6. 20. 17:05

이번 프로젝트에서는 기능별로 브랜치를 분리해서 푸시할 예정이기 때문에 브랜치에 대해서도 공부한다.

기본적인 회원이 있는 게시판 create sql문을 만들었는데, sql브랜치를 생성해서 그쪽으로 푸시할 예정이다.

가보자고~~

 


브랜치란?

출처 : https://backlog.com/git-tutorial/kr/stepup/stepup1_4.html

브랜치란 독립적으로 어떤 작업을 진행하기 위한 개념이다. 필요에 의해 만들어지는 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에 여러 작업을 동시에 진행할 수 있다.
기본 branch는 main이고 다른 branch를 이용해 개발을 진행하고 병합하면 된다. 브랜치 기능을 사용하여 main 브랜치만을 관리하는 것이 아닌 여러가지 브랜치를 생성하여 다양한 방향으로 버전관리가 가능하다.

 

 

브랜치 생성 및 이동

 

먼저 내가 지금 어느 브랜치에 있는지 확인해보자.

git branch

 

아직 아무 브랜치를 만들지 않아서 기본 브랜치인 main뿐이다. 

*가 붙어있는 브랜치가 현재 활성화 되어있는 브랜치이다. 

 

 

git branch [브랜치명]

브랜치를 생성했다.

다시 git branch를 입력해보면 sql이 추가된 것을 알 수 있다.

하지만 아직도 main이 활성화 되어있다. sql 브랜치로 이동해보자.

 

git switch [이동할 브랜치명]

* git 2.23버전 부터 git checkout을 대신하여 switch와 restore가 나오게 되었다고 한다.

는 여전히 checkout도 가능함 ㅎㅎ

 

 

변경사항 취소하기

 

 

이와중에 새로 생성한 파일이 있어서 표시가 되었다.

main 브랜치에서 작업 도중에 브랜치를 변경해서 아래 에러까지 뜨고 있는 상황...

(staging area에 가지 못하고 working directory에서만 변경되어있는 상황이다.)

 

아래 명령어를 사용해 working directory에서의 변경을 취소해보자.

git restore [파일명]

 

이제 파일을 푸시해보자.

 

 

생성한 브랜치를 원격 레포지토리에 push

 

 

저번 게시물에 올렸던 것처럼 git add [파일명]을 사용하여 스테이징하고 커밋문구도 입력하였다.

그런데 똑같이 git push를 하려니 푸시가 되지 않는다.

로컬 저장소에는 sql이라는 브랜치가 있지만, 원격 저장소에는 만들어지지 않아서 생긴 문제이다. 

브랜치 생성 후 처음 푸시할 때는 --set-upstream 옵션을 붙여줘야 원격 저장소에서도 브랜치가 생성이 된다.

 

git push --set-upstream origin [브랜치명]

 

이제 깃허브에서 확인해보자.

레포지토리에서도 sql 브랜치가 생성된 것을 확인할 수 있다.

--set-upstream 옵션은 브랜치를 처음 생성했을 때만 입력하면 되고 다음부터는 기존처럼 git push로 명령어를 입력하면 된다.

 

더불어 git push --set-upstream origin [브랜치명] 명령어는 

git push -u origin [브랜치명]

이렇게 줄여서도 사용이 가능하다.

 

 

 

 

이렇게 푸시를 하고나서 레포지토리에 가보면

이런식으로 pr(pull request) 하라는 버튼이 뜬다.

(sql브랜치는 삭제해서 posts브랜치로 대체한다)

 

메시지를 작성하고 Create pull request 버튼을 누르면 pr이 완료된다.

이후 Pull Request를 받은 원본 저장소 관리자는 코드 변경내용을 확인하고 Merge 여부를 결정한다.

 

 

 

 

 


 

참고출처

https://velog.io/@younoah/git-restore-clean-%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%98%EC%97%AC-%EB%A1%9C%EC%BB%AC-%EB%B3%80%ED%99%94-%EC%B7%A8%EC%86%8C%ED%95%98%EA%B8%B0-feat.-reset

https://mylko72.gitbooks.io/git/content/branch/checkout.html

https://goddaehee.tistory.com/274

https://dev-youngjun.tistory.com/47

 

'Study > 기술 및 용어 정리' 카테고리의 다른 글

[디자인패턴] MVC, MVP, MVVM 개념과 비교  (0) 2023.07.15
[Git] Stash, Stash pop 사용하기  (0) 2023.06.21
[Git] Git Bash 사용법  (0) 2023.06.20
[AWS] RDS란?  (0) 2023.06.18
[AWS] AWS의 개념 및 특징 (+EC2)  (0) 2023.06.17