깃(GIT)이란 무엇인가?-(2)
Git, 좋은지 알겠는데, 어떻게 쓰는 거에요?
사용법을 설명하기 전에, 한가지 알아둘게 있습니다.
Github과 Git은 다르다.
Github은 Git 기반의 원격 저장소 기능을 제공하는 웹 서비스입니다.
누군가 작업한 코드를 지인들이나, 협업자들,
넓게는 전 세계사람들과 Github을 통해서공유할 수 있는거죠.
하지만 Github은 온라인 서비스이지 Git은 아니기에 혼동하시면 안됩니다.
먼저 Github을 사용하는 가운데 주요 명령어를 살펴보죠.
Fork
최초로 코드를 Github에 올린 저장소를 원본 저장소라고 할 때,
이 코드를 자신의 Github 계정에서 생성한 자신만의 저장소로 옮겨오고자 할 때,
사용하는 것이 바로 Fork 기능 입니다. 응? 왜 내 코드를 남이 Fork하도록 하지?
인스타그램, 유튜브의 좋아요, 구독 버튼, 왜 있다고 보시나요?
**내 코드가 Fork가 많이 된다는 건, 그만큼 내가 인정받는다는 거죠.**
Pull Request
뭔가 요청한다..라는 의미는 단어로 유추할 수 있습니다.
누군가 코드를 작성하고, Github에 올려두었습니다.
이 코드의 규모가 커지게 되면, 코드에 기여하는 협력 개발자들도
늘어나게 되죠. 그래서 각 개발자들은 이러한 코드를 자신의 Github
계정에 생성한 자신만의 원격 저장소로 Fork 합니다.
문제는, 뭔가 자신이 다른 누군가는 알지 못한 수정사항을 발견해서,
그걸 고치고 해당 내용을 원본 코드에 반영하고 싶고,
이러한 행위를 통해서 기여하고 싶다고 할 때, 어떻게 할까요?
바로 자신의 원격 저장소에 수정사항을 반영한 상태에서,
Pull Request를 날리는 겁니다.
이러한 커미터(commiter)들은, 원본 저장소에 대한 Read권한은 있지만,
Write 권한이 없기때문에 반영을 위해 요청을 하는 것입니다.
리뷰어들은 커미터들로 부터 이러한 요청을 받고,
수정 내역에 대한 확인 후 승인 또는 거절하게 됩니다.
물론, 승인하게 되면 수정 사항이 반영되는 것이구요.
다음으로 Git의 주요 명령어들에 대해서 알아보겠습니다.
Clone
기능: 원격 저장소 -> 로컬 저장소로 땡겨 오는 기능.
명령어는 프로토콜에 따라서 github에서 자동으로 tag를 제공해주고 있어서,
사실 그래도 복붙하면 된다.
add
기능: 워킹 디렉토리에서 코드 변경 발생 내용을 stage에 올린다.
commit
기능: stage의 내용을 로컬 저장소에 반영한다.
push
기능: 로컬 저장소의 내용을 연결된 원격 저장소로 반영한다.
fetch & merge or pull
기능:
사용 예: