Git 이란?
특정 시점에 생성된 백업 복사본을 스냅샷이라고 하는데 이렇게 하나하나 스냅샷을 만들어 주는 작업을 commit이라고 한다. 스냅샷을 통해 버젼 관리를 진행할 수 있다는게 깃의 장점이다.
이렇게 매 commit 마다 변경 사항에 대한 이력이 남아 협업 및 버젼 관리가 용이하다.
Github에서 Code Review 등을 통해 협업이 가능하고, 수많은 오픈 소스 프로젝트들이 진행되고 있다.
내가 작업하는 소스 코드 폴더가 버전 관리를 받게 하기 위해서는 내 폴더를 Git의 관리 아래에 두어야 한다.
Git으로 관리되는 폴더를 Git repository 라고 한다.
Git repository 는 Remote Repository와 Local Repository 두 종류의 저장소를 제공한다.
작업할 때는 Local Repository에서 할 수 있고 내가 작업한 코드를 공유하려면 Remote Repository에 업로드해 여러 사람이 함께 공유할 수 있다.
다른 사람이 Remote Repository에 올려놓은 소스 코드를 내 Local Repository 로 가지고 올 수도 있다.
즉 타인의 오픈 소스 코드를 사용하려면 fork 를 통해서 내 Remote Repo로 가져온 후, clone을 통해 내 컴퓨터(Local Repo)에 파일을 복사한다. 그리고 코드 수정을 완료하여 타인과 공유하고자 한다면 변경된 파일을 commit하여 Local Repo를 업데이트한 후 push를 통해 다시 Remote Repo로 저장할 수 있다. 이후 pull request를 통한 업데이트를 제안할 수 있다.
fork >> clone >> (코드 수정)>> push >> pull request
대략적인 work flow를 알아봤으니 실제로 사용하는 방법을 알아보자.
우분투 기준 터미널을 열어 다음 명령어를 타이핑한다.
sudo apt install git --- 관리자 권한으로 git을 설치한다
설치가 완료 되었다면 git에 나의 정보를 등록한다 ( Github에 등록된 사용자 이름과 이메일 주소를 사용 )
$ git config --global user.name "나의 사용자 이름"
$ git config --global user.email "내 이메일 주소"
등록을 완료했다면 계정 접근을 위한 ssh키를 생성해준다. 비대칭 키값이기에 2개가 생성될 것이다. 하나는 개인키, 하나는 공개키이다.
ssh-keygen
다음의 명령어를 프롬프트에 입력하여, 공개키를 복사한다
cat ~/.ssh/id_rsa.pub --- 공개키 출력
공개키를 복사한 후 본인 계정의 github의 설정의 ssh키 메뉴로 들어가 등록을 완료하면 git 설정은 끝난다.
git clone (ssh주소)
를 입력해주면 Remote Repo에 있던 파일이 Local로 복사된다.
이후 다음의 명령어들을 수행하여 작업을 완료할 수 있다.
git add . -- git의 관리 대상 등록을 위한 스테이징 영역에 추가
git commit -m '내용' --- '내용'의 이름으로 Local Repo에 commit
git push origin master(main일수도) --- Local Repo에서 Remote Repo로 파일 전달
< 참고시 유용한 명령어 >
git status -- staging area와 untracked files 목록에 어떤 것들이 있는지 확인
git resotre -- commit되지 않은 loca Repo의 변경사항 취소
git reset HEAD^ -- 가장 최신의 commit 을 취소
만약 누군가와 협업하고 있는 상황이어서 간편하게 코드를 받고 싶다면 다음의 순서로 가능하다
git remote add origin (내 Repo 주소) --- 나의 loca Repo와 Remote Repo 연동
git remote add pair (상대방 Repo 주소) --- 상대방의 주소와 내 주소 연동
git remote -v // 연결된 Remote Repo 확인
git pull pair master(or main) // 상대방의 Remote Repo의 작업물을 가져와서 자동병합