본문 바로가기

개발 도구52

HEAD와 브랜치의 관계(개념, 원리) HEAD와 브랜치의 관계, 더 나아가 git reset의 개념에 대해서 추가로 알아보도록 하자. 글로만 쓰는 것보다 이미지와 함께 설명하면 더 좋을 듯 해서 피그마로 후다닥 그려 보았는데...🥲 이해에 도움이 될지 모르겠다. 브랜치(branch)의 개념 브랜치는 커밋을 가리키는 포인터이다. 아래 이미지와 같이 세번째 커밋을 한 후 premium 브랜치를 새로 만들어서, main 브랜치와 각각의 작업을 수행했다면 main 브랜치와 premium 브랜치는 각각 다른 커밋을 가리키는 포인터인 것이다. 헤드(HEAD)의 개념 HEAD는 이러한 브랜치를 가리키는 포인터이다. HEAD가 가리키는 커밋에 따라 working directory가 달라진다. 따라서 아래 이미지의 경우, HEAD가 main 브랜치를 가리키.. 2022. 11. 22.
브랜치(branch)를 깃허브(github)에 push하기 한동안 로컬 레포지토리에서 작업한 내용을 깃허브에 업로드하지 않았다. 예전에는 git push 명령어 하나만 쓰면 자동으로 업로드가 되었었는데... 이제 로컬 레포지토리에는 브랜치도 생겼다. 어떻게 해야 하지? 산을 넘으면 또 산이 기다리고 있다. 하지만 이번 산도 잘 넘을 수 있을 것이다. 깃허브에 브랜치 작업내용 push하는 방법 premium 브랜치에서 아직까지 했던 커밋 리스트를 확인해보았다. 아래 이미지에서 표시하고 있는 것들의 의미는 다음과 같다. (HEAD -> premium) : HEAD는 premium 브랜치의 최신 커밋을 가리키고 있다. (main) : 로컬 레포지토리에서 main 브랜치로 작업한 최신 커밋이다. (origin/main) : main 브랜치의 해당 커밋까지 깃허브에 업로.. 2022. 11. 21.
머지 취소하기(git merge --abort) 이제 나는 머지를 할 수 있고, 컨플릭스가 발생했을 때 해결도 할 수 있다. 그럼 이번에는 이미 실행한 머지를 취소하는 방법에 대해서 알아보자! 머지를 시도했는데 사실은 머지를 나중에 하고 싶었던 경우 (단순 실수) 컨플릭스가 발생한 파일인 너무 많아서 다시 수정한 후에 하고 싶은 경우 등의 이유로 머지 자체를 취소하고 싶을 수도 있다. 이럴때는 아래와 같은 커맨드를 사용하여 머지를 실행했던 사실을 완전히 없었던 일로 만들 수 있다. 이 커맨드를 실행하면 모든 코드들이 머지를 시도하기 전 상태로 돌아간다. 참고로 abort 단어의 의미는 '중단하다, 버리다, 취소하다'라는 의미를 가지고 있다. 다음 포스팅에서는 브랜치(branch)를 깃허브에 push 하는 방법에 대해서 정리해볼 예정이다. 2022. 11. 20.
컨플릭트(Conflict) 났을 때 해결하는 방법 지난 포스팅에서는 브랜치 머지하는 방법에 대해서 설명했다. 이번 포스팅에서는 컨플릭트가 발생했을 때의 해결 방법을 설명하려고 한다. 컨플릭트(Conflict)가 발생했다! 나는 premium 이라는 브랜치와 main 이라는 브랜치 위에서 각각 작업을 했다. 그 다음 다시 premium 브랜치로 이동해서 main 브랜치의 작업 내용을 가져와 합치기로 했다. 그래서 git merge main 이라는 커맨드를 입력하고 실행시켰는데, 아래와 같은 오류 메세지가 떴다. "CONFLICT (content) : Merge conflict in calculator.py" 이 메세지는 머지를 하다가 calculator.py 파일에서 충돌이 발생했다는 의미이다. 두 개의 코드가 달라서 어떤 코드로 합쳐야 할지 알 수 없을.. 2022. 11. 19.
브랜치 머지(branch merge)하는 방법 브랜치를 생성했다면 프로젝트를 변경하기 전, 본인이 어떤 브랜치로 작업을 하고 있는지 꼭 확인을 해야 한다. 이번 포스팅에서는 다른 브랜치에서 작업한 내용을 합치는 방법에 대해서 포스팅해보려고 한다. 상황 정의 브랜치를 생성해서 작업을 하고 있는데, 해당 작업이 다른 브랜치에도 적용이 되어야 한다는 사실을 알았다. 다른 브랜치로 이동을 해서 동일한 작업을 반복해도 상관 없겠지만, 그런 번거로움 없이 기존의 작업 내용을 그대로 반영하는 방법이 있다. 이것을 브랜치 머지(branch merge)라고 한다. 머지(merge)는 영어로 '병합하다'의 의미를 가지고 있다. 브랜치 머지(branch merge)하는 방법 브랜치 머지를 실행하는 명령어는 아래와 같다. git merge 브랜치명 # 현재 위치의 브랜치.. 2022. 11. 16.
맥북 업데이트 후에 git 에러 해결방법(xcrun error) 맥북 업데이트 후에 흔히 발생한다는 xcrun 오류를 해결하는 방법에 대해서 알아보도록 하겠다. 맥북에 새로운 업데이트 사항이 있다고 해서 진행했다. Ventura 13.0.1 버전이었는데 새로운 기능들이 추가되었길래 흥미로워하며 한참 구경을 했다. 그리고서 "이제 git 공부를 해야지~" 하고 터미널을 실행했는데 익숙한 명령어가 실행되지 않았다. 나는 아직 스스로에게 확신이 없는 상태라🤣 당연히 내가 잘못했다고 생각하고 스펠링도 다시 확인하고 몇 번을 재도전(!)해보았지만 역시 계속 실패였다. xcrun : error : invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Develo.. 2022. 11. 15.
브랜치(branch)는 무엇인가? 어떻게 사용해야할까? 다른 사람들이 깃과 관련된 대화를 할 때에, 브랜치(branch)는 정말 많이 들어본 용어였다. 그래서 이건 무슨 의미일까 하고 궁금해하곤 했는데 나도 드디어! 브랜치가 무엇인지, 어떻게 사용하는 것인지, 공부를 통해 알게 되었다. 브랜치(branch)란 무엇일까? 구글 번역기에서 branch를 검색하면 '나뭇가지'로 번역된다. 깃에서의 브랜치는 독립적으로 어떤 작업을 할 수 있는 코드 관리 흐름이다. (이게 무슨 소리...?) 하나의 프로젝트가 있고 그 안에서 두 개의 버전을 만들어야 하는 경우, 공통 부분을 제외한 특정 시점부터는 다른 코드로 관리를 하게 되는데 그러한 버전의 흐름을 브랜치라고 부른다. 혹은 여러 사람과 협업 시에 각각의 브랜치를 만들어서 따로 작업을 하고, 작업을 모두 마치고 나면 .. 2022. 11. 14.
중요한 커밋(commit)에 태그(tag)넣는 방법 커밋을 하면서 메세지를 작성하긴 하지만 그 중에서도 중요한 커밋에 추가로 태그를 달아놓을 수 있다. 이제부터 커밋에 태그(tag)다는 방법에 대해서 설명하려고 한다. 아래 커맨드를 사용하면 손쉽게 태그 관리를 할 수 있다. git tag 태그이름 커밋아이디 # 커밋아이디에 태그 달기 git tag # 프로젝트에 있는 모든 태그 보기 git show 태그이름 # 태그에 해당하는 커밋 정보 보기 (예제) git history를 통해서 아직까지의 커밋 리스트를 살펴보았다. 이제부터 위에서 2번째, 3번째 커밋에 각각 태그를 달 예정이다. 태그명은 특별히 생각나는 것이 없으므로 tag01, tag02으로 하기로 했다. git tag tag01 c188 하고 git tag tag02 28dd 명령어를 적어서 순서.. 2022. 11. 9.
특정 커밋 시점으로 돌아가고 싶을 때(git reset) 과거에 했던 커밋으로 내용을 되돌리고 싶을 때 어떤 커맨드를 사용해야 하는지 알아보자. 특정 커밋 시점으로 되돌릴 때는 git reset 특정 시점의 커밋으로 되돌릴 때는 아래와 같은 커맨드를 사용한다. git reset --hard 돌아가고 싶은 시점의 커밋 아이디값(4자리) --hard 옵션을 사용한 git reset은 특정 시점으로 리셋하고 나면 이후의 작업 내용은 모두 사라지게 된다. 그렇기 때문에 신중하게 써야하는 명령어이며, 옵션은 총 3가지가 있는데 이 부분도 매우 중요한 부분이라 이 포스팅을 끝까지 읽기를 바란다. 그럼 예제를 통해서 알아보도록 하겠다. 먼저 git history 명령어를 사용하여 아직까지 한 커밋 리스트를 확인해 보았다. HEAD가 가장 마지막에 한 Re_update co.. 2022. 11. 9.
두 커밋 사이의 차이점 비교하기(git diff) 이번 포스팅에서는 두 개의 커밋 사이에 내용이 어떻게 바뀌었는지, 그 차이점을 비교해보는 방법에 대해서 설명하려고 한다. 먼저 지난 포스팅에서 aliasing했던 단축 커맨드(git history)를 사용하여 한 줄 요약된 커밋 히스토리를 살펴보았다. (아래 이미지 참고) 예제로 설명하는 것이 이해하기 편하니까! 위의 커밋 리스트 중에서 Create README.md Add the info of calculator.py in README.md 라는 메세지가 적혀있는 두 개의 커밋을 비교해보려고 한다. (위에서부터 4번째, 6번째) 그럴 때에 사용하는 명령어가 바로 diff이다. 차이점을 의미하는 영어단어 difference를 떠올리면 암기하기 쉬울 것이다. git diff 이전커밋아이디 다음커밋아이디 커.. 2022. 10. 25.