형상관리: 79개의 글
커밋을 잘못했고 푸쉬까지 했을때 복구 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
목록 설치하기 깃 전용 사용자 생성 깃 서버 SSH-KEY 생성 비밀번호 없이 접속이 가능하도록 SSH-KEY 등록 원격 저장소 만들기 1) 깃 전용 유저의 루트디렉토리로 이동 # su gituser $ cd ~ 2) SSH-KEY 생성 $ mkdir .ssh $ cd ./.ssh $ ssh-keygen -t rsa Enter file in which to save the key (/root/.ssh/id_rsa) : /home/gituser/.ssh/id_rsa 입력 Enter passphrase (empty for no passphrase) : 엔터키 입력 Enter same passphrase again : 엔터키 입력 $ vi authorized_keys (:wq 로 저장하여 파일 생성) 3) s..