Git 사용법

배경지식 1. Git는 파일의 변경 내용을 추적하는 소스 코드 버전 관리 시스템이다.목덜미와 목덜미는 다르다.2. 저장소를 만들 때 public 하면 Mit가 적용된다. GPL 라이선스는 소스코드로 2차 저작물을 만들어도 무조건 공개해야 하기 때문에 계속 유산처럼 이어진다. Mit란? GPL과 같지만 2차 제작물은 공개하지 않아도 돼.버전 관리 시스템(3,4계의 내용)기홋=소스 코드 변경 내용을 추적하고 버전을 관리하는 소스 코드를 병합시키는 역할.file 1~100이 이렇게 있는데 file 3만 바꾸고 싶은 곳에서 이처럼 수정 사항이 바뀔 때마다 file3_v2 file3_v3 file47_v2 file81_v2 이렇게 만들어 놓으면 나중에 아주 더러운 되겠지?그래서 file1~100을 통째로 복사하고 변경한 후에 변경된 로그를 써둘 수 있다.그러나 수정 사항이 생길 때마다 그렇게 하면 용량을 너무 많이 먹고 귀찮고 그래서 전체 복사하지 말고 file1, file2등 변경하지 않는 부분은 그냥 링크를 누르면 원본에 보내고 변경하는 부분만 변경하는 것이 편하다.그래서 VCS가 생긴 것이다.v3에서 v2, v2에서 v1로 가는 게 리셋. 리셋하면, 최근 버전은 복구할 수 없다.v3를 리셋하면 v2가 되지만, 그러면 v3는 날아가 버린다. 리셋은 매우 신중하게 사용해야 한다.그래서 v3를 저장하면서 리셋을 하려면 v2를 복사해서 v4로 하면 된다.이때 v2를 v4로 다시 복제하는것이 리바트(별로 사용하지 않음)file1을 푸시->file1이 C컴퓨터에 업로드된 file1를 B가 수신하고 수정하고 수정한 file1을 푸시 하고, file1_v2를 작성하여 거기에 수정한 파일을 보존함으로써 v1을 취득할 수도 있고 v2를 취득할 수도 있다.이것이 버전 관리, 이 버전 관리를 중앙 저장 장소인 만큼 CVCS분산 버전 관리 시스템 DVCS=모든 로컬에서 버전 관리가 가능한 것입니다.옷깃 걸이 DVCSGit init한다고 창문이 열고 창밖의 풍경의 영역이 워킹 디렉토리 작업 영역임의 사진을 찍는 것이 git add.=인덱스 영역 노을에서 새 사진을 찍었는데 이전 사진 지금 사진 모두 보존하고 싶다.그래도 보존하는 노을의 사진에서 옛날 사진이 수정된다.그래서 전의 사진을 commit하는 것 commit하자 헤드 영역에 들어간다.새 사진을 찍어 git add. 하면 변경한 내역만 저장된다. 또 git commit하자 헤드 영역에 사진이 두개가 되지?push를 하면 버전 관리가 있고+커밋 된 내용과 인덱스와 함께 올리는 것.push는 ↓ 이 전체 영역을 모두 올리는 것.푸시의 목적: 다른 컴퓨터에서도 소스 코드를 가져올 수 있도록 하고 협업한다고작업영역에서 Gitstatus 하면 이 변경사항을 감지한 결과를 보여준다,git add하면 폴더가 만들어지는 그곳에 파일을 저장하고 녹색 박스로 딱 감싸서 커밋하면 헤더영역에 라인이 확 만들어져 v1이 되는 test2 파일이 생기면 작업영역에서 변경감지 -> add하면 변경된 내용만 저장된다그러면 인덱스 영역이 이렇게 된다. 사실 보라색 상자에 녹색 파일이 있는 것이 아니라 참고할 것그러면 헤더 영역과 인덱스 영역이 이렇게 되는, 항상 마지막 인덱스를 보고 전체 구조를 파악하는 리셋은 그대로 이전 버전으로 돌아가려다 날려버리는 것, 내가 궁금했던 것: v1만 잘 가져오면 되는 거 아니야? ->그게 리바트 v2를 리셋하면 보라색 영역이 사라지고 초록색 영역만 남는다git 실습git status 결과 빨강 – 변경내역의 감지 녹색은 이미 감지하여 인덱스로 관리하고 있음git log의 결과 버전 2로 복구하면 v3의 내용이 사라지는 v2로 리셋하려면 git reset -hard 해시값 앞의 4글자git reflog – 리셋을 포함한 모든 변경을 추적이렇게 하면 v3복구 commit을 하면 리셋을 해도 복구를 할 수 있다 reset — hard만 알면 된다GIT 브랜치 slave(secondary server)에 데이터 1건이 들어가면 마스터 프라이머리 server가 다른 세컨더리 서버를 동기화시킨다내가 현재 있는 브런치는 삭제 불가하니 마스터에게 이동하여 삭제해준 기능 하나 만들때마다 커밋형상이 바뀔때 끈이 생기는 거형상이 같다면 브런치가 있다고 해서 끈이 생기는 일은 없다merge한다는 것은 마스터 브랜치 포인터가 옮겨간다는 뜻으로 이렇게 멀어지는 것이 fast forward merge에서도 마스터 브랜치에서 라이팅이라는 기능을 다시 만든다면 로그인은 두 브랜치의 공통 조상이 된다는 것이다이렇게 분기가 바뀐것은 서로 형상이 바뀐것을 거는것이 3way merge. 이것을 할때는 만약 마스터 브랜치와 다른 브랜치와 같은 파일을 만졌을때 충돌이 남3way merge는 충돌하는 일이 있어 위험하다충돌했으니 선택하라는 뜻 pull – download & merge push – upload & merge 그래서 풀이나 푸시도 충돌이 일어날 수 있다

error: Content is protected !!