리모트 브랜치란? 원격 저장소에 있는 브랜치를 의미한다. 로컬 저장소의 브랜치에 있는 커밋들을 원격 저장소에 push를 하면 원격 저장소에 해당 로컬 저장소의 브랜치명과 같은 브랜치가 없을 경우 생성되는데 그 브랜치가 리모트 브랜치가 된다. 생성하는 방법은 다음과 같다. # 원격 저장소의 별명은 origin 혹은 upstream이 될 수 있다. git push 리모트 트래킹 브랜치 VS 트래킹 브랜치 리모트 트래킹 브랜치란? 리모트 브랜치를 추적(트래킹)하는 로컬 저장소에 있는 브랜치 이것은 로컬 저장소에 있지만 로컬 저장소에서 사용자가 임의로 수정할 수 없다. 리모트 트래킹 브랜치의 형식은 '원격 저장소의 별명/리모트 브랜치'로 되어 있다. 원격 저장소로부터 fetch 혹은 pull을 할 때마다 리모트..
백업 자신의 정보를 다른 컴퓨터에 동기화시키는 것을 의미한다. 다수의 사람들과 git으로 협업을 할 경우 본인이 작업한 파일을 커밋해야 백업할 수 있다. Local repository(지역 저장소) 개인적으로 버전을 만들어 관리하는 저장소를 의미한다. Remote repository(원격 저장소) local repository의 버전이 타 컴퓨터에 동기화되어 해당 버전이 저장된 저장소를 의미한다. http를 통해 백업 관리를 하기 위해 지역 저장소에서 원격 저장소로 버전을 동기화하는 방법은 예를 들어 지역 저장소에 저장된 버전을 원격 저장소로 push하는 것이 있다. 이때 원격 저장소에는 지역 저장소의 버전과 동기화된다. hosting 원격 저장소와 같은 서비스를 지원하는 것을 의미한다. 해당 서비스를 ..
브랜치란? 기존 작업 환경으로부터 독립된 곳에서 어떤 작업을 진행하기 위한 환경이라고 할 수 있다. 그럼 이 브랜치가 왜 탄생되었을까? 상황을 예시로 들어보자! 팀에서 개발을 하게 되면 같은 소스코드를 공유하는 메인 소스코드가 있다. 이때 각 개발자들마다 개발하는 부분이 다르고 또 어떤 개발자는 기존의 소스코드에서 버그를 고치는 경우도 있을 수 있다. 그렇기 때문에 각 개발자들이 개발한 코드를 서로 공유하는 소스코드에 커밋함으로써 기존의 메인 소스코드에 영향을 끼친다. 이로 인해 다양한 문제가 발생할 수 있기에 여러 개발자가 각자 독립된 브랜치에서 소스코드를 작성하고 커밋해도 특정 액션을 취하지 않는 이상 바로 메인 소스코드의 버전에 영향을 주지 않기 때문에 브랜치라는 환경이 탄생하게 되지 않았나 생각한..
버전 삭제 특정 과거의 버전으로 돌아가고 그 이후의 버전을 지우고 싶을 경우 돌아가고자 하는 버전의 커밋 일련번호 앞 7자리를 복사하고 다음과 같이 터미널에 입력한다. git reset --hard 커밋 일련번호 앞 7자리 해당 버전으로 reset하겠다는 말은 해당 버전과 그 이후의 것들을 삭제하겠다는 것이 아니라 해당 버전으로 돌아가고 그 이후의 버전을 삭제하겠다는 것을 의미한다. 이러한 방법으로 삭제한 버전으로 돌아갈 수 없기 때문에 신중히 선택해야 한다. 버전 되돌리기 이미 commit한 상태에서 해당 commit을 취소하고 commit 이전 상태로 되돌리고 싶은 경우 다음과 같이 다양하게 되돌리는 방법이 있다. git reset --soft HEAD^ git commit하기 직전의 상태로 되돌리는..
git init 프로젝트 최상단 위치에 .git이라는 local repository(지역 저장소)를 추가하는 작업과 동시에 .git이 추가된 위치를 조회할 수 있다. 프로젝트마다 프로젝트 고유의 git을 이용할 때에는 프로젝트 최상단 위치에 git init을 가장 먼저 입력해야 한다. 주의 : .git을 삭제하게 되면 지금까지의 깃 히스토리가 날라가게 되니 주의하자! 작업 단계 Working tree : 아직 버전으로 만들어지기 전에 특정 파일을 수정 중이거나 수정한 파일들이 있는 장소를 의미한다. index : 수정한 파일들을 하나의 버전으로 만들기 위해 등록된 파일의 장소를 의미한다. git status 새로운 버전으로 만들고자 하는 파일 중 수정된 파일이 있는지 확인하는 것이다. 만약 없을 경우 다..
필자는 팀 프로젝트에서 채팅서비스를 도입하여 온라인에서 사용자끼리 상품 거래를 할 수 있도록 클라이언트에서 공부해야 할 기술 스택을 찾고 있다가 sockJS를 알게 되었다. 그리고 다음과 같은 이유로 sockJS를 프로젝트에서 사용하기로 하였다. sockJS websocket과 비슷한 기능을 제공하는 브라우저 javascript 라이브러리다. 그렇다면 그냥 websocket에서 제공하는 기능을 사용하면 되는데 굳이 sockJS를 도입하기로 결심을 한 것일까? 직접 sockJS의 깃헙 주소로 들어간 결과 해당 라이브러리 summary 부분에서 장점을 친절하게 설명하고 있었다. 브라우저와 웹 서버 사이에서 짧은 지연시간, 그리고 크로스 브라우징을 지원하는 API라는 것이다. 이것을 통해 필자가 애용하는 크롬..