형상관리/Git: 70개의 글
인텔리J에서 기존 프로젝트를 깃으로 연동하는 방법은 다음과 같다. 우선 VCS에서 아래 사진과 같이 이동한다. 필자의 경우 연동하려고하면 아래와 같은 메시지가 나온다. 이미 github에 있는 두개의 git에서 연동되어 있다고 나온다. 그런데 이미 두개의 github는 삭제했고 추가로 Shre할 것이기 때문에 Share Anyway를 클릭한다 그런데 Remote에 아래와 같은 메시지가 나온다. Remote with selected name already exists는 이미 Remote되어 있다는 것이다. 정확히 말하자면 화면 우측 하단을 확인시 이미 해당 브랜치가 Remote되어 있다는 것을 의미한다. 필자는 테스트를 위해 새로운 Remote branch를 만들었다 Remote 명을 아래와 같이 입력 후..
Working tree : 버전으로 저장되기 전 단계 Staging Area : Working tree에서 파일을 올리는 곳 여기서 Repository로 올린다. Repository : 버전이 저장되는 곳 Working tree에서 파일을 10개 만들었다고 친다 이중 2개를 버전으로 만들길 원할 경우 2개를 Staging Area로 올린다. 이 후 Staging Area에 있는 파일 2개를 버전으로 만들길 원하면 Staging Area있는 파일 2개를 Repository로 올려서 버전을 만들 수 있다. 작업 영역Working tree(add 실행) > 준비 영역 Staging Area(commit 실행) > 저장소 Repositorty(push 실행) > Remote Repository 출처 : namu..
커밋을 잘못했고 푸쉬까지 했을때 복구 git reset --hard HEAD^ git push -u origin +master git pull 파일 이름변경 작업 디렉토리에 있는 파일의 이름을 변경 할 때는 git mv 명령어를 사용 git mv 원래이름 바꿀이름 git 사용도중에 gitignore 설정 중간에 gitignore 파일을 설정하면 git status 해도 여전히 남아있는데, 이럴 때 다음과 같이 실행하면 적용된다. git rm -r --cached . git add . git commit git push 원격저장소 브랜치 가져오기 git clone을 통해 로컬로 가져오면 master 브랜치만 가져오는 듯. 협업을 위해 개발브랜치를 가져와야한다면..!! 클론할 때 브랜치명으로 따오기 : gi..
git은 4개의 object로 관리한다. 객체명은 SHA1로 40자리로 해쉬된다. 따라서 내용이 같으면 객체명이 같다. 객체들은 .git/objects에 위치한다. 내용을 까볼려면 git cat-file –p 객체명 으로 보면된다. blob tree commit tag 구조도 시나리오 test 디렉터리에 git init를 한 뒤에, hello.txt를 만들고 "안녕 나는 공부중이야" 를 저장한다. 그 뒤 git add하고 git commit한다. 마지막으로 git tag를 한다. 이 과정중에서 생성되는 object들을 보자. 1. blob git add할 때 생성된다. 파일 내용이 들어 있다 2. tree git commit할 때 생성된다. 타입과 객체명, 파일명이 기록된다. 3. commit git c..
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. 명..
목록 설치하기 깃 전용 사용자 생성 깃 서버 SSH-KEY 생성 비밀번호 없이 접속이 가능하도록 SSH-KEY 등록 원격 저장소 만들기 1) 저장소 폴더 생성 : sample.git $ mkdir -p /home/git/repo/sample.git/ $ cd /home/git/repo/sample.git/ $ git init --bare --shared 2) 외부에서 sample.git 프로젝트를 받는 명령어 $ git clone ssh://[유저아이디]@[서버아이피]:[포트]/[저장소경로] ex) git clone ssh:/git@192.168.136.122/home/git/repo/sample.git 출처 : know-one-by-one.tistory.com/83
목록 설치하기 깃 전용 사용자 생성 깃 서버 SSH-KEY 생성 비밀번호 없이 접속이 가능하도록 SSH-KEY 등록 원격 저장소 만들기 1) 외부에서 전송한 공개키(xxx_id_rsa.pub)를 비밀번호 없이 서버에 접속할 수 있도록 등록해줍니다. $ cat xxx_id_rsa.pub >> authorized_keys 2) 잘 들어가 있는지 확인 $ cat authorized_keys 출처 : know-one-by-one.tistory.com/82