버전 관리 시스템(Version Control System)
내가 배운것은 Git 버전 관리와 협업의 기본!
이것을 통해서 나도 오픈소스 생태계에 기여를 할 수 있을까나~?
생태계에서 나는 육식이 되고싶다..ㅋㅋ 채식주의 육식동물..
우선 오늘은 git을 환경설정 하는것과 git의 필요성을 이해하고
github와 git의 관계를 파악하여 이해하고 repository에 대해서 알아보자. (local & remote) repository.
git은 내가 이때까지 사회생활에서 얻어온 정보를 활용해서 설명하자면, 수많은 워드파일 중에 계속 수정을 거듭해서 나중에는 원본을 알아볼 수 없을때 저장해둔 원본을 가져와서 다시 작업하는것이랄까? 그러니 git을 통해서 내 예전의 파일들을 수정해왔을텐데 그 파일들의 과거내력을 볼 수 있는것이다. 내가 공유하지 않아도 git을 활용한다면 협업하는사람들도 나에게 부탁하지않고 접근하여 작업을 할 수 있을것이다.
github는 이런 git의 자료를 하나의 데이터베이스인 github에 공유하고(커밋) 오픈소스 또는 private하게 관리 할 수 있는 일종의 개발자 sns이다.
그리고 오픈소스들은 모든 개발자가 접근이 가능한데. 그렇게 많은 contributors가 오픈소스를 수정하고 발전시켜나가는 것이다. 즉 내가 위에서 되고 싶다고한 것은 정확히는 육식동물이 아니라 유능한 contributor가 되는것이다.
그리고 git에는 두가지 repository(저장소의 개념) 이 있는데 remote와 local이다. local은 나만 접속이 가능한 개인 저장소이며, 내 컴퓨터에 저장될 것이다. 그것을 remote repository에 업로드를 해야 협업하는 사람들이 확인이 가능하고 local repoistory로 옮겨가 작업을 할 수 있을것이다. remote에서 바로 작업을 하는것은 가능할까?
remote repository에 있는 소스코드를 내 gitbub에 가져오는것을 fork라고 한다. 그리고 그것을 내 컴퓨터의 local repository로 가져오는것을 clone이라고 한다.
그럼 remote repository는 개개인이 가지고 있는 저장소이며 모든 사람이 접근이 가능한 그런 저장소인듯 하다. 그리고 fork후 clone하여 내 컴퓨터에서 수정을 한 뒤에 그것을 저장하는것은 commit이고 커밋후에 remote repository에 다시 업로드를 하려면 푸쉬를 해야한다. 그러면 local에서 remote 레포지토리로 수정한 결과물이 업로드가 될 것이고, 그 결과물을 오픈소스의 주인에게 변경허가를 받으려면 pull request를 신청하여 그 오픈소스의 코드 변경사항을 허가 받거나 거절받을수 있다.
반대로 remote 레포지토리에서 변경사항이 생긴다면, 다시 그것을 내가 pull하여 내 local 레포지토리에 있는 소스코드를 최신버전으로 업그레이드 가능하다.!
git을 설치하고
git config --global로 기본적인 설정을 완료했다.
https://git-scm.com/book/ko/v2/%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-Git-%EC%B5%9C%EC%B4%88-%EC%84%A4%EC%A0%95
링크를 통해서 최초 설정을 마무리!