본문 바로가기

Git+Github

(8)
지금 당장 좋은 커밋 메시지를 남기는 방법(with Git Commit Template) clean code? clean commit! 좋은 코드를 작성하는 것은 엄청 중요하고, 꾸준히 반복하고 또 연습해도 상당히 어려운 일이다. 갑자기 좋은 코드를 작성하는 것에 대해서 왜 얘기하냐고 할 수 있는데, 그 이유는 좋은 코드를 남기는 것 만큼 중요한 게 "좋은 커밋 메세지(Commit Message)를 남기는 것"이라고 말하고 싶기 때문이다. (그런데 사람들은 이것을 간과한다...) 물론 어떤 것이 좋은 코드인가? 라는 질문에도 여러 답변이 있다. 결합도는 낮고 응집도는 높은 객체지향적인 코드 짧고 간결한 코드 가독성이 좋은 코드 더 이상 고칠게 없는 코드 중복이 없는 코드 테스트가 많은 코드 기타 등등... 이와 유사하게 어떤 것이 좋은 커밋 메시지인가? 라는 질문에도 여러 답변이 있다. 먼 ..
나의 Git Flow 적응기(겉핥기로 10분만에 익히고 써먹어보자, 백각이불여일행!) 나의 Git Flow 적응기 git flow는 절대 어려운 것이 아니다. 모두가 알지만 익숙하지 않아서 적용하지 못하는 것일 뿐이다. (예를 들면 TDD 같은...) 쉽게 생각하자. git flow는 형상 관리 전략일 뿐이다. 일반적인 경우에 적절하고 효율적인 전략말이다. 모두가 쉽게 이해할 수 있도록 'MVC 패턴'을 예로 생각해보자. Model, View, Controller로 구성하지 않고 Controller에서 다 해도 되지만 MVC 패턴 같은 전략이 일반적인 경우에 효율적이고 변화에 유연하게 대처할 수 있게 하는 것과 같은 것을 생각해보면 이해하기 쉽다. (서버 프로그램 구성에 대한 전략) 이와 유사하게 git flow를 생각해보면, 그냥 하나의 프로젝트에 소스코드를 하나로 관리하고 개발자마다 ..
Git stash (commit하지 않고 하던 작업을 잠시 보관하는 방법) Git stash stash는 git 명령어다.stash(넣어두다) 뜻 그대로 내가 branch에서 작업하다가 다른 branch로 옮겨가야 할 경우가 생겼을 때 commit하지 않고 잠시 작업하던 것을 보관하고 다른 branch로 넘어가는 것이다."commit하고 나중에 다시 해당 브랜치로 왔을 때 이어서 작업하면 되는거 아니야?"라고 생각할 수 있다.하지만 그럴 수 없는 상황이 있다.예를 들어 실수로 master브랜치에서 코딩을 한 경우나 뭔가 새로운 것을 개발하고 있는데 다른 브랜치에 문제가 생겨서 급히 수정해야하는 경우다.실제로 commit을 잘하는 것은 하나의 기능에 대해 변경했을 때 commit을 해주는 것이 좋다.commit 메세지에도 정성을 다해 간결하면서도 명확한 최적의 메세지를 작성하는 ..
Git merge (브랜치 병합하기 + 충돌 제거하기) Git merge (브랜치 병합) 하는 방법 Git을 버전관리시스템으로 두고 같이 협업하는 과정에서 브랜치를 만들어서 각자 개발을 했다면,언젠가는 소스코드를 합쳐서 테스트도 해보고 시스템에 적용도 해보고 해야한다.그런 상황에서 브랜치를 합치는 것(병합)을 merge라 한다.* 사용법A브랜치에서 B브랜치를 병합한다 (= A로 B를 가져온다. A y console.log(y); return x*y;// x+y -> x*y}cs이 상황에서 master브랜치에서 exp브랜치를 merge하기 위해 "git merge exp" 라는 명령어를 치면 어떨까?예상대로 conflict message를 주고 git status 명령어에서도 알려준다.특히 conflict가 발생한 파일을 열어보면 쉽게 알 수 있다.보면 >까지..
Git branch 공부 (깃의 혁신! branch, checkout) Git branch 만들기 git을 사용함에 있어서 아주 훌륭한 기능인 branch에 대해 알아본다.branch는 git에서 버전관리를 할 때 분기해서 다른 용도로 분기하거나 테스트용으로 분기할 때 쓰이는 방법이다.어떤 프로젝트의 버전 관리를 할 때 메인 branch(master)가 있고 그 메인에서 갈라져 나온 여러 branch가 있다.branch는 다른 branch와 독립적으로 관리되다가 버려질 수 있고(삭제) 반영되어 합쳐질 수도 있다(merge).* 브랜치를 사용하는 경우case 1 : 특별한 대상을 위한 커스텀 기능이 추가되는 버전을 만들 때, 기존 소스에 타격이 없게 만들 수 있음case 2 : 고객이 필요하지 않은 기능을 개발할 때 버려질 것임을 짐작할 수 있을 때case 3 : 테스트용도,..
Git 원리 번외 1편 (.git파일) Git 원리 Git으로 관리되는 디렉토리에는 .git이라는 디렉토리(숨김 상태)가 생긴다.이 디렉토리 안에는 git과 관련된 파일이 있다.우리가 쓰는 명령(add, commit, .txt파일등)이 어떻게 관리되는지 확인해본다.* add의 원리- f1.txt를 생성하고 a라는 텍스트를 쓴 후 add해서 git이 관리하게 만들었을 경우.git/objects 디렉토리안에 디렉토리를 만들고 그안에 파일로써 관리한다.명확하게 설명하면 "a"라는 문자를 sha1이라는 해시 알고리즘으로 해시코드(40자리)를 만들고 그 중에 처음 2자리로는 해당 문자로 .git/object안에 디렉토리를 만들고 나머지 38자리로는 해당 문자로 이름을 갖는 파일을 만든다.여기서 예로든 "a"라는 이름은 누가, 어떤 컴퓨터에서 만들든 같..
Git 버전별 차이보기, commit log 조작하기(with git bash) Git 버전별로 차이 확인하는 방법 지난 포스트에서 git을 이용할 프로젝트 폴더를 만들고 commit을 이용해서 파일이 수정될 때마다 정리를 하는 방법을 익혔다.이번 포스트에서는 만들어낸 commit으로 만든 버전 별로 차이점을 확인한다."git log -p" 기존의 git log 명령에서 -p 옵션을 주면 commit별로 어느부분이 변경되었는지 확인할 수 있다.commit 4daa2f~~(노란줄) : commit의 고유 아이디Author : 작성자의 닉네임과 이메일Date : commit된 날짜와 시간commit message : commit할 때 작성한 메시지(-) : 이전의 소스 코드 / (+) : 변경된 소스 코드"git diff .." : 버전아이디1 부터 버전아이디2 까지 log를 보여줌."..
Git 시작하기(with bash : 저장소 만들기, 관리할 파일 등록하기 등..) Git 시작하기 Git은 형상관리, 버전 관리 시스템으로 여러명이 개발할 때 소스코드를 관리를 효율적으로 할 수 있게 해주는 시스템이다.개발자라면 기본으로 알아두어야 할 사항이다.지금까지 git을 사용해왔지만 단순히 commit, push, pull등의 기능만 사용했다면 branch, merge등을 이용해 현업에서 사용하듯 관리를 해보려고 한다.Sourcetree 같은 툴도 사용해봤지만 Command Line를 사용하는 것이 익숙해야 다양한 환경에서도 적응할 수 있다.Git 저장소 만들기1. git bash를 실행2. 적당한 경로에 관리할 프로젝트 디렉토리 생성3. 프로젝트 디렉토리에 "git init" 입력.4. ".git" 파일이 생성되면 완료.Git 파일생성 및 Git에게 관리하도록 설정하기 1. ..