https://docs.google.com/presentation/d/1aUfDX4DK40E13eWN6O6StZwrmeZBxpz4fD_Zm_UQYfE/edit
GIT HUB 사용해보기
GIT HUB 사용해보기 (이클립스와 GIT)
docs.google.com
https://docs.google.com/presentation/d/16b7S9vUIvWSSdz-8gEWrHSX3avEwKYpbiyj3UAXWfaE/edit
Merge 해보기
Merge 해보기
docs.google.com
1.repository(저장소)
내컴퓨터(local repository : 로컬 저장소) : github(remote repository : 원격저장소)
2.head : fetch head
head : 현재 체크 아웃 (check out 중인 branch를 가리킴)
fetch head : fetch 해서 가져온 branch를 가리킴 (reference의 branch)
3. commit
A라는 자료가 있다면 A에서 수정을 하여 A'를 만들었을 때 변경이 된 부분을 반영하는 것을 commit이라고 한다.
예를 들어 로컬저장소에서 작업을 했지만 commit을 안시킨다면 로컬저장소에는 A'자료가 있지만 로컬 branch에는 여전히 A상태이다.
더 자세히 설명하면 이클립스의 Working tree는 로컬에서의 project file들이 있는 곳이고 git을 사용하지 않을 때 만들던 프로젝트처럼 코드를 수정하면 그냥 바로 바로 반영이 되는 파일이다.
commit이라는 것을 하면 변화된 자료들을 branch에 반영이 된다.
또 다르게 설명해보면 commit을 하면 역사에 비유하면 1990년도에 내가 작업을 하고 A상태인데,,.
2000년도에 A자료를 변경하여 A'를 만들었다. A' 자료는 나의 Working Tree에는 있지만 branch는 아직 1990년도에 머
물러있다.
현재 브랜치에게 나의 변경된 내용을 알려야 2000년도에 내가 만든 A' 것을 branch로 알게된다.
커밋의 개념이다.
반대로 history 라는 것이 남기 때문에 반대로 되돌릴 수도 있다.
커밋이라는 개념을 헷갈려 하는 이유가 작업한 자료는 내 시점에선 작업을 완료하고 잘 동작하지만 그것을 따로 변경내역을 알리는 작업(commit)을 해야만 branch(local)에 반영되기 때문이다.
4. push
commit을 하게 되면 push도 해야한다. 내가 작업한 것을 어디론가 보내기 위함이다.
push target은 어느 저장소와 그 저장소의 branch가 된다. (로컬/원격) 방법은 동일하다.
push의 (source) 는 내 branch가 된다.
어디론가 보내려면
내 로컬 저장소 : branch 이름 : 원격지 저장소 : branch 이름 이런정보가 필요하다.
가져오는 fetch도 마찬가지다.
push를 할 때에는 현재 check out 된 branch를 컨트롤 스페이스바해서 선택해도 되고
현재 선택되있는 branch는 head가 가리키고 있기 때문에 현재 선택한 branch를 push할 것이라면
head를 source로 정해도 되는 것.
5. fetch는 push와 정말 개념상으론 정반대.
대신 fetch할 때는 fetch해서 가져오면 fetch head가 가져온 것을 가리키고,
Branches-remote tracking에 가져와진다.
Remote tracking에 있는 branch를 오른마우스로 클릭하여 new branch로 local에 생성해줄수 있다.
fetch개념을 잘 이해해야 merge를 할 수 있다.
merge할 때 합칠 것을 가져와야하기 때문이다.