Git은 '분산버전관리' 프로그램이다.
분산버전관리란, 원본 데이터가 변경되는 사항들을 각기 다른 버전으로 저장하여 관리한다는 의미이다.
그리고 그것을 위해서, 감시대상으로 설정한 데이터의 변경을 기록하는 프로그램이기도 하다.
Git으로 감시 대상이 된 데이터는 '언제' '어디서' '누가' '무엇'을 변경했는지 기록된다.
심지어 그것을 저장(커밋)을 할 때는 '어떻게' '왜' 까지 기록할 수 있으니, 하나의 데이터로 여러 사람과 하는 작업을 관리하는데 있어서 필수인 프로그램이라 할 수 있다.
변경사항은 기본적으로 로컬저장소(개인 컴퓨터)에서 각각 제어하다가, 필요한 시점이 오면 원격저장소(클라우드)로 커밋 푸쉬하여 공유하는 방식이다.
Git용 클라우드는 BitBucket, Github가 유명하다.
GitHub를 Git을 동일한 것으로 여기는 경우도 있는데, Github는 단순히 Git이 기록한 변경점을 저장할 수 있는 클라우드 사이트의 일종일 뿐이다.
아래와 같은 순서로 새로운 로컬저장소와 원격 저장소를 만들고 연결한다.
1. 우선 git 설치- https://git-scm.com/downloads
2. github 가입, 로그인 => 새 리포지토리(원격저장소) 생성
1. 빈 로컬폴더(로컬저장소가 될 폴더) 생성
2. 로컬저장소경로에서 git clone repositoryURL
만약 드라이브를 변경하고 싶을시 cd /d D:\
1. 로컬저장소경로에서 git init
2. git remote add origin repositoryURL
2. git add *
3. git commit -m "my messge"
4. git push -u origin master
해당 리포지트리와 같지 않은 작업목록이 모두 버려진다.
로컬을 원격으로 강제 동기화 git pull -force
원격을 로컬로 강제 동기화 git push -force
▼아래 자료를 보는 편이 좋다.
간편 Git 사용 설명서
http://rogerdudler.github.io/git-guide/index.ko.html
잘 정리된 Git 메뉴얼
https://backlog.com/git-tutorial/kr/intro/intro1_1.html
Git을 사용하다보면 결국 Git은 GUI프로그램이 아닌 명령어 프로그램이라,
굉장히 직관적이지 못하기도 하고, 스펠링을 정확하게 해야 하는 것까지, 불편한 감이 없지 않아 있다.
Git을 GUI로 사용할 수 있도록 도와주는 프로그램인 소스트리를 사용하는 것을 추천한다.
1. 소스트리 다운로드
https://www.sourcetreeapp.com/
2. 소스트리에 Github 계정을 로그인한다.(repository의 푸쉬 권한)
3. 원격저장소에서 repositoryURL로 원하는 경로에 클론을 받는다.
Git이 기록한 변경사항은 커밋에 쌓인다.
커밋을 클릭하면 변경사항이 보이는데
커밋하고 싶은 변경사항들을 스테이지에 올리고 메시지를 적고 커밋한다.
커밋된 사항을 푸쉬를 클릭해 원격저장소로 보낸다.
원격 저장소에서 패치를 클릭한다.
로컬저장소와 다른 변경사항들이 보이는데,
이를 에러가 나지 않도록 최대한 병합하여, 풀한다.
▼이 자료를 보면 이해에 도움이 될 것이다.
로컬브랜치: 버전별 다운로드 폴더(로컬저장소)
- 로컬 브랜치 만들기: 원격브랜치를 통해 받거나, 로컬브랜치로 분기 시작
원격브랜치: 버전별 클라우드 원본(원격저장소)
- 원격 브랜치 만들기/제거: 원격저장소에서 컨트롤
체크아웃: 로컬저장소 변경(로컬저장소끼리만)
커밋: 로컬원본을 로컬저장소에 저장
푸시: 로컬저장소를 원격저장소에 저장
패치: 로컬브랜치와 원격브랜치와 변경이력가져오기
풀: 로컬과 원격의 변경이력만큼 적용
병합: 로컬 저장소를 합치기.
병합충돌: 서로 같은 파일이 다른방식으로 변경된 이력이 있으면 충돌한다.
충돌해결: 합치기 위한 2가지 커밋을 저장한 후, 제일 최신에 병합한 후 에러나면, 충돌을 해결하기
요즘 내가 병합하는 방법
병합하려는 브랜치와 현재 브랜치의 분기전까지(갈라지기 전까지 헤드를 내린후)
변경사항 스태시에 담고, 병합하려는 브랜치로 하드하게 옮긴 후 스태시적용 충돌해결.
커밋에 가서 내것 해결, 저장소 해결로 파일을 변경하기.
(둘다 살려야하는 부분이 존재하면, 따로 파일을 열어서 수정)