GitHub 개념 사용서 - 기본편
https://backlog.com/git-tutorial/kr/stepup/stepup3_1.html
pull(가져와 병합하기)【원격 저장소】 | 누구나 쉽게 이해할 수 있는 Git 입문~버전 관리를 완벽하게 이용해보자~ | Backlog
pull(가져와 병합하기)【원격 저장소】 | 누구나 쉽게 알 수 있는 Git에 입문하신 것을 환영합니다. Git을 사용해 버전 관리를 할 수 있도록 함께 공부해봅시다!
backlog.com
여름방학 전까지만 해도 깃허브를 잘 사용하지 못했다. 중요한 것은 알고 있었지만 뭔가, 어떻게 왜, 쓰는지도 모르겠는데 굳이 필요성을 느끼지 못했다고나 할까. 그런데 이번에 바텀업 프로젝트를 진행하고 여러가지를 하다보니 꼭 알아야겠다는 생각이 들었다. 사실, 지금 공부하는 것도 내 기준에 있어서 조금 늦은 감이 있지만서도, 그래도 이제라도 제대로 알고 써야겠다는 생각에 내 공부 정리 겸 이 글을 정리한다.
1. Git이란?
소스 파일들을 효과적으로 관리하기 위한 '저장소'로, 분산형 버전 관리 시스템이다.
뒤에서 다루겠지만, 브랜치라던지 여러 작업을 동시에 하고 나서 합치는 기능들이 있고, 이를 잘 활용하면 효율적인 작업을 하는데 큰 도움이 된다고 한다. 업데이트 이력도 남고, 충돌이 난다면 합쳐지지 않으니 이 부분에서 정말 좋다.
2. 원격 저장소와 로컬 저장소
Git은 원격 저장소와 로컬 저장소 두 개를 제공하는데, 로컬 저장소는 말 그대로 내가, 또는 개인이 쓰는 컴퓨터에서 하는 작업들을 저장하고 있는 일반 저장소이다. 원격 저장소는 그곳에 접속하여, 내가 로컬에서 작업한 파일을 원격 저장소에 push하고 올려야지 다른 사람들까지 공유할 수 있다. 말 그대로 그런 개념이다.
3. Commit
파일 및 폴더의 추가/변경 사항을 저장소에 기록하려면 '커밋'이라는 것을 해 주어야 한다.
커밋을 하면, 이전 커밋 상태부터 현재 상태까지의 변경 이력이 기록된 커밋(리비전)이 만들어진다. 그렇게 되면 이전과 어떤 부분이 달라졌는지 확인 할 수 있게 된다. 이 부분이 편리하다.
커밋은 시간순으로 저장되며, 이것에 따라 충돌이 일어날 수 있다. 그러면 병합을 해야하는데, 이 병합하는 방법은 뒤에서 자세히 설명하겠다.
4. 작업 트리와 인덱스
Git에서 우리가 흔히 말하는 폴더를 '작업트리'라고 부른다. 그리고 그 커밋을 실행하기 전에 저장소와 작업트리 사이에 존재하는 공간을 인덱스라고 한다. 그래서 올리기 전에, 로컬 작업 트리에서 인덱스에 파일을 올리고 싶은 것을 골라서 올리게 되고, 그리고 여기 인덱스에서 저장소에 올리기 된다. 따라서 저장소에 변경 사항을 기록하기 위해서는 기록하고자 하는 모든 변경사항들이 인덱스에 존재해야한다.
5. push
로컬 저장소에서 변경된 이력을 원격 저장소에 공유하려면 로컬 저장소의 변경 이력을 원격 저장소에 업로드 해야한다.그럴 때 하는게 push라고한다. push를 하면 원격 저장소 내에 변경 이력이 업로드되어 원격 저장소와 로컬 저장소가 동일한 상태가 된다.
6. clone
원격 저장소를 복제하여 로컬로 가져오려면, 클론을 한다. 통째로 내용을 다운로드 하는 것을 말한다.
7. pull
원격 저장소를 공유해 여러사람이 함께 작업을 하면 모두가 같은 원격 저장소에 푸시를 한다. 그럼 다른 사람이 원격 저장소에 올려놓은 push 변경 내용이 생기게 되는데, 이를 내 로컬 저장소에서 적용하여 갱신시켜야한다. 그럴 때 사용하는 것이 pull이다.
8. Merge(변경 이력 병합)
끌어온 저장소가 최신 버전이 아닌 경우, 즉 내가 pull을 실행한 후 다른사림이 push를 하여 원격 저장소를 업데이트 해 버린 경우 다음에 내가 push를 하려고 할 떄 내 요청이 거부되어버린다. 이때 병합을 해야하는데, 다른 사람의 업데이트 이력을 내 저장소에도 갱신하고 해야한다. 그렇지 않게 되면 앞서 다른 사람이 업데이트했던 그 커밋이 사라져버릴 수 있기 때문이다.
9. 충돌 해결하기
병합 기능은, 깃에서 변경된 부분을 자동으로 통합해주는 기능인데 상황에 따라 자동으로 병합할 수 없는 경우도 생긴다. 그 경우는 바로, 원격 저장소와 로컬 저장소 양쪽에서 동일한 부분을 변경한 경우이다. 이럴 경우 어느쪽을 저장할지 자동으로 판단할 수 없기 때문에 충돌이 발생한다. 충돌이 발생한 부분은 <<<<HEAD와 같은 표식으로 둘러쌓여있다. 이것을 수정한 뒤 다시 push 해주면 문제가 해결된다.
'Undergraduate Records' 카테고리의 다른 글
bomb lab: phase_2 (0) | 2019.08.21 |
---|---|
bomb lab: phase_1 문제 풀이 (0) | 2019.08.21 |
스케줄러 만들기 5 - index 바꾸기 (1) | 2019.08.20 |
스케줄러 만들기4 - drag&drop event 및 일정 추가 (0) | 2019.08.15 |
스케줄러 만들기 3 - Modal Box 만들기(일정 추가 팝업) (0) | 2019.08.12 |