git에서는 ~와 ^와 같은 것들이 있습니다. 그리고 상대 참조도 있어요. 특정 커밋을 기준으로 참조한다는 의미입니다. 이들을 간단하게 알아보고 ~와 ^의 차이도 같이 알아보겠습니다. 실습을 할 git graph는 아래와 같이 되어 있습니다. 뭔가 복잡해 보이는데요. 천천히 따라가 봅시다. HEAD는 커밋 e4621faa를 가리키고 있어요. 먼저, ~n은 기준이 되는 커밋으로부터, first parent로 가는 연산을 n번 하는 것입니다. 이게 무슨 말인가? HEAD는 e4621faa라고 했습니다. 해당 커밋으로부터 --first-parent들을 뽑아 보겠습니다. e4621.., 15a595.., 431c9.. 이 순서대로 나와 있어요. 여기서 주목해야 할 점은 e4621.. 커밋의 부모는 1개가 아니라..
Git 검색 결과
git에는 rev-parse라는 명령어가 있습니다. 이 명령어로 현재 커밋의 hash라던지, 특정 커밋의 hash 등을 얻어올 수 있습니다. 예를 들자면, 현재 브랜치의 커밋에서 5개 전에 있는 commit의 hash라던지, 다른 branch의 head에서 5개 전의 커밋 hash 등도 얻어올 수 있습니다. 상대 참조의 개념을 이용하면 이런 것들은 어렵지 않게 할 수 있습니다. 이건 보너스로 실습하면서 알아봅시다. git graph는 위와 같습니다. 현재 브랜치의 head의 커밋 hash을 얻어오고 싶습니다. 그러면 단순히 git rev-parse HEAD 이렇게 입력해 주시면 됩니다. 현재 제 커밋은 cef083c.. 임을 볼 수 있어요. 해당 커밋에서, main.txt가 최초로 추가되었습니다. 현재 ..
안녕하세요. 이번 시간에는 git rebase를 할 때 쓸 수 있는 --onto 옵션에 대해 배워보겠습니다. 현재 깃 branch가 다음과 같다고 해 보겠습니다. 2.txt add 라는 커밋에서부터 test 브랜치가 분기했습니다. 그런데, test bug.. 가 있어요. test 브랜치에 실수로 bug가 많은 커밋을 push해 버렸습니다. 이 commit으로부터 test2가 분기했습니다. test2는 1.txt에 무언가를 append 한 모양입니다. master에는 2.txt에 무언가를 추가했습니다. test bug.. 입니다. 3.txt에 It is bug feature라는 것이 추가되었습니다. 다음에 1.txt에 무언가를 추가한 커밋입니다. test2에 붙어 있었습니다. 4와 5가 추가되었습니다. 다..
안녕하세요. 이번 시간에는 기준을 재지정 할 때 쓰일 수 있는 git rebase에 대해 간단하게 알아보겠습니다. 먼저 test branch에는 227fdfa3과 185dfc5c 이 두 브랜치가 쌓여 있습니다. 227fd..는 1.txt에 1, 2, 3이 추가된 것입니다. 185df...는 2.txt에 1, 2, 3이 추가된 것입니다. 다음에 master 브랜치에 있는 d2bc7e9a는 1, 3이 3.txt에 추가된 것입니다. git rebase test를 입력해 보겠습니다. 그랬더니, 요래 바뀌어 버렸습니다. 어떻게 수행된 것일까요? master인 상태에서 git rebase test를 입력하였습니다. 문서를 보면, 현재 branch가 topic인 경우, git rebase master와 git reb..
안녕하세요. 이번 시간에는 git merge squash에 대해 간단하게 알아보고 실습해 보겠습니다. 현재, 깃 그래프는 위와 같아요. main commit가 master의 head입니다. 여기로부터 분기되어 test add와 test2 add라는 커밋이 들어갔는데요. 이 부분이 test 브랜치에 있는 commit입니다. 이제, 우리는 이런 상황을 생각해 보겠습니다. feature test를 개발했고, 테스트가 잘 되어서 merge하려는 상황입니다. 먼저, test add의 커밋 hash는 f7ca322.. 입니다. test.txt가 추가되었다고 하는군요. 어떤 내용이 추가되었는지 보겠습니다. test.txt에 1과 2가 추가되었습니다. 다음 test2 add에는 test2.txt가 추가되었습니다. 커밋..
최근댓글