목록VCS (Version Control System) (12)
yoongrammer
운영체제마다 에디터에서 새로운 줄 바꿈을 할 때 들어가는 문자열이 달라지게 됩니다. Windows 같은 경우는 carriage-return(\r)과 line feed(\n)가 같이 들어가는 반면에 MacOS에서는 line feed(\n)만 들어가게 됩니다. windows text\r\n mac text\n 이러한 차이점 때문에 git repository를 다양한 운영체제에서 쓰는 경우에 내가 수정하지 않았음에도 불구하고 줄 바꿈 문자가 달라져서 git history나 blame을 볼 때 문제가 있을 수 있습니다. 이것을 수정할 수 있는 속성이 autocrlf 설정입니다. 자신의 운영체제에 맞게 autocrlf를 설정해 줍니다. Windows $ git config --global core.autocrlf..
목차 git Meld, p4merge 사용하기 git diff 명령어로 파일을 비교하는 것은 불편합니다. 좀 더 편리하게 gui를 사용하여 시각적으로 diff를 할 수 있는 tool을 소개하겠습니다. Meld Meld는 시각적 비교 및 병합 tool입니다. 설치방법 meld는 Windows, Linux에서 지원하고 아쉽게도 아직까진 macOS는 지원하지 않습니다. Windows 아래 링크에서 windows 용 meld를 다운로드하여 설치합니다. https://meldmerge.org/ Linux 아래 명령어를 사용하여 meld를 설치합니다. $ yum install meld 아래 명령어를 수행하여 설치 확인을 합니다. $ meld --version meld 1.3.1 버전 정보가 출력되면 설치가 완료된 ..
목차git diff 사용하기git diff 명령어는 어떤 파일의 수정 내용을 비교하는 명령어입니다. 아무런 옵션이 없으면 워킹 디렉터리에 Unstaged 된 파일을 비교합니다.$ git diff 임의로 워킹 디렉터리에 파일을 만들고 수정하여 diff를 해보도록 하겠습니다.$ echo "hello world" > test.txt$ git commit -am "add test.txt"$ echo "new" >> test.txt git diff를 하면 아래와 같은 내용을 출력합니다.$ git diff diff --git a/test.txt b/test.txtindex a042389..f5be8ac 100644--- a/test.txt+++ b/test.txt@@ -1 +1,2 @@hello world+new..
목차git 디버깅 하기 (blame, bisect)Git에는 버전 관리 기능 말고도 디버깅용 명령어도 있습니다. 누가 버그를 만들었는지 언제 어디서 생겼는지 찾아내는 데 도움이 됩니다.git bramegit blame은 파일의 각 라인을 누가 마지막으로 수정했는지 보여줍니다.$ git blame -L 옵션을 사용하여 전체 파일이 아닌 원하는 라인 범위를 정할 수 있습니다.$ git blame -L 3,10 main.go^608a065 (yoongrammer 2020-11-21 12:02:45 +0900 3) import "fmt"^608a065 (yoongrammer 2020-11-21 12:02:45 +0900 4)af64134b (Tom 2020-11-21 12:06:08 +0900..
목차git rebase와 cherry-pick 알아보기히스토리를 한 줄로 관리하기 위해 Merge 보다 Rebase 나 Cherry-Pick을 사용하는 경우가 많습니다.이번에는 Rebase 와 Cherry-Pick에 대해 알아보도록 하겠습니다.git rebaserebase는 브랜치의 공통 조상이 되는 base를 다른 브랜치의 커밋 지점으로 바꾸는 것입니다. 이해하기 쉽게 그림으로 설명하겠습니다.위 그림을 보면 master와 topic 브랜치의 공통조상인 base는 C1이라는 것을 볼 수 있습니다. 1. HEAD를 topic으로 옮기겠습니다.$ git checkout topic2. rebase 명령으로 topic의 base를 master가 가리키는 C4로 변경합니다.$ git rebase master실제로..
목차git remote 저장소리모트 저장소(remote repository)는 인터넷이나 네트워크 어딘가에 있는 저장소를 말합니다.리모트 저장소에서 파일을 공유할 수 있기 때문에 여러 사람들과 협업이 가능합니다. 로컬 저장소에서 리모트 저장소에 데이터를 업로드(push) 하거나 가져(pull) 올 수 있습니다. git remote 관련 명령어를 알아보도록 하겠습니다.리모트 저장소 확인하기 (git remote)git remote 명령으로 현재 프로젝트에 등록된 리모트 저장소를 확인할 수 있습니다.git clone으로 저장소를 clone 하면 origin이라는 리모트 저장소가 자동으로 등록됩니다.$ git clone https://github.com/schacon/ticgitCloning into 'tic..
목차git 브랜치(branch) 란? 브랜치는 커밋 개체(object) 사이를 가볍게 이동할 수 있는 포인터 같은 것입니다. 커밋을 하면 git 저장소에는 커밋 개체, 트리 개체, blob 이 저장됩니다. 커밋 개체는 아래 정보를 가지고 있습니다.커밋 메시지 같은 메타데이터이전 커밋에 대한 포인터 정보트리 개체를 가리키는 포인터 정보author, committer 정보트리 개체는 add 된 파일과 디렉터리 구조가 들어 있습니다. Blob은 git 저장소에 저장된 파일입니다. 파일 세 개를 add 하여 커밋을 하면 git 저장소에는 다섯 개의 데이터 개체가 생깁니다.(커밋 개체 하나, 트리 개체 하나, blob 세 개)$ git add README test.rb LICENSE$ git commit -m '..
목차git 되돌리기 (git commit 취소, git add 취소)작업한 내용을 되돌리는 방법에 대해서 알아보도록 하겠습니다. Git은 대부분 복구할 수 있지만 되돌린 것은 복구할 수 없으니 주의해야 합니다.commit 수정 하기git commit --amend 명령어로 커밋을 수정할 수 있습니다.$ git commit --amend이 명령어는 커밋 메시지를 잘못 적었거나 어떤 파일을 빼먹었을 때 등 커밋을 수정할 때 주로 사용합니다. 커밋을 했는데 빠트린 파일이 있다면 아래와 같이 수정할 수 있습니다.$ git commit -m 'commit'$ git add file$ git commit --amend여기서 실행한 명령어 3개는 모두 커밋 한 개로 기록되며 두 번 째 커밋은 첫 번째 커밋을 덮어쓰게..
목차 Git 저장소 만들기 Git 저장소 만드는 방법은 두 가지가 있습니다. 1. git init : 빈 git 저장소를 만들거나 기존 저장소를 다시 초기화하는 명령어입니다. $ mkdir my_project $ cd my_project $ git init 위 명령은 my_project를 git 저장소로 만드는 예제입니다. 2. git clone : 에 해당하는 저장소를 복제해 새 디렉터리로 가져오는 명령어입니다. $ git clone https://github.com/libgit2/libgit2 위 명령은 libgit2라는 디렉터리를 만들고 그 안에 https://github.com/libgit2/libgit2 에 있는 데이터를 모두 가져오는 예제입니다. 아래와 같은 명령을 사용하여 저장소를 Clone..
목차 Git 설치 OS별 Git 설치 방법에 대해서 알아보도록 하겠습니다. Linux Fedora, RHEL, CentOS에서 아래와 같이 dnf를 사용하여 설치합니다. $ sudo yum install git Ubuntu 등의 데비안 계열에서는 apt를 사용하여 설치합니다. $ sudo apt-get install git 설치가 되었는지 확인해 봅니다. $ git --version git version 2.22.0 version 정보가 출력되면 설치가 완료된 것입니다. MacOS 아래와 같이 brew를 사용해서 설치합니다. $ brew install git 설치가 되었는지 확인해 봅니다. $ git --version git version 2.22.0 version 정보가 출력되면 설치가 완료된 것입니다..