[Git] .git 안에는 무엇이 있고 어떻게 동작할까
·
개발/Git
git을 사용하면서 동작하는 원리가 궁금할 때가 있었다. git의 원리를 제대로 이해하지 못하고 명령어만 사용한다면 실수할 확률이 높고 이해도 잘 안 되어 명령어를 잊어버리기 쉽다. 만약 git이 어떤 식으로 파일을 관리하고 동작하는지 이해한다면 git을 사용할 때 훨씬 더 자유롭게 사용할 수 있고 실수할 확률이 줄어든다. git의 동작을 파악하기 위해 git repository에 필수적으로 존재하는. git 디렉터리를 살펴보고 어떤 식으로 동작하는지 공부해 본다. 여러 블로그들을 보았지만 아래 블로그가 정리가 잘되어 있어서 참고했다. https://it-eldorado.tistory.com/4 . git 안에는 무엇이 있고 어떻게 동작할까 . git 디렉터리 구조 파악 git 동작 파악 . git 디렉..
[Git] .gitignore를 설정해서 불필요한 파일 무시하기
·
개발/Git
우리가 git repository를 사용해서 commit 하고 push 하는 식으로 코드를 관리할 때, commit 하거나 push 하고 싶지 않은 파일이 있을 수 있다. 예를 들면 IDE에서 로컬에 파일을 생성해서 캐시 해두고 빌드나 각종 환경설정을 위해 사용하는 파일들 같은 경우는 사람마다 환경이 다를 수도 있고 또 사용하는 IDE가 다를 수도 있다. 이런 경우에는 git commit/push 하는 경우에 해당 파일들을 제거해서 commit/push 해야 한다. 한두 번이야 일일이 내가 제거하면 되지만 여러 번 반복되는 작업을 할 때에 굉장히 비효율적이고 불편하다. 그래서 필요한 파일이 바로. gitignore이다. . gitignore를 설정해서 불필요한 파일 무시하기 . gitignore는 파일명..
[Git] GitHub fork와 upstream을 활용한 안전한 Pull Request
·
개발/Git
GitHub fork와 원본 upstream을 활용하여 안전하게 sync 하고 pull request를 요청하는 방법에 대해서 알아보도록 하겠다. 오늘의 실습은 오픈소스 CMake를 fork하고 안전하게 반영하고 pull request를 요청하는 식으로 해보겠다. 물론 테스트로 하는 것이고 실제로 무언가 반영하는 것은 아니다. https://github.com/Kitware/CMake GitHub - Kitware/CMake: Mirror of CMake upstream repository Mirror of CMake upstream repository. Contribute to Kitware/CMake development by creating an account on GitHub. github.com..
[Git] Rebase와 Merge의 차이 by Visualizing-git
·
개발/Git
Rebase와 Merge의 차이 by Visualizing-git Git에서 헷갈리는 개념 중 하나가 바로 Rebase와 Merge이다. 처음 Git을 접할 때 commit, push 정도는 쉽지만 branch들이 합쳐지는 과정에서 그래프도 복잡해지고 내 머리도 복잡해진다. branch를 어떻게 합치느냐에 따라 2가지 방식인 Rebase와 Merge가 존재하는데, 이 개념을 확실히 한다면 더 이상 Git이 복잡하게 느껴지지 않을 것이다. 나는 Visualizing git이라는 사이트를 활용해서 이 개념을 빠르게 이해할 수 있어서 Rebase와 Merge에 대해서 소개하면서 실습을 이 사이트로 진행해 볼 예정이다. https://git-school.github.io/visualizing-git/ Visua..
[Git] 안심하고 commit하자 reflog
·
개발/Git
아래 포스팅에서 자주 쓰는 명령어와 업무 flow를 정리해 보았다. https://growing-dev101.tistory.com/20 [Git] 자주 쓰는 명령어 Git 자주 쓰는 명령어 내가 현업에서 Git을 사용하면서 자주 사용하는 순으로 나름대로 정리해 보았다. 실제로 더 디테일한 옵션을 사용하기도 하지만 아래 내용만으로도 대부분의 업무가 가능하 growing-dev101.tistory.com 터미널에서 Git을 잘 활용해서 복잡하게 얽힌 상황을 해결해야 할 때가 있고 또 그런 환경에서 실수하기 쉽다. GitHub에서 원격 저장소가 여러 개이고 Fork 된 저장소까지 있다면 단순 작업을 하더라도 실수할 소지가 많다. Merge나 Rebase가 제대로 되지 않아, 원격 저장소와 로컬 저장소의 상태가..
[Git] 자주 쓰는 명령어, 익숙해지자
·
개발/Git
Git 자주 쓰는 명령어 내가 현업에서 Git을 사용하면서 자주 사용하는 순으로 나름대로 정리해 보았다. 실제로 더 디테일한 옵션을 사용하기도 하지만 아래 내용만으로도 대부분의 업무가 가능하고, 브랜치가 엄청 많거나 분단위로 커밋이 발생하는 경우가 아닌 이상 충분하다고 생각한다. # remote 저장소로부터 git repository를 복사한다. git clone [remote repo] # commit history를 보여준다. git log # 한줄로 commit 로그를 출력한다. git log --oneline # commit 로그 그래프를 보여준다. git log --graph # 현재 파일 상태를 표시한다. git status # stage 상태와 HEAD를 비교한다. git diff --sta..
[Git] GitHub vs Gerrit
·
개발/Git
GitHub와 Gerrit이 뭐지? GitHub와 Gerrit 두 가지 모두 코드를 관리하고 코드 리뷰를 통한 협업을 위한 시스템이다. Git을 베이스로 하여 각자 로컬 저장소에 있는 코드들을 함께 효율적으로 관리하기 위해 만든 시스템이라고 볼 수 있다. 또한 두 가지 모두 코드 리뷰를 자동화하고 강제하는 목적에 맞춰 만들어진 시스템이다. 수정한 코드를 적용하려면 일정 점수 이상의 코드 리뷰 점수를 획득해야 하도록 설정할 수 있다. 개발자가 수정한 코드를 중앙 저장소에 보내면 자동으로 지정된 리뷰어에게 알림이 가고, 리뷰어는 온라인으로 리뷰를 진행한다. 리뷰에서 규정된 점수 이상을 획득하면 최종적으로 해당 코드를 반영할 수 있다. Gerrit https://www.gerritcodereview.com/a..
[Git] 좋은 commit message 작성
·
개발/Git
commit message가 중요한가요? 개발하면서 commit을 많이 하는데, commit message의 중요성을 간과하는 경우가 많다. commit이 수백 수천 개가 되고, 수십 수백 명이 개발하는 환경이라면 더더욱 message의 명확성과 간결성이 중요해질 것이다. 결국 개발은 사람이 하는 것이므로 사람이 이해하기 좋은 것(가독성)이 좋은 commit message라고 할 수 있을 것 같다. 그럼, 좋은 commit message는 무엇일까? 사실 좋은 commit message가 어떤 것이다라는 정답은 없다. 당연히, 회사, 과제, 인원들의 수준 등에 따라 달라질 수밖에 없고 또 달라져야 한다. 하지만 우리 S/W라는 분야는 언제나 그렇듯, 정답은 없지만 여러 시행착오를 거쳐 나온 일반 원리 혹..
[Git] 터미널에 Git branch 표시
·
개발/Git
Git branch의 의미 Git에서 branch는 생각보다 매우 중요하며 필수적이다. 아래 Git 원리 강의에서 branch의 의미에 대해서 충분히 이해해야 한다. https://growing-dev101.tistory.com/8 [Git] 원리 강의 추천 Git 이 그렇게 중요한가? 내가 생각했을 때 소프트웨어 개발에서 가장 중요한 것이 뭐냐 라고 했을 때 (C언어와 같은 근본적인 언어를 제외하고서) 망설임 없이 Git 이라고 할 것이다. 하지만 막상 growing-dev101.tistory.com branch가 지정되지 않고 HEAD가 특정 commit을 그대로 가리키는 상태는 detached HEAD 상태이다. Detached HEAD란? 보통 브랜치는 특정 commit을 가리키고 HEAD가 이 ..
[Git] 원리를 이해해야 보인다, 강의 추천
·
개발/Git
Git 이 그렇게 중요한가? 내가 생각했을 때 소프트웨어 개발에서 가장 중요한 것이 뭐냐라고 했을 때 (C언어와 같은 근본적인 언어를 제외하고서) 망설임 없이 Git 이라고 할 것이다. 하지만 막상 사용해보고 처음 접하면 굳이 이게 왜? 그냥 별거 아닌 거 같은데 라는 생각이 든다. 그냥 git이라는 명령어로 시작하는 수많은 툴 중에 하나인데 이게 왜 이렇게 유명하고 필수적인가? 막상 개발을 하고 여러 사람과 협업하고 여러 가지 수정 상황을 겪어보면 비로소 Git의 위대함을 이해할 수 있다. Git은 분산 버전 관리 시스템 기존 버전관리 시스템(SVN과 같은) 과 차별화되는 Git의 특징은 분산형 버전관리 시스템이라는 것이다. 또한 분산형 버전관리가 오프라인으로 관리가 되는 것이 중요하다. 출장을 가거나..