본문 바로가기

Git

(10)
[Git] git remote branch name conflict 를 아시나요? 이번 포스팅에서는 git 과 GitHub 이라는 remote repository 함께 사용하면서 발생할 수 있는 remote branch name conflict 이슈에 대해 알아보고, 이를 해결하는 방법에 대해 살펴보도록 하자. 1. branch name conflict 문제 이해하기 먼저 글 제목에 써있는 remote branch name conflict 이슈가 무엇인지에 대해 알아보도록 하자. 사실 이 이슈의 이름은 공식적으로 정해진 것은 아니고, 필자가 임의로 만든 이슈의 이름이다. 정확히 말하면 local branch 이름을 짓다가 발생하는 문제 중 하나이다. 사내에서든 팀 프로젝트에서든 다른 개발자 분들과 협업을 하기 위해서는 git에서 master 또는 main branch에서 작업을 하는..
[Git] 버전 관리 시스템, git 🔊 해당 포스팅은 모두의 리눅스 서적 내용 중 19장에 해당하는 내용을 읽고 개인적인 정리 목적 하에 작성된 글입니다. 포스팅 내용은 해당 서적에 기반하였으며 포스팅에서 사용된 자료는 모두 직접 재구성하였음을 알립니다. 이번 포스팅에서는 버전 관리 시스템 즉, 파일 변경 이력을 관리하는 도구인 git에 대해 알아보려고 한다. 먼저 버전 관리 시스템이 무엇인지 부터 살펴보자. 리눅스 뿐만 아니라 맥, 윈도우를 사용하다 보면 특정 텍스트 파일이나 소스코드 또는 셸 스크립트 파일을 계속해서 추가하거나 변경하는 것이 일반적이다. 하지만 파일 내용을 변경할 때마다 매번 새로운 파일을 만들게 되면 이전 버전의 파일 상태로 돌아가기도 힘들고 파일 수가 계속 많아져 디스크를 차지하는 용량도 점진적으로 커질 것이다. 이..
[Git] confilct 와 결부되는 cherry-pick, rebase, revert 알아보기 해당 포스팅은 얼마 전 업로드된 이고잉님의 오픈튜토리얼스 Git 강의를 보고 개인적으로 정리하는 목적 하에 작성되는 포스팅입니다. 아래 포스팅 내용의 모든 출처는 원본 영상임을 밝힙니다. 이번 포스팅에서는 Git을 어느정도 알고 나면 더 알고싶어 지는(?) 기능들인 cherry-pick, rebase, revert 기능에 대해 알아보고 실습도 해보려고 한다. 우선 해당 기능들은 이전 포스팅에서 배운 Git 에서의 conflict를 마주하고 해결하는 방법에 대해 알고 있어야 학습이 수월하다는 점 참고해두자. 물론 여기서 배울 3가지 기능들이 무조건적으로 conflict 와 결부되는 것은 아니지만, 해당 기능들을 사용하다 보면 conflict가 자주 발생할 수 있기 때문에 conflict가 무엇인지, 또 어..
[Git] git의 stash 기능 알아보기 이번 포스팅에서는 git의 stash 기능에 대해 알아보려 한다. stash의 사전적 정의는 '몰래 숨겨두다' 라는 의미이다. 그러면 git에서 stash는 대체 무엇을 숨겨둔다는 것일까? 결론부터 말하면 stash 기능은 git add 로 특정 파일을 수정해서 staging area에 올려놓은 버전을 큐 와 비슷한 방식으로 돌아가는 자료구조에 백업해놓는다. 보다 자세한 기능을 알기 위해 다음 예시 화면을 천천히 따라가보자. 우선, 아래와 같이 master 브랜치와 dev1 브랜치에 work1.txt 라는 동일한 파일이 존재하는 상태이다. 자, dev1 브랜치에서 work2.txt 라는 파일을 만들어 git add 하여 staging area에 올려놓아보자. 그런데 dev1 브랜치에서 커밋을 하기 전에 ..
[Git] 무시무시한 conflict를 해결해보자 이번 포스팅에서는 git 사용자라면 누구나 한 번 보고 두려워(?)했을 conflict 이슈를 해결하는 방법에 대해 알아보고자 한다. conflict 는 주로 서로 다른 branch에서 동일한 파일의 동일한 부분을 수정했을 때 발생하는 문제이다. 다음과 같이 2개의 branch인 master 과 dev 브랜치에 동일한 파일 work1.py가 있다고 가정해보자. 이제 master 브랜치에서 work1.py 파일을 다음과 같이 수정하고 add, commit 시키자. 그리고 dev1 브랜치로 이동 후에 work1.py 파일을 수정하되 master 브랜치에서 수정한 부분과는 다른 부분을 수정해보자. 이제 master 브랜치에서 dev1 브랜치를 merge 시켜보고, dev1 브랜치에서도 master 브랜치를 m..
[Git] Merge 할 때, Fast-forward 방식은 무엇인가? 이번 포스팅에서는 git 에서 하나의 브랜치에서 다른 브랜치의 파일을 Merge 하거나 또는 원격 저장소에서 Pull을 하거나 할 때 메세지로 Fast-forward 방식이라는 메세지가 등장한다. 이에 대해서 잘 설명해주시는 이고잉님의 강의도 있고 git 공식 문서에도 친절하게 소개되어 있다. 강의를 바탕으로 배운 내용을 기록해보려 한다. 우선, 아래와 같이 현재 master 브랜치에서 3개의 커밋 C0, C1, C2가 완료된 상태라고 가정해보자. 아래의 그림을 보면 화살표는 과거를 가리키는데, 이는 '부모' 커밋을 의미한다. 어쨌거나 시간 순서대로 하면 C0이 가장 오래 전에 한 커밋, C2가 가장 최근에 한 커밋이다. 이제 여기서 우리는 하나의 기능을 추가하기 위해서 master 브랜치와 버전이 동일..
[Git] branch 관련 명령어 해당 포스팅에서는 git 명령어 중 branch와 관련된 명령어에 대해 기록하려고 한다. 1. 브랜치 목록을 볼 때 git branch 2. 브랜치 생성할 때 git branch [branch_name] 3. 브랜치를 삭제할 때 git branch -d [branch_name] 4. 병합하지 않은 브랜치를 강제로 삭제할 때 git branch -D [branch_name] 5. 현재 브랜치에서 다른 브랜치로 전환할 때 git checkout [branch_name] 6. 새로운 브랜치를 생성하고 그 브랜치로 전환하는 것을 동시에 할 때 git checkout -b [branch_name] 7. 브랜치 간의 커밋 차이를 비교할 때 git log [branch 1]..[branch 2] 위와 같은 명령어를 ..
[Git] Gistory를 통해 git commit의 원리를 이해해보자 저번 포스팅 git add 원리에 이어서 git commit 의 원리를 Gistory를 통해 이해해보자. 원본 강의는 여기를 참고하자. 저번 시간의 마지막 화면은 이렇다. 현재 work1 이라는 동일한 내용을 가지고 있는 work1.txt, work2.txt 를 add 해서 staged 상태로 올린 단계이고 이제 work1.txt, work2.txt를 커밋해보자. 커밋을 하니 몇 가지 새로운 파일들이 추가가 되었다. 그 중에서 커밋으로 새롭게 생긴 objects 들 중 맨 위에 있는 , cb~로 시작되는 해쉬값이 있는 경로를 클릭해보자. 자세히 보면 커밋할 때 작성한 커밋 메세지 work1,2 commit 이 존재하고 누가 커밋했는지 author, committer 에 대한 정보도 존재한다. 근데 눈에 ..
[Git] Gistory를 통해 git add 의 원리를 이해해보자 Git을 사용하면서도 Git의 원리에 대해서는 생각해보지 못했었다. git add, git commit 등등.. 명령어만 날릴 줄 알았지 명령어를 날리는 순간 내부적으로 어떤 일이 발생하는지 생각도 짐작도 하지 못했다. 그런데 몇 년 전에, 이고잉님이 이와 관련된 주제로 강의를 올리셨었다. 그래서 해당 강의를 듣고 내가 생각조차 못했던 git의 원리를 이해한 내용을 기록해보고자 한다. 우선 git의 동작원리를 분석하기 위해서는 이고잉님께서 직접 만드신 GUI 웹 브라우저 툴인 Gistory를 다운로드 받아야 하는데, 이에 대해서는 여기를 참고하자. 이번 포스팅에서는 git add 명령어를 날리는 순간 대체 무슨일이 일어나는지에 대해 살펴보자. 우선 로컬에 빈 디렉토리를 만들고 git init 명령어로 g..
[Git] commit 한 이력 살펴보고 과거로 돌아가기 Git에 대한 기초적인 지식이 부족한 상태라고 생각이 들어서 이고잉님의 이전 버전 지옥에서 온 Git 강의를 듣고 내가 몰랐던 부분에 대해 간단히 기록하려고 한다. 원본 강의는 여기에서 무료로 시청이 가능하다. 1. 그동안 커밋한 이력을 살펴보기 git log 2. 커밋한 이력들 간에 소스코드 차이점 확인하기 git log -p 3. 특정 커밋을 포함해 해당 커밋 이전의 이력들 확인하기 git log [commit id] 4. 가장 최근에 날린 커밋과 그 이전에 날린 커밋과의 소스코드 차이점 확인하기 git diff 5. 특정 커밋들 간의 소스코드 차이점 확인하기(참고로 최근에 날린 커밋의 id를 앞부분(A)에 입력시키는 것이 비교할 때 편한듯! 거꾸로 해도 상관은 없음) git diff [commit_..