깃허브에 대해 설명하기에 앞서 Remote repository(원격 저장소)에 대해서 알 필요가 있다.
이전 글에서 설명했듯이 깃(git)을 사용하면 로컬의 작업 폴더를 저장소로 지정하여 작업 기록을 저장할 수 있다.
git init으로 로컬에서 저장소를 지정하는데 remote repository는 말 그대로 이 저장소를 로컬이 아닌 원격으로 두는 것이라고 생각하면 된다.
깃허브(Github)는 바로 이 원격 저장소를 서비스를 제공해주는 회사이다.
원격 저장소가 곧 깃허브가 되는 것은 아니다. 깃허브와 깃은 엄연히 다른 것이고, 깃의 원격 저장소를 제공하는 서비스들 중 하나가 깃허브인 것이다.
현재 깃허브를 사용할 때에는 의무적으로 token key를 사용해야 하며 push 등의 작업을 할 때 본인의 깃허브 계정의 비밀번호가 아닌 이 토큰 키를 사용해야 한다.
토큰 키는 처음에 생성한 뒤로는 확인할 수가 없으니 첫 생성 시에 반드시 복사해서 따로 저장해둬야 한다! (삭제 뒤 재생성은 가능)
깃허브를 사용할 때 알아둬야 할 명령어는 대표적으로
- git clone
- git pull
- git push
가 있다.
git clone <깃허브의 원격 저장소 url> : 깃허브의 remote repository를 그대로 로컬로 복제해옴 (remote repo에는 아무 변경 x)
◎ clone 해온 뒤 git branch로 확인해보면 'master'가 아닌 'main'이라는 브랜치가 만들어진 상태로 있을 것이다. (*main)
-> main은 우리의 local repo에 깃허브가 만들어서 제공하는 default branch 이름이다.
◎ git remote 명령어를 통해 현재 local repo가 remote repo를 포인팅 하고 있다는 것을 확인할 수 있는데 그 포인터의 이름은 'origin'이다.
-> origin 역시 clone해왔을 때 깃허브가 제공하는 포인터의 default 이름이다.
git push <remote repo를 가리키는 포인터> <작업한 local repo의 브랜치>
: remote repo로 local repo의 변경 내용 반영 ex) git push origin main
git pull <remote repo를 가리키는 포인터> <불러올 remote repo의 브랜치>
: 원격 저장소의 소스를 가져오고 해당 소스가 현재 내 소스보다 더 최신 버전이라고 하면 지금의 버전을 해당 소스에 맞춰 올려준다. merge 명령어를 사용하는 것과 같은데 이와 다르게 git pull 대신 git fetch 명령어를 사용하면 소스만 가져오고 merge 하지는 않는다.
즉, pull = fetch + merge
일반적으로 push 하기 전에 remote repo로부터 pull 해온 뒤 최신 상태에서 작업을 하는 것이 원칙이다.
push를 하게 되면 해당 깃허브의 remote repo에서 pull request를 확인하고 허락해주면 깃허브의 remote repo에서도 최종적으로 merge까지 수행된다.
깃허브에는 clone말고도 비슷하게 fork라는 것이 있는데, 둘의 차이는 아래와 같다.
- clone : remote repo에서 자신의 local repo로 복제
- fork : 다른 깃허브 계정의 repo를 자신의 깃허브 계정으로 복사 (git 명령이 아님)
fork해온 저장소를 내가 수정한 뒤, 깃허브에서 create pull request를 통해 원작자에게 수정 건의가 가능하다.
'Git' 카테고리의 다른 글
[ Git ] 이전 커밋들에서 잘못 작성된 author 변경해주기 (0) | 2023.03.10 |
---|---|
[ .gitignore ] 깃에서 특정 파일 상태 관리 제외하기 (0) | 2022.12.22 |
[ GitHub ] There isn’t anything to compare. (0) | 2022.10.22 |
[Github] VSCODE 와 깃허브(Github) 연동 (0) | 2022.03.30 |
[Git] git(깃) 이란? (0) | 2022.03.28 |