VCS: 7개의 글
오늘 다루어볼 내용은 평소에 조금 헷갈렸던 Git reset과 revert이다. 깃에서 되돌리기 위한 방법은 크게 2가지가 있다. 바로 reset과 revert이다. 그렇다면 둘의 차이점은 무엇일까? reset : 시계를 마치 과거로 돌리는 듯한 행위 revert : 특정 사건을 없었던 일로 만드는 행위 git reset "돌아가고 싶은 커밋 hash" 먼저 reset을 알아보자. reset은 특정 커밋으로 돌아가는 행위다. 그말은 특정 커밋 이후의 커밋이력 모두 없어지게 되는 것이다.(물론 옵션마다 상태가 다르긴하다) reset에는 옵션이 3가지가 있다. hard, soft, mixed 각 옵션에 대한 설명은 아래와 같다. hard : 돌아가려는 커밋 이후의 모든 내용을 다 지워버린다. soft : 돌..
remote: Permission to 403 remote: Permission to ~ denied to id(xxx). fatal: unable to access 'https://github.com/~': The requested URL returned error: 403 a라는 github 아이디로 '최초' 글로벌 유저를 등록 후 b라는 github 아이디로 글로벌유저를 등록 후 git push를 하게 되면 기존에 최초 등록한 a아이디를 바라보고 있기에 에러를 발생시키는 것이었습니다. spolight 검색을 통해 keychain Access.app 또는 키체인 접근을 실행합니다. 오른쪽 상단에 검색창에 github.com 을 검색합니다. 리스트에 보이는 github.com 더블클릭 후 계정과 암호를..
[IntelliJ] VCS(Git) 사용 시 느림, 멈춤 현상 조치 방법 인텔리J를 사용하다보면 종종 Git같은 VCS를 사용할때 관련 작업이 너무 오래 걸리거나 무한 로딩에 빠질때가 있다. Adding Files to VCS... 파일을 Git에 add하던 중 멈춘 화면 Performing VCS refresh... 중 멈춘 화면 일단 Cancel/Skip을 눌러 작업을 취소하고 아래 조치 방안들을 하나씩 해보면서 VCS 작업을 다시 시도해보자. 1. Invalidate Caches and Restart File - Invalidate Caches / Restart... 클릭 Invalidate and Restart 클릭 2. VCS - Refresh File Status 프로젝트 루트를 선택한 상태에..
https://www.gitignore.io/ 를 가면 미리만들어진 파일을 받을 수 있다. 작성법 기호 의미 # 주석 ! 예외 / 디렉터리를 의미 *.exe 확장자 exe파일을 모두 무시 A/*.exe A 디렉터리 안에 있는 확장자 exe파일을 모두 무시 .gitignore 은 앞으로 Git 버전 관리에서 제외할 파일 목록을 지정하는 파일이다. 따라서 이미 버전 관리에 포함되어 있는 파일들을 .gitigore 파일에 기록한다고 해서 Git이 알아서 버전 관리에서 제외 하지는 않는다. 이 경우에는 수동으로 해당 파일들을 버전 관리에서 제외시켜줘야 하는데 git bash에서 git rm --cached 를 입력하면 적용된다 출처: https://sjh836.tistory.com/39?category=6951..
1. 브랜치로 일하기 현업에서는 이슈를 해결하기위해 이슈마다 브랜치를 딴다. 이렇게 딴 브랜치로 이슈를 해결한 후 master에서 이슈브랜치를 병합하는 것을 Fast-forward 방식이라고 한다. 실제 master 브랜치는 커밋 object가 생성되지 않지만, 포인터를 앞으로 옮긴다. (fast-forward빨리감기라고 함) 별도의 커밋을 갖고있는 master브랜치와 이미 분기된 다른 브랜치와 merge할 때는 fast-forward 방식이 아니다. 이때 git은 공통 조상을 찾고 3way-merge를 이용하여 갈라진 커밋객체를 합치고 새 커밋객체를 만든다. 2. 충돌해결 같은 파일(=A)의 같은 코드를 각자 브랜치(로컬과 원격저장소가 될수도 있다)로 작업(commit)을 하고 merge를 할 때 충돌..
git의 원리 흐름도 git의 object들이 working디렉터리에서 index를 거쳐 repo까지 어떤 명령어로 어떻게 움직이는지 원리를 정리해봤다. 이제 아래그림을 완벽히 이해할 수 있을 거다!! 1. git init .git의 초기구성 HEAD config description /branches /hooks /objects /refs 2. git add git add를 했을때 index(=stage area,tree구조)에 object이름과 실제파일이름이 추가되고(추적등록) objects에 blob타입으로 파일내용이 추가된다. 같은 파일이라도 파일내용이 달라지면 새로운 object가 생긴다. object의 이름은 SHA1로 HASH된다. 즉 파일내용이 같으면 object명이 같다. 3. git c..
1. Git같은 버전관리시스템이 나오게 된 배경 - 파일이나 폴더를 편집할 때 작업을하면서 아래 사진처럼 번잡하게한다. - 만약 여러명이 공유한 파일을 편집한다면 저장할때 동기화문제가 있다. - 이와같은 문제를 해결하기위해 git이 탄생. 2. git을 이용한 버전관리 - 소스 코드가 변경된 이력을 쉽게 확인 가능 - 특정 시점에 저장된 버전으로 되돌아 갈 수 있다. - 동시저장할때 누군가 편집한 내용과 충돌한다면, 경고메시지 발생. 내용덮어쓰는 실수가 없다. - 매번 백업용 파일 복사본을 만들 필요가 없다. 3. 초기설정: ~/.gitconfig 에 저장된다 git config --global user.name 자신의 닉네임 git config --global user.email 자신의 이메일 4. 명..