본문 바로가기

Work

간단 Git 초기 설정

웹의 블로그들을 1차 자료로 참고한 내용임. 종종 초기설정을 해야 하는데 잊어버려서, 메모랜덤으로 작성한다.

 

1. git repository 생성하기
일단 디렉토리를 만들어 해당 위치로 이동한다. git repo를 이미 만든 상황이라면 \.git 디렉토리가 이미 있을 것이며, 이 단계는 건너뛴다.

git init

 

2. 원격 repo와 연결하기
github 등 원격에 미리 만들어 둔 remote repository와 1단계에서 만든 local repository를 연결한다. 원격 repo 없이 local에서만 관리할 repo라면 이 단계는 건너뛴다.

git remote add origin https://github.com/[github 계정 이름]/temporaryRepo.git /*Link local repo to remote repo */

   remote repo 이름(주황색 문자열): 여기서 작명하는 것이기 때문에, 사실 마음대로 지어도 상관 없다.
   remote repo 주소(파란색 문자열): Github 등에서 미리 만들어 파란 글씨의 주소를 복사해 넣는다.

add라는 명령에서 알 수 있듯, 이 원격 repo는 local repo가 연결할 수 있는 여러 원격 repo 중 하나가 된다. (그렇게 작업하며 헷갈리지 않는 게 가능할까 모르겠지만, 나의 local repo도 원격 repo 입장에선 자신의 여러 원격 repo 중 하나일 뿐)

 

3. 원격 repo 내용 받아오기 & 원격 repo에 브랜치 생성하기

git pull origin master /* 이후에야 local master가 보인다 */
git branch -u origin/master /* local master가 origin/master를 tracking한다는 걸 선언한다 */
git log -r /* local branch와 remote branch 각각의 Head 위치를 볼 수 있다 */

git config --list /* config 목록 보기 */

git config --global user.name "내이름"
git config --global user.email "내이메일주소"

만약 첫번째 명령줄에서 원격 branch 지명 없이 단순히 git pull이라고 수행해보면 origin의 모든 branch가 pull되어 온다. (얼핏 이게 원하던 바 같지만, 사실 원격 repo의 특정 브랜치만 보고 싶다면 좋은 방법은 아니다. 예컨대 release branch만 보고 싶을 수 있으니.)
저렇게 원격 repo의 특정 branch만 pull 하면 local repo에도 동기화 된 branch가 생성되고 뒤이어 체크아웃까지 된다.

예컨대, 원격 repo 이름을 mylove로, 거기에 있는 여러 branch 중 master만 pull한 결과는 아래와 같다. 원격 repo의 branch 이름을 미리 알아내려면 github를 가서 보든가 해야 하는 번거로움이 있지만...

4. Local repo 내용 remote로 올리기
시험삼아 README.md를 만들어 commit 후 push하는 과정의 예시이며, repo 설정과는 무관한 내용이다.
참고로, add는 변경사항 메모들 중 적용할 것들만 추리는 일, commit은 추려놓은 것들에 제목과 주소를 써서 보낼 편지함에 작성해 놓는 일, push는 내 local repo와 연결된 remote repo 메일함에 발송하는 일에 해당한다.

git checkout -b master /* = git branch master + git checkout master */
echo "Read this file." >> README.md
git add README.md

git commit -m "first commit"
git push -u origin master /* 이후 Github 로그인 창 열려야 함 */

   -u (= --set-upstream) : tracking branch로 설정하겠다는 뜻. 3단계의 git branch -u 옵션으로 branch 간 연결이 되어 있으면 git push만으로 수행된다.

만약 3단계의 두번째 명령줄로 upstream branch 선언을 안 해주면 git push origin HEAD:master와 같이 직접 선언해 줘야 한다 (이미 master로 체크아웃 되어 있다면 HEAD라고만 써줘도 됨)
만약 3단계의 두번째 명령줄로 local branch와 remote branch를 연결해 주었다면, git push라고만 입력해도 된다.

 

만일 방화벽으로 인한 repo 연결 문제가 발생하면 SSL을 비활성화 해야 할 수 있다. (비활성이 정답인지는 모르겠다만)

git config http.sslverify false /* 이 repo의 SSL을 비활성화 */

   또는 git -c http.sslverify=false

 

참고로, github 등에서 repo를 가져오고 싶을 때 pull과 clone 두 가지 방법의 차이가 궁금한데 실험 결과는 이렇다.

1) git pull : 수행하는 현재 디렉토리 안에 repo의 내용을 옮겨온다.

2) git clone : 수행하는 현재 디렉토리 아래에 repo의 root 디렉토리부터 옮겨온다.

두 가지 모두 git init을 별도로 해줘야 하고, 그 외의 차이점은 아직 모르겠다. Pull은 repo간 동기화 하는 걸로 알고 있는데, Clone도 복사 후 브랜치 연결이 되는 것 같기에 좀 더 확인해 봐야 한다.


추가) Github에서 미리 remote repository를 만들고 위 로컬 repository를 만드는 경우, Bold체 구문만으로 진행해도 무방.

추가2) git remote add origin은 정상 완료되는데 git pull origin/master가 실패한다면, Github의 브랜치명을 확인해 봐라. 예전엔 master가 default 브랜치였는데, 오늘 만들어 보니 main이라는 이름으로 만들어진다. 이걸 모르고 origin/master만 계속 찾아대니 못 찾는다는 에러가 나온다. 그냥 main을 쓰든가, master라는 remote branch를 하나 더 만들던가 하면 된다.

'Work' 카테고리의 다른 글

이상적인 직장의 요소  (0) 2019.12.22
Code Embedding - ide.geeksforgeeks.org  (0) 2019.12.15
Resume review  (0) 2019.12.07
새로운 언어  (0) 2019.08.01
비전을 논하면서 비전이 생겨났다  (0) 2019.08.01