목록분류 전체보기 (33)
코딩하는 바나나

브랜치와 Merge 먼저 master브랜치에 몇개의 커밋이 있다고 가정하자. master브랜치에서 어떤 이슈를 해결 하기 위해 새로운 브랜치를 생성하고 작업을 하고있다. 그런데 운영 중이던 코드에 버그를 발견해서 지금 당장 해결해야 하는 상황이 왔다. 이런경우 master브랜치로 돌아가서 새로운 브랜치를 생성해서 해결해야 할 것이다. 아래의 그림과 같이 말이다. 버그를 수정하기 위한 hotfix브랜치와 이슈를 처리하기 위한 iss53브랜치가 있다. hotfix브랜치에서 수정이 급한 버그를 처리하고 커밋을 했다. 이 내용을 master에 반영해 주기위해 우리는 merge를 해주어야한다. 더보기 $ git checkout master $ git merge hotfix 위의 명령어로 hotfix브랜치를 mas..

브랜치를 알기 전 git이 데이터를 다루는 방법을 먼저 알아야 한다. git 저자나, 커밋 메세지 같은 메타데이터, 이전 커밋에 대한 포인터, 현재 커밋에 대한 포인터를 포함하는 커밋 개체를 저장한다. 이전 커밋 포인터가 있어서 현재 커밋이 무엇을 기준을 바뀌었는지 알 수 있다. 그리고 기본으로 처음 커밋을 하면 master 브랜치가 생성된다. 브랜치 더보기 $ git branch testing 다음은 testing이라는 이름의 새로운 브랜치를 만드는 명령어이다. 그림과 같이 testing이라는 새로운 포인터가 최근 커밋을 가르킨다. 그렇다면 현재 작업하는 브랜치를 git은 어떻게 구분할까? 바로 HEAD라는 포인터를 사용한다. 아직 testing브랜치를 만들기만 하고 checkout 하지 않았기 때문에..
Git Alias를 사용하면 git을 더 편리하게 사용 할 수 있다. 기존에 있는 git 명령어들을 내가 커스텀 해 줄 수 있다. 더보기 $ git config --global alias.co checkout $ git config --global alias.br branch $ git config --global alias.ci commit $ git config --global alias.st status 다음과 같이 설정을 해주면 checkout 대신 co, branch 대신 br과 같이 간결하게 사용 할 수 있다. $ git config --global alias.unstage 'reset HEAD --' 특히 많이 사용하지만 긴 명령어들을 사용할때 편리하다. 이렇게 내가 자주 사용하는 명령어들을..
리모트 저장소 리모트 저장소는 다른 사람과 함께 일하기 위해 필요한 인터넷, 네트워크에 있는 저장소이다. 더보기 $ git remote 위의 명령어로 현재 프로젝트의 저장된 리모트 저장소의 이름을 확인 할 수 있다. git clone을 하게되면 origin으로 리모틑 저장소가 자동저장되게 된다, -v 옵션으로 URL까지 함께 볼 수 있다. 더보기 $ git remote add 위의 명령으로 리모트 저장을 설정 할 수 있다. 보통 origin으로 리모트 저장소를 저장하기 때문에 git remote add origin https://~ 와 같은식으로 사용한다. 리모트 저장소에서 가져오기 더보기 $ git fetch origin 이 명령어를 사용하면 리모트 저장소에서 로컬에 없는 데이터들을 가져올 수 있다. ..

완료한 커밋을 수정하고 싶을때 (너무 일찍 커밋, 파일 빼먹고 커밋, 커밋 메세지 잘못 적었을때) 더보기 $ git commit --amend 이 명령은 수정내용을 staging area에 추가해준뒤 사용해야 한다. --amend로 커밋한 내용은 전에 커밋한 내용을 덮어쓴다 따라서 이전 커밋은 기록에 남지 않는다. 파일을 staged상태에서 unstaged상태로 변경하고 싶을떄 (+reset) 더보기 $ git reset HEAD 파일 해당 파일을 unstaged 상태로 만들어주는 명령어 이다 . reset은 깃이 관리하는 3가지 워킹디렉토리, staging area, HEAD를 나눠서 생각해야한다. 보통 reset을 그냥 수행하면 --mixed옵션이 생략되어있는 것이다. 따라서 위의 git reset ..
커밋 히스토리 조회하기 더보기 $ git log .위의 명령어를 사용하묜 깃의 커밋 히스토리를 확인 할 수 있다. 이는 시간순으로 보여준다. 그리고 각 커밋의 체크섬, 저자 이름, 저자 이메일, 커밋 날짜, 커밋 메세지를 보여준다. 깃 로그에는 여러가지 옵션이 있다. -p, --patch는 각 커밋의 차이점을 보여준다. -2는 최근 두개의 결과만 보여주는 옵션이다. --stat 옵션은 각 커밋의 통계 정보를 보여준다. 어떤 파일이 수정됐는지, 몇개의 라인이 수정되었는지 등을 보여준다. --pretty 옵션은 여러 가지 옵션이 있다. --pretty=online의 경우에는 각 커밋을 한라인으로 보여준다. short, full, fuller 옵션은 여기서 조금씩 가감해서 보여준다. format으로 설정 할 ..

Git 저장소 만들기 깃을 시작할때 두 가지 경우가 있다. 더보기 1. 아직 깃을 사용하지 않는 로컬의 디렉토리로 시작하는 경우 2. 다른 깃 저장소를 clone하는 경우 1번의 경우 해당 디렉토리로 이동하여 다음 명령을 수행한다. 더보기 $ git init 이 명형은 해당 디렉토리안에 .git 이라는 하위 디렉토리를 만든다. 이 디렉토리에는 깃 저장소에 핑료한 뼈대 파일들이 들어있다. 이 명령을 실행 한 후 작업을 저장하고 싶을 때마다 stage area에 변경 사항을 올리고 커밋을 해주면 된다. 더보기 $ git add 파일이름 $ git commit -m "커밋 메시지" 위의 명령어를 실행하면 파일을 stage하고 commit 할 수 있다. 2번의 경우는 보통 다른 프로젝트에 참여하는 경우나 깃 저..

체크섬 깃은 데이터를 저장하기 전 항상 체크섬을 구하고 그 체크섬으로 데이터를 관리한다. git log 명령어를 실행 해보면 나의 커밋 내역들이 보이는데 이때 40자길이의 16진수 문자열을 볼 수 있다. SHA-1 해시를 사용해 만들어진 체크섬이다. 깃은 파일의 내용이나 디렉토리 구조를 이용하여 체크섬을 구한다. 그리고 깃은 파일을 이름으로 저장하지 않고 체크섬으로 저장한다고 한다. 세가지 상태 깃에는 세가지 단계가 있다. 깃 디렉토리, 워킹 트리, Staging Area이다. 더보기 깃 디렉토리는 깃이 프로젝트의 메타데이터와 객체 데이터베이스를 저장하는 곳을 말한다. 다른 컴퓨터의 저장소를 clone하면 깃 디렉토리가 만들어진다. 워킹 트리는 프로젝트의 특정 버전을 checkout 한 것이다. 현재 프..