ETC/Git

Git 입문자 안내서 - 04 : 코드를 올려보자!

Jade Choe 2024. 1. 5. 19:36
SMALL

원격 저장소 생성하기

Github에 로그인 후 메인 페이지에 가면 Dashboard가 보인다.

[New] 버튼을 눌러보자.

위와 같은 페이지가 나온다.

  • Repository Name 에는 저장소의 이름을 영어로 입력한다.
    • 한글 및 특수문자는 모두 하이픈-으로 치환된다.
  • Description에는 저장소에 대한 설명을 간략하게 입력한다.
    • 귀찮으면 넘겨도 된다.
  • PublicPrivate은 이 저장소를 공개할 것인지, 비공개로 둘 것인지를 선택하는 것이다.

TMI
원래 Github의 Private 저장소는 유료였는데, 3인 미만은 무료로 쓸 수 있게 바뀌었다.
다만 무료 사용자는 Private 저장소에서 Pull Request 등의 여러 협업 기능을 사용할 수 없고,
3인 미만의 무료 사용자 팀이라면 Organization을 생성해 사용할 수 있다.


  • Add a README fileREADME.md 파일을 자동으로 생성해준다.
    • 수동으로 생성하는게 편하므로 체크하지 않는 것을 추천한다.
  • Add .gitignore.gitignore파일을 자동으로 생성해준다.
    • 해당 파일은 아래와 같은 목적으로 사용한다
      1) 프로젝트 파일 중 비밀번호나 인증서 파일 등이 노출되지 않도록 제외한다. (보안 측면)
      2) 빌드 파일 등 필요없는 파일을 제외하여 쓸데없이 커밋내역을 잡아먹지 않도록 한다.
      3) 임시로 넣은 이미지, 동영상 등의 리소스파일을 제외하여 공간효율성을 늘린다. (리소스는 S3 등 외부 스토리지를 활용)
    • gitignore에 대한 자세한 내용은 아래 Git Ignore에서 자세히 다루도록 한다.
    • 이 역시 프로젝트에 맞게 수동으로 추가하는 것이 편하므로 None으로 둔다.
  • Choose a license는 이 저장소의 라이센스 내용이 담겨 있는 license파일을 자동으로 생성해준다.
    • 라이선스는 GPL, Apache 등 리포지토리의 목적에 따라 다르며, 일단 None으로 두어 패스하도록 하자.
    • 라이선스에 대한 자세한 내용은 추후 포스팅 후 해당 위치에 링크로 대체한다.

자, 이제 코드를 깃허브에 올릴 준비가 되었다.

Visual Studio로 생성한 C++ 프로젝트를 해당 저장소에 올려보자.

로컬 저장소 생성하기

  • C++ 프로젝트의 .sln 파일이 있는 위치로 이동한다.
    • Visual Studio에서 솔루션 우클릭 - 파일 탐색기에서 폴더 열기를 클릭하면 바로 열 수 있다.
  • 주소창에 cmd를 입력하거나, 빈 공간에 우클릭 후 Open Git Bash here을 클릭해 콘솔창을 연다.
  • 콘솔창에 git init을 입력한다.
  • cmd라면 별 변화가 없을 것이고, git bash라면 디렉터리 뒤에 (master) 라고 나올 것이다.

이제 이 솔루션의 폴더는 `로컬 저장소`가 되었다.

  • 원격 저장소를 연결해주기 위해 아래 명령어를 입력한다.
git remote add [원격 저장소 이름] [원격 저장소 주소]
  • 원격 저장소 이름은 추후 여러 개의 원격 저장소를 사용할 때 사용할 별칭이다.
    • 이름은 아무거나 지어도 상관 없지만, 기본이 되는 원격 저장소의 이름은 origin을 사용하는 것이 관행이다.
  • 잘 추가되었는지 확인하려면 git remote -v를 입력하면 된다.
  • remote 명령어에 관한 내용은 추후 포스팅 후 해당 위치에 링크한다.

Git Ignore 생성하기

  • 솔루션 폴더 빈 공간에 우클릭 - 새로 만들기 - 텍스트파일을 클릭해 새 텍스트파일을 만들고,
  • 파일명을 .gitignore 이라고 바꿔준다.
  • 이 때 윈도우 탐색기에 확장자명이 보이지 않는 상태라면 반드시 폴더의 보기 - 파일 확장명을 체크해 텍스트파일의 확장자명 .txt를 제거해 주어야 한다.


  • 겁나게 많지만, 우리가 쓸 파일은 두가지이다.
  • 먼저 C++.gitignore 파일을 클릭해 내용을 보자.

  • 위와 같이 gitignore에 들어갈 내용이 보인다.
    • gitignore은 표준 glob 패턴을 사용한다.
    • # 뒤의 내용은 주석처리된다.
  • 우측 상단의 복사 아이콘을 클릭해 복사해 방금 만든 .gitignore 파일 안에 넣어준다.
  • 이전 페이지로 돌아가 VisualStudio.gitignore 파일의 내용도 똑같이 .gitignore 파일 안에 넣어준다.

이 파일 내용의 각 줄에 매칭되는 파일/폴더는 이제 git에 올라가지 않는다.

  • 해당 프로젝트에서 임의의 인증서 private.pem 파일을 사용한다고 가정하고, certificates 폴더와 .pem 확장자 파일도 제외해보도록 하자.
  • certificates 폴더는 대문자 또는 소문자로 시작하거나 맨 마지막에 s를 포함하지 않을 수도 있다.
...
[Cc]ertificate?(s)/
*.pem

Github에 업로드 하기

자, 이제 솔루션을 포함한 코드를 원격 저장소에 올릴 준비가 되었다.

콘솔에 아래 명령어를 입력한다.

git add .
git commit -m "나의 첫 커밋, 프로젝트 생성"
  • git add [파일명] 명령어는 해당 로컬 저장소에서 Untracked 또는 Modified 상태인 파일을 Staged 상태로 만들어준다.
  • 파일명 대신 .을 입력하면 해당 경로의 하위 디렉토리에 있는 모든 폴더 및 파일을 Stage 한다.
  • 다만, .gitignore 파일의 내용과 일치하는 폴더 및 파일은 Stage하지 않고, Ignored 상태로 둔다.


  • 이 상태에서 그냥 git push를 했다간, 아래와 같은 오류를 맞이한다.

  • 원격 저장소master 브랜치(분기)가 없어서 올릴 수 없다는 뜻이다.
  • 로컬 저장소에서 Branch(분기, 가지)를 새로 만들고 원격 저장소에 적용하려면 git push -u [원격 저장소 이름] [브랜치명]을 입력하면 되는데, 이 저장소는 아무런 브랜치도 없는 새삥이기 때문에 최초 1회는 반드시 해주어야 한다.
  • 여기서 잠깐, 깃허브 원격 저장소 초기 페이지를 보면 아래 그림과 같이 main을 사용하라고 한다.

  • Git CLI를 사용했을 때 본래 기본 브랜치명은 master 이지만, 깃허브측에서 노예제도와 인종차별을 연상시킨다고 main으로 바꿔버렸다.
    • 귀찮으면 그냥 git push -u origin master로 올려버리면 되고,
      main을 쓰겠다면 git branch -M main 이후 git push -u origin main 명령어로 올리면 된다.
    • 여기서 -u 옵션은 --set-upstream의 약자로, 원격 저장소 originmain 브랜치를 올리라는 뜻이다.

브랜치원격 저장소에 한 번 올렸다면, 이후부터는 --set-upstream 옵션을 빼고 git push만 쓰면 된다.

master가 손에 익어서 그만 실수를..

 

 

 

Push가 완료되었다면 Github 원격 저장소의 페이지에서 파일명, 마지막으로 수정된 커밋명/시간을 볼 수 있다.

BIG