현재 디렉터리에 바로 clone 하기
이미 프로젝트가 생성되어있는 디렉터리에서 $ git clone 명령어를 사용하면, 해당 디렉터리 내에 또 다른 디렉터리-원격 저장소의 깃 프로젝트명으로 되어있는-가 생성된다.
진행 중인 프로젝트를 바로 github에 올리고 싶었다. 따라서 현재 디렉터리에 .git 파일이 바로 생성되어야 했다.
어려운 내용은 아니지만 간단한 프로젝트를 진행하면서 용이한 정보라 생각해 따로 정리했다. 그리고 필자는 빈 폴더에 바로 git 연동부터 안 하고 프로젝트 생성 먼저 하기 때문에 이 지식을 많이 사용하게 되었다...
방법 1
아래 두 가지 명령어 중 한 개를 사용하여 폴더 내에 바로 .git 파일을 만들 수 있다고 하는데, 나의 Git bash 창에서는 두 명령어 모두 안된다는 말만 반복해서 clone을 우회(?)하는 방법을 사용했다.
$ git clone [원격 저장소 URL] .
$ git clone [원격 저장소 URL] ./
방법 2
아래 예시는 깃허브 리포지토리에 main 브랜치가 이미 생성되어 있다는 가정하이다.
$ git init
우선 현재 디렉터리에 git 저장소 생성을 한다. 그러면 현재 디렉터리에 .git 파일이 생성된다.
그리고 생성되어 있는 원격 저장소와 현재 로컬 저장소를 연결하면 된다.
$ git remote add origin [원격 저장소 URL]
아래 명령어 입력 시 현재 나의 로컬 저장소와 연결되어 있는 원격 저장소를 확인할 수 있다.
$ git remote -v
이후 pull을 받기 위해 $ git pull 명령어를 사용하면 아래와 같은 문구가 뜰 수 있다.
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> main
git에서 추천해준 첫 번째 방법인 git pull <remote> <branch>를 사용하는 방법이다.
<remote> 부분에는 원격 저장소의 이름이, <branch> 부분에는 로컬 저장소의 브랜치명이 들어간다.
원격 저장소 이름을 위에서 origin으로 지정해놓았기 때문에 아래의 명령어를 사용한다.
$ git pull origin master
이는 불편한 점이 있는데 매번 pull 하고 push 할 때마다 원격 저장소 이름과 로컬 저장소 브랜치명을 일일이 작성해주어야 한다는 것이다.
따라서 두 번째 추천 방법을 사용하여 원격 저장소와 현재 내 로컬 저장소 브랜치를 이어준다.
$ git branch --set-upstream-to=origin/main master
이처럼 명령어를 사용하면 다음과 같은 문구가 뜬다.
Branch 'master' set up to track remote branch 'main' from 'origin'.
이후 $ git pull 만 입력해도 문제없이 pull이 된다. (push도 마찬가지이다)
아래는 예시 화면이다.
참고로 필자는 로컬 저장소 기본 브랜치명을 master에서 main으로 변경하였기 때문에 위 예시 코드와는 달리 브랜치명을 main으로 입력하였다.
첫 번째 추천 방법 사용
두 번째 추천 방법 사용
첫 번째 방법으로 pull이 되었기 때문에 두 번째 방법 사용 후 pull을 하려 할 때 이미 pull이 되었다고 뜬다.
원격 저장소의 main 브랜치와 로컬 저장소 main 브랜치를 연결해주었기 때문에 첫 번째 추천 방법처럼 $ git pull 뒤에 origin main을 작성해주지 않아도 pull이 되는 것을 확인할 수 있다.
방법 3 (추천)
github 빈 리포지토리에 프로젝트를 올릴 때, README.md 파일을 생성함과 동시에 프로젝트와 리포지토리를 연동한다.
$ echo "[README.md에 작성할 내용]" >> README.md
$ git init
$ git add README.md
$ git commit -m "[commit message]"
$ git branch -M main
$ git remote add origin [github URL]
$ git push -u origin main
또는 빈 리포지토리에 바로 프로젝트를 올릴 수 있다.
$ git remote add origin [github URL]
$ git branch -M main
$ git push -u origin main
브랜치명은 main이 아닌 master로 해도 된다.
다만, Git 정책상 브랜치명을 main으로 밀고(?) 있다. 차별적인 문제 때문에..