본문 바로가기

반응형

전체 글

(174)
[Git] Reset vs Checkout 결론부터 말하자면 ​ reset은 브랜치의 이동이고 checkout은 해드의 이동입니다. ​ [1] reset​ reset은 브랜치의 이동입니다. 브랜치가 이동하면서 HEAD도 같이 이동하게 됩니다. 총 네 개의 커밋을 한 상황이라고 가정하겠습니다. 여기서 reset --[옵션] 해쉬아이디 명령어를 통해 이전 커밋으로 돌아갈 수 있습니다. ec3b로 돌아가면 아래와 같이 되겠죠. reset은 이게 끝입니다. 별거 없죠.. reset은 세 가지 옵션을 잘 이해하시는게 중요합니다. 참고로 reset을 한다고 이후의 커밋이 다 지워지지는 않습니다. 이전 커밋으로 리셋한 뒤에 이후 커밋으로 다시 리셋할 수 있습니다. 위 사진의 경우 asd8 커밋으로 다시 돌아갈 수 있습니다. 커밋 이력을 보고싶으면 ' git ..
[Git] HEAD와 branch의 관계 사실 HEAD와 branch는 포인터입니다. 포인터는 무엇을 가리키는 것을 말합니다. 이전에 HEAD를 설명할 때 HEAD는 커밋을 가리킨다고 했었죠? 하지만 엄밀하게 말하면 HEAD는 브랜치를 통해 간접적으로 커밋을 가리키고 있습니다. 항상 그런건 아니지만 대부분 그렇습니다. 예외적인 부분은 checkout과 reset의 차이를 설명드릴 때 다시 다루겠습니다. 자, 그러면 HEAD와 branch는 어떻게 구성되어 있는지 그림으로 살펴보겠습니다. 이게 진짜 모습입니다. 커밋을 하면 HEAD가 가리키는 브랜치가 최신 커밋으로 이동하게 됩니다. 그럼 좀 더 나아가서 highlevel 브랜치를 만들면 어떻게 될까요? highlevel 브랜치를 만들면 아래 그림처럼 HEAD가 가리키던 커밋을 highlevel ..
[Git] Remote repository의 브랜치 remote repository의 마스터 브랜치를 보려면 깃허브에 들어가서 보면 되겠죠? 하지만 제 컴퓨터에서도 확인이 가능합니다. git history를 한번 보겠습니다. ​ 맨 밑에 'origin/master'부분이 바로 remote repository의 마스터 브랜치입니다. 맨 처음 print.py와 README.md 파일에 대한 커밋만 해줬기 때문에 마스터 브랜치가 젤 아래에 있는 것입니다. remote repository에 git push를 해주면 origin/master도 master와 같은 커밋을 가리키게 될 것입니다. ​ git push를 해주고 history를 본 결과 origin/master가 master와 같은 곳에 위치해 있는 것을 확인할 수 있습니다. 이제 highlevel 브랜치..
[Git] branch merge 해보기 branch A, B에서 서로 다른 작업을 하고 있습니다. 그런데 A에 있는 기능이 B에도 필요하게 되었습니다. 이런 경우에 merge를 사용하면 아주 간편합니다. git은 어떤 브랜치의 특정 커밋을 다른 브랜치에도 반영할 수 있도록 합니다. 우선 merge를 해보기 전에 branch 이동을 하면 working directory가 어떻게 바뀌는지 한번 보겠습니다. ​ 저에게는 highlevel 브랜치와 master 브랜치가 있습니다. 두 브랜치의 working directory는 아래와 같습니다. 즉, 아직까지는 코드가 동일한 상태입니다. 이제 master 브랜치에 더하기 함수를 추가하고 커밋을 해보겠습니다. 코드창이 화면에 보이게 놓고 highlevel 브랜치로 이동하면 코드가 어떻게 변하는지 한번 보..
[Git] branch 소개 길동씨는 헬스 어플(?)을 만들고 있습니다. 처음에는 아무 생각 없이 만들었는데 만들다보니 초급자, 중급자, 고급자에 따라 약간씩 다르게 만들고 싶어졌습니다. 이런 경우에 branch를 사용할 수 있습니다. ​ 사실상 모든 프로젝트가 오직 한 방향으로 순조롭게 진행되는 경우는 거의 없다고 생각합니다. 한 방향으로 가다가 다른 방향으로 틀수도 있고, 여러 방향으로 나눠질 수도 있습니다. 그런데 여러 방향으로 나눌때 모든 방향에 대해 작업을 처음부터 다시 시작하면 굉장히 번거롭겠죠? 버전이 다르더라도 기본 뼈대는 존재할 것입니다. git은 이런 경우를 위해 branch 기능을 제공합니다. 나무를 상상해보세요. 나무에는 기둥이 있고 기둥 위쪽에 수많은 나뭇가지가 있습니다. git에서 기둥을 master bra..
[Git] 커밋 파헤치기2 - 이전 커밋으로 돌아가기(reset) 커밋은 연결 리스트 형식으로 저장되어 있습니다. git log로 커밋 이력들을 살펴보면 가장 최신 커밋에 'HEAD→MASTER'라고 적혀있습니다. HEAD는 가장 최신 커밋을 가리키고 있습니다. 그림으로 보면 저장된 커밋들은 아래와 같은 구조를 이루고 있습니다. 사실 엄밀하게 말하면 HEAD는 브랜치를 가리키는데 이는 브랜치를 배우고 나서 다시 자세히 다루겠습니다. HEAD는 왜 있을까요? 만약 HEAD가 다른 곳을 가리킬 수 있다면 HEAD를 이용해서 이전 커밋으로 돌아갈 수 있겠죠? HEAD를 움직이는 명령어는 reset입니다. 그런데 reset에는 세 가지 옵션이 있습니다. 각 옵션에 따라 working directory, staging area, repository가 약간 다른 방식으로 바뀝니다..
[Git] 커밋 파헤치기1- 커밋 해보기 이번 시간에서는 커밋에 대해 다뤄보겠습니다. 커밋은 저장과 같습니다. 커밋을 하지 않으면 버전 저장이 되지 않습니다. 현재 워킹 디렉터리에서 커밋을 처음 하는거라면 이름과 이메일을 설정해줘야 합니다. 컴퓨터도 누가 어떤 커밋을 했는지 알아야하거든요. 커밋을 하기 위해 이름 및 이메일 설정을 해봅시다. git bash 터미널에서 아래와 같은 명령어를 입력해주세요. 본인의 이름과 이메일을 적으면 됩니다. git config user.name "이름" git config user.email "이메일" ​ ​ 자, 그러면 코드 수정을 하고 커밋을 해보겠습니다. 코드 수정을 아래와 같이 했습니다. 이제 git bash 터미널에서 커밋을 해보겠습니다. 커밋을 하기 전에 staging area로 이동시켜줘야겠죠? '..
[Git] 다른 사람에게 git push 권한 부여 로컬 레포지터리 내용을 리모트 레포지터리에도 반영하려면 git push를 해줘야한다고 했습니다. 그런데 모든 사람이 내 리모트 레포지터리에 push를 해줄 수 있는건 아닙니다. 만약 본인이 아닌 다른 사용자도 git push를 할 수 있게 하려면 GitHub에서 추가 작업을 해줘야 합니다. ​ 공유하려는 리모트 레포지터리에 들어가서 Settings - Manage access - Invite a collaborator를 차례대로 클릭합니다. Incite a collaborator를 클릭하면 아래와 같은 창이 뜹니다. 협업하고 싶은 사람의 아이디를 치고 초대장을 보내면 상대방에게 초대장이 갑니다. 초대장을 수락하기만 하면 끝입니다! 참 쉽죠? 글이 너무 짧아서 다른사람의 프로젝트를 다운받는 방법도 한번 알..

반응형