[TIL #15] Git revert, reset, merge, pull request

안떽왕·2023년 4월 6일
1

Today I Learned

목록 보기
15/76

revert

이전 커밋의 새로운 커밋을 생성 시킴

revert를 사용해 아래와 같이 만들어 졌다면
커밋1 - 커밋2 - 커밋3

커밋2에서 revert를 통해 커밋3이 생성, 그리고 이 커밋3은 커밋1과 같다, 커밋1의 내용을 옮겨왔기 때문

안정성은 있으나, 깃 로그가 지져분해지고, 가독성이 안좋아질 수 있다.

revert를 이용할때는 취소할 커밋을 적어야한다.
git revert <취소할 커밋>

reset

본인이 어디까지 리셋을 하고 싶은지에 따라 3개의 선택지가 있습니다.

reset을 사용할때는 되돌아갈 커밋을 적어야합니다.
git reset --soft <되돌아갈 커밋>

soft reset

커밋을 했다는 사실만을 되돌립니다, 커밋을 했다는 로그, 스태이징을 했거나, 작업디렉토리에서 변경로그는 남습니다.

스태이지에 올린 것 까지 살아있음

mixed reset

reset의 디폴트 옵션

커밋을 되돌리고, 스태이징을 한 로그까지 되돌립니다. 하지만 작업디렉토리에서 변경사항에 대한 로그는 남아 있습니다.

작업 디렉토리에 변경사항이 있는 것 까지 살아 있음, 스테이지에 올린 사실은 없어짐

hard reset

모든 작업사항의 로그까지 돌립니다.

작업디렉토리, 스테이지, 커밋 모두 되돌립니다.

stash

변경사항을 임시저장할 때 사용
git stash -m "<메시지>"

  • stash목록을 확인할때
    git stash list
    위와 같이 입력하면 임시저장한 항목들이 나오게되는데 stash@{숫자}와 같이 나온다.
    숫자가 0에 가까울 수록 최근에 작업한 stash이다

  • 임시저장한 stash를 적용하기
    git stash apply <stash>

  • 임시 저장된 작업 삭제하기
    git stash drop <stash>

branch

깃의 존재 이유
브랜치는 버전을 여러 개의 흐름으로 관리하는 방법

  1. 브랜치를 나눈다
  2. 각자 작업한다
  3. 합친다

git branch
현재 브랜치 목록을 보여준다

git branch foo
foo 라는 이름의 브랜치를 만든다

git checkout foo
foo 라는 이름의 브랜치로 작업환경을 옮긴다.

git checkout -b bar
bar 라는 브랜치를 만듦과 동시에 작업환경을 옮긴다.

merge

브랜치를 병합하는 것을 merge라고 한다.
병합하기전에 checkout으로 마스터 브랜치로 이동해야한다.
git merge <병합할 브랜치 이름>

빨리감기 병합

마스터 브랜치가 가만히 있었을 경우

마스터 브랜치가 3개까지 커밋이 쌓여있고, 거기서 foo 브랜치가 2개 까지 커밋이 쌓였을 때, 병합하는 경우 마스터 브랜치 3개 + foo 브랜치의 최신커밋 1개가 쌓이는게 아니라 마스터 브랜치 3개 + foo 브랜치 2개가 쌓여 총 5개가 된다.

즉 브랜치의 마지막 커밋이 합쳐지는게 아니라 작업했던 모든 커밋이 합쳐진다.

일반적 병합

bar 브랜치가 작성되는 동안 마스터 브랜치가 가만히 있지 않았을 경우

마스터 브랜치가 3개까지 쌓이고 거기서 bar 브랜치가 나와 커밋이 3개까지 쌓일 동안 마스터 브랜치도 2개의 커밋이 쌓였다면 빨리감기 커밋을 사용할 수 없다.

이 경우 bar 브랜치의 마지막 커밋과 마스터 브랜치의 마지막 커밋을 병합한 새로운 커밋이 마스터 브랜치에 추가된다.

충돌

같은 위치를 다르게 수정한 경우 발생
어떤 브랜치의 내용을 선택할지 결정하고 다시 커밋

>>>>>head
master
======
foo
>>>>>

이런식으로 나올텐데 여기서 브랜치 내용을 선택하는 방법으로는 적용하고자 하는 브랜치의 내용을 제외하고 모두 삭제하면 된다.

mater

이런식으로 마스터 브랜치의 내용을 제외한 표시막을 포함한 모든 내용을 제거하면 마스터 브랜치의 내용으로 병합이 진행된다.

풀 리퀘스트

fork란
계정으로 복제해오기, 내 계정으로 기여하려는 저장소가 복제가 됨, 원본을 클론 해봐야 푸시가 불가능 하기 때문에 포크해와서 클론 받는게 좋다.

  1. 기여하려는 저장소를 본인 계정으로 포크하기
  2. 포크한 저장소를 클론하기
  3. 브랜치 생성 후 생성한 브랜치에서 작업하기
  4. 작업한 브랜치 푸시하기
    • git push origin <브랜치 이름>
    • 이후 깃허브에 풀 리퀘스트 버튼이 생김
  5. 풀 리퀘스트 보내기
profile
이제 막 개발 배우는 코린이

0개의 댓글