이 시리즈는 git에 대해서 아무것도 모르는 사람을 위한 글이 아니다. 분명 학생이었을 때는 열심히 배웠다가, 현업에 들어가서 몇 년동안 비슷한 명령어만쳤던 재활 훈련자를 위한 글이다.git을 처음 시작할 때는 git init으로 시작하도록 한다.이 다음 .git di
나뉘어진 branch들은 서로 merge할 수 있고, 이것이 branch를 나눈 가장 큰 이유이다. branch 간의 merge는 commit간의 merge가 아니다. 즉, branch 끼리의 merge이고, 항상 branch의 HEAD와 병합하는 것이다. fast-f
git diff는 working directory에서의 변화, staging에서의 변화를 살펴 볼 수 있다. git status, git log처럼 정보만을 주는 기능으로 무엇이 달라졌는 지만 보여준다. 먼저 git diff를 사용해보기 위해서 새로운 rainbow.t
stash는 '안전한 곳에 넣어두다'라는 의미를 가진다. 즉, code를 안전한 곳에 넣어두겠다는 것이다.우리가 A라는 branch에서 개발을 진행하고 있다고 하자. 그 와중에 B라는 branch에서 특정 부분을 수정해달라는 요청을 받았다고 하자. 이는 일반적으로 A
git checkout은 branch를 이동하기 위해서 많이 사용되었는데, 이 밖에도 너무 많은 기능들이 git checkout에 있기 때문에 git checkout의 기능을 분리하려는 시도들이 많이 생겼다.git switch와 git restore가 바로 git ch
새로 나온 명령어로 git checkout의 기능 일부인, commit하지 않은 local변경 사항에 대해서 취소 기능을 제공해준다. git restore를 사용해보기 위해서, 다음과 같이 설정해주도록 하자.song.txt 파일을 만들고, song.txt를 commit
github는 git에 대한 토론과 코드 젖ㅇ소의 역할을 한다. git이 인터넷이 필요하지 않은 로컬 버전 관리 시스템이라면, github는 인터넷을 통한 공유 버전 관리 시스템이라고 생각하면 된다.즉, 내 local git을 internet github에 올려서 협업
remote repository에 있는 code를 clone하면 다음과 같은 과정이 동작하게 되는 것이다.remote github repo위의 github repo를 clone하도록 하자. local에 다음과 같이 생기게 될 것이다.local repo내 local re
보통 main branch는 무결한 branch로 개발 완료된 feature들에 대해서 병합되도록 한다. 즉 각 feature별 branch를 따로 만들고 해당 feature의 기능들이 개발되고 검증이 완료되면 main branch에 넣는 식이다. 이런 식으로 개발이
rebase는 좋은 기능이지만, 조심히써야하는 기능 중 하나이다. rebase가 사용되는 주된 용도들은 다음이다.1\. git merge 대신 사용2\. git commit, history를 지우는 용도rebase를 통해 code를 merge할 수 있고, commit과
interactive rebase로 git history를 정리할 수 있다. 과거에 올린 commit msg도 바꿀 수 있고, 제거할 수도 있다. 이는 매우 유용한 기능으로 실제 개발에 있어서 많이 사용된다.개발을 하다보면 commit을 재작성하고 싶거나, 삭제, 수정
git tag는 특정 branch의 특정 시간 때를 가리켜서 하나의 tag를 두는 것이다. 이는 program을 배포할 때 특정 시점을 기준으로 tag를 사용하여 release를 배포하는 것과 같다. tag에는 두 가지 종류가 있다.lightweight tags: 특정
git의 내부 동작에 관해서 알아보자. 전부를 알 필요는 없고 중요한 몇 가지를 알아보도록 하자.실습을 위해 react github인 https://github.com/facebook/react에 들어가보도록 하자.clone하여 tag에 대한 실습을 해보도록
git은 HEAD가 변경될 때마다의 기록을 가지고 있다. 가령 commit1에서 commit2를 새로 만들면 HEAD의 위치가 commit1에서 commit2로 바뀌기 때문에 다음과 같이 reflog에 기록으로 남는다.만약, feature branch에 있는 commi