신입 막내 git 교육
요즘은 학부생 때 git 많이 사용하는지 모르겠으나, 내가 졸업할 때만 해도 학부 때 git을 사용을 거의 안 했다. 그리고 우리 막내는 인문대 졸업 국비 학원 출신이라 더 그런지 git에 대한 개념자체가 안 잡혀있어서 추가적으로 교육이 필요했다.
그래서 원격 저장소 하나 파주고 과제 내주면서 공부하면서 이해 안 가는 질문들 파일로 따로 적어두면 답변해 주겠다고 했다. 면대면으로 설명은 끝났고, 나도 공부하기 위해서 답변 정리를 위한 글.
참고로 과제 내용은 아래와 같다.
과제
- 현재 repository를 fork 한다.
- 이 문장 아래에 git과 svn의 차이점을 서술하고 fork한 저장소에 반영한다
- 새로운 파일 "질문사항"을 생성하여(txt) 이해안되는 부분 / 궁금한 부분을 내용으로 적어서 master 브랜치에 반영한다.
- 새로운 브랜치 "summary"를 생성하여 모든 파일을 삭제한 후 "git요약정리" 파일을 생성한다.
- git 정식문서에서 중요한 부분인것 같은 부분을 정리해 본다.
목요일 오후 4시에 확인하면서 교육해드릴 거고, 업무 다 하고 "할 수 있는 데까지" 하시면 됩니다.
질문 사항
1. git fetch와 diff - fetch는로컬과 원격 저장소의 차이를 보여주는 것이고 diff는 로컬 내용의 차이만 보여주는 것인지
2. git fetch origin과 pull - fetch가 단독으로 쓰일 때는 원격 저장소와 차이를 보여주는 것 같은데 fetch origin은 원격에 저장된 프로젝트의 현 상태를 다운로드 받는 것이라고 봤습니다.
그러면 pull과 같은 의미로 git fetch origin을 써도 되는 것인지 궁금합니다.
2. git push와 git push origin master
2-1. push 할 때 현재 브랜치의 끝이 리모트 브랜치보다 뒤에 있으므로 업데이트가 거부될 때, 상황이 이해가 가지 않습니다...
3. git commit -am, git commit -a -m 은 같은 것인지
1. git fetch와 diff
- fetch는로컬과 원격 저장소의 차이를 보여주는 것이고 diff는 로컬 내용의 차이만 보여주는 것인지
fetch와 diff는 아예 다른 개념이다.
diff는 commit과 branch의 차이를 확인하기 위함이다. 보통은 충돌이 나지 않기 위해 push전에 사용하거나 나 같은 경우는 이슈 추적을 위해 사용한다.
fetch는 원격저장소의 변경사항을 확인하는 개념이다. fetch를 사용하면 HEAD가 바라보는 commit이 다를 수 있다. 다를 경우 diff를 사용해서 충돌을 해결한 후 merge 한다.
pull은 변경사항을 갱신한다. 그래서 원하지 않은 변경사항이 일어나거나 충돌할 수 있다. 이 상황을 방지하기 위해 fetch를 사용한다. 갱신이 정상적으로 된다면 HEAD는 원격저장소와 로컬저장소가 같은 곳을 바라본다.
2. git fetch origin과 pull
- fetch가 단독으로 쓰일 때는 원격 저장소와 차이를 보여주는 것 같은데 fetch origin은 원격에 저장된 프로젝트의 현 상태를 다운로드 받는 것이라고 봤습니다.
그러면 pull과 같은 의미로 git fetch origin을 써도 되는 것인지 궁금합니다.
pull이랑 fetch 다른 점이 뭐냐고 질문이 나오는 건 사실 베스트 질문이다. fetch origin을 하게 되면 원격 저장소의 변경사항을 확인하게 되는 거고, 상태를 다운로드하지 않는다. 고로 pull과 fetch origin은 같은 의미가 될 수 없다.
3. git push와 git push origin master
3-1. push 할 때 현재 브랜치의 끝이 리모트 브랜치보다 뒤에 있으므로 업데이트가 거부될 때, 상황이 이해가 가지 않습니다...
이건 안 그래도 이슈가 있었던 사항인데, 상황 재현은 안되고 에러 로그 자체가 보통 reset이나 rebase를 해야 나오는 에러이다. 물론 이러한 행위가 없었는데도 불구하고 발생하여서 임시방편으로 -f 옵션을 사용했다.
4. git commit -am, git commit -a -m 은 같은 것인지
이건 git 관련 문제라기보다는 CMD 옵션 관련 문제. 같은 거니 편한 대로 사용하면 된다.