Git 세 번째 이야기

전성영·2022년 5월 12일
0

Git 정복하기

목록 보기
3/3

git 세 번째 이야기 고우!

지난 포스팅에는 협업할 때 알아야 할 issue, branch, merge 에 대해서 알아보았다.
이번 포스팅에는 협업을 하면서 일어날 수 있는 일들에 대해서 정리해 보려 한다. ex) reset, revert 등등

그럼 먼저 PR(Pull Request) 에 대해서 알아보자!

PR(Pull Request)란?

작업 내역을 바로 merge 하지 않고, 참여하고 있는 프로젝트에 내 작업(branch)를 merge해달라고 요청(Request) 를 먼저 보내는 것이다.

바로 commit 하지 않는 이유는 뭐 코드 리뷰라던가 코드 개선도 할 수 있고 정말 다양한 이유가 있지 않을까?

무튼 PR을 하게 되면 프로젝트의 퀄리티가 높아질 것 같다.

PR을 하는 방법은 간단하다.


먼저 좌상단에 Branch를 먼저 선택 후에

Open pull request 클릭!

저기 초록색 Able to merge가 뜨면 merge가 가능하다는 소리!
만약 내용이 겹치면 merge를 할 수 없게 막아준다. 똑똑한 Git형님


junsj119 wants to merge 1 commit into main from feature/jjim
feature/jjim 에서 main으로 merge한다는 뜻이다.

뜬금없지만 리눅스 개발자인 리누스 토발즈라는 분이 비트키퍼라는 소스 버전 관리 시스템이 유료가 되어서 git을 만들었다는데 정말 대단한 것 같다,,,

무튼 merge pull request하면 반영이 된다!


이런식으로 PR하고싶은 것을 물어와 댓글을 남기고
다 진행한 후 sourcetree가서 패치 + pull 해주면 된다


그 후Merge pull request 하면 된다!
다 진행한 브랜치는 삭제권장을 드린다 깔끔하고 헷갈리지도 않는다!


또한 내 Repo말고 다른 프로젝트에도 PR 할 수도 있는데 그것을 Fork라고 한다.

fork(포크)란?

fork는 원본 소스코드를 복사해서 새로운 독립적인 소프트웨어로 개발하는 것이다.
마치 어떤 문서를 복사해서 그 위에 내가 원하는 대로 수정해서 사용하는 것과 비슷하다.


fork를 누르고 등록을 하면?

이렇게 나온다!!

그럼 clone할 차례! 레포 주소를 복사해서 내 소스트리에 등록한다.

기능구현 후 PR 해주면 끝!!

다른 issue를 해보고 싶다면 먼저 알아야 할 것은
한번 fork한 repo는 다시 fork할 필요가 없다!
sourcetree에 남아있기 때문!
그 후 branch를 만들어서 issue 번호 적고 push 하면 된다!

다음은 amend

amend란?

작업하다가 commit 메시지에 오타가 났거나 파일을 까먹고 add(staging)하는 경우가 있는데 이 때 최신의 commit을 수정하는 것을 amend(어맨드,고치기) 라고 한다!
amend 로는 가장 최신의 commit 만 고칠 수 있다

push 전 amend와 push 후 amend 로 나눌 수 있는데 우선 push 전 amend부터 알아보자!


평소대로 commit을 진행하는데 커밋 옵션에서
마지막커밋 정정 클릭!! 그럼 끝난다! 정말 간단.

그 다음은 push 후 amend 에 대해서 알아보자!
push후는?일단 다른 사람과 함께 쓰는 branch에선 사용하면 안된다!
절대절대.

평소대로 commit을 하고 push까지 진행을 한다. 그 후

강제 푸시 기능을 켜준 후


억지로 밀어 넣어버리면 끝이 난다!
별로 좋은 기능은 아닌 것 같다. 프로젝트 할 때에는 물론 실무에서는 더더욱 지양해야 할 것 같다.


다음은 revert다.

revert란?

저 이거 되돌렸어요! 하면서 되돌리는 것이라고 생각하면 편하다.
최신 commit뿐만 아니라 이전에 했던 commit도 revert 로 되돌릴 수 있다!

하는방법? 진짜 간단하다.
우선 되돌리고 싶은 커밋로그에 마우스를 올린 후 우클릭!

이것만 봐도 느낌이 온다. 커밋 되돌리기를 누르면 된다!

마지막으로 reset

reset이란?

reset (리셋)은 commit 했던 작업내역을 말 그대로 리셋시키는 것이다.
과거로 돌아가서 새로운 삶을 사는 것처럼 reset 이후에 작업내역은 없어진 commit 기록과 관계가 없다.

리셋에는 세 가지 모드가 있는데

  • soft(소프트)
    commit 들을 되돌리고 변경된 파일 작업 내역은 보존해서 파일 변경사항으로 보여준다. 이때 변경사항은 add 되지 않은 상태로 보인다
  • mixed(믹스드)
    commit 들을 되돌리고 변경된 파일 작업 내역은 보존해서 파일 변경사항으로 보여준다. 이때 변경사항은 add 된 상태로 보인다.
  • hard(하드)
    commit 들을 되돌리고 그동안 작업했던 모든 것도 없애버린다. 즉, 작업내역을 복원할 수 없다.

알아야 할 것은 히스토리를 남기지 않고 변경하는 것이므로 강제 푸시를 해야한다. 그렇지 않으면 변경내역 이력이 남게 된다

하는방법은 간단하다.


되돌리고 싶은 commit로그에 우클릭 후 이 commit까지 현재 브랜치를 초기화 를 해주면 된다!

hard 모드 만 조심히 써주면 되는데 그 이유는 모든 작업 상태 내 변경사항을 버리기 때문이다.
reset후 강제 푸시하면 끝!!

다음 포스팅에서는 변경사항을 임시 보관하는 stash 등을 정리 할 예정이다. 끗!!

수정해서 stash 올리기!

git을 공부하면서 느끼는 건데 이론적으로 공부할 때보다 프로젝트를 팀원들과 함께 진행하면서 얻는 게 더 많은 것 같다.

잘 될 거 같은데 안되는 게 너무너무 많다. git형님 넘호 어려워.

오늘은 먼저 stash에 대해서 정리해보려고한다.

stash란?

프로젝트의 변경사항을 임시적으로 보관해둘 때 사용한다.
예를 들면, 다른 branch 로 체크아웃 하는 경우 현재 branch 의 변경사항이 사라지게 된다.
아직 작업 중이라서 commit 하지 않고 변경사항만 보관해두고 싶을 때 commit 대신 stash 를 사용합니다.


하는방법은 간단하다. sourcetree에 들어가서 repo안에 있는 파일을 변경 후 스태시 버튼클릭

stash 메시지를 입력한 후 파일을 들어가보면 변경된 내용이 안보인다.


stash 되어있는 내용을 보려면 왼쪽하단에 스태시 클릭


sourcetree형님이 친절하게 알려주신다.

확인을 누르면 적용!!
더 이상 임시 보관할 필요가 없다면 지워주자!!

끗!!

profile
Slow and Steady

0개의 댓글