코드 저장소

공부에는 끝이 없다!

Git

GIT 사용하기 - CLI를 이용한 Push

VarcharC2K 2023. 12. 26. 18:00

이전 정리에서 init명령어를 통해 Git을 사용할 위치를 지정하고, Add 명령어를 통해 수정한 파일을 등록하고, Commit을 통하여 분기점을 만드는 작업을 수행해 보았다.

 

https://varcharc2k.tistory.com/51

 

GIT 사용하기 - CLI를 이용한 Commit

Git으로 버전 관리 시작하기 - Commit과 Init Git 이용을 위해선 먼저 원하는 폴더를 지정해 주어야 한다. 내가 로컬의 어떤 경로에서 버전 관리를 할지 Git이 알게해준다고 생각하면 좋을 것이다. 이

varcharc2k.tistory.com

 

이번에는 이렇게 생성된 Commit을 GitHub로 올리고 다른 사람의 프로젝트는 받는 작업을 수행해 볼 것이다.


로컬 저장소와 원격 저장소

앞서 우리는 init 명령어를 통하여 정해진 폴더에 로컬 저장소를 만들고 Commit을 통해 로컬 저장소에 분기를 만들었다.

사실 이렇게만 해도 이미 버전 관리를 하고 있는 것이다. 

로컬에 저장된 분기로 시점을 돌리고 관리를 하고 있기 때문이다.

하지만 로컬 저장소에서만 관리하겠다는 말은 혼자 프로젝트를 하겠다는 말과 동일하다.

그럼 여러 명의 팀원과 함께 버전 관리를 하려면 어떻게 해야 할까?

 

원격 저장소는 이런 부분을 해결하기 위하여 사용한다.

GitHub으로 대표되는 원격 저장소는 여러 사람이 동시에 관리하는 로컬 저장소라고 생각하면 되겠다.

각자의 로컬에서 관리하는 것이 아니라 하나의 원격 저장소에서 로컬에 코드를 내려받고 로컬에서 작업 후 Push라는 명령어를 통하여 수정 사항을 원격 저장소로 올려주면 되는 것!

 

그럼 CLI를 통하여 GitHub에 내 커밋 목록을 올려보자.


Push - 원격 저장소로 밀어 넣기

push 명령어는 내 로컬에 있는 Commit들을 원격 저장소로 올려 보내는 명령이다.

로컬에서 수정한 내용을 원격 저장소에게 알려주고 동기화 시키는 작업이라고 생각해도 좋다.

우선 Push 명령 수행 전에 GitHub에서 저장소(Repository)를 만들어 주어야 한다.

GitHub에 로그인 후 우측 상단의 + 버튼을 누르거나 Repositories의 new 버튼을 통하여 새로운 저장소를 생성한다.

 

그러면 아래와 같이 새로운 저장소를 만드는 페이지가 나타난다.

원하는 저장소 명칭을 적어 준 후, 다른 옵션은 건드릴 필요 없이 바로 생성해 주어도 무방하다.

옵션에 대해서 간단하게만 설명하자면, 우선 Public / Private 선택은 이름에서 알 수 있듯이 해당 저장소를 공개로 만들건지 비공개로 만들건지 선택하는 옵션이다. 비공개로 하는 경우 초대받지 않은 사람들은 해당 저장소를 볼 수 없다.

 

하단부에 Initialize this repository with: 라고 적힌 부분에서는 저장소를 만들면서 간단하게 추가할 수 있는 3가지 옵션이 있다.

  • Add a ReadMe file은 시작할때 해당 저장소의 ReadMe 파일을 자동으로 생성해 준다.
  • Add .gitignore 옵션은 해당 저장소에 업로드 시 git에 포함시키지 않을 파일 경로를 정하는 .gitignore라는 파일을 생성시에 만들어준다. 템플릿을 지정하여 원하는 언어에 맞춤으로 만들 수도 있다.

 

정상적으로 만들어 진다면 다음과 같이 저장소를 볼 수 있다.

 

저장소가 만들어 진 후에는 GitHub 저장소 주소를 알려주어야 하는데 Git Bash에 git remote 명령어를 통하여 저장소 주소를 입력하면 된다.

git remote add origin [저장소 주소]

그 후 만들어진 Commit을 push 명령어를 통하여 올려준다.

Push를 사용할떄는 올릴 Branch를 선택해야 하는데 기본적으로 master로 생성 되므로 master로 올려주면 된다.

git push origin master

 

만일 연결이 제대로 되어 있지 않다면 다음과 같은 창이 나타날 것이다.

위와 같은 창이 나타난다면 Sign in with your browser를 클릭하여 GitHub와 연동을 해주면 된다.

 

정상적으로 처리가 완료되었다면 다음과 같은 확인 페이지가 나타날 것이다,

 

연동이 정상적으로 완료되면 다음과 같이 Push가 완료된것에 대한 메시지를 Git Bash에서 확인 할 수 있다.

위와 같이 정상적으로 Push가 되었다면 원격 저장소에서도 해당 Commit에 대한 내용을 확인 할 수 있다.

 

내용을 보면 우리가 업로드 했던 README.md 파일과  Commit 메시지가 정상적으로 출력되는 것을 확인 할 수 있다.


다른 사람의 저장소를 받아오기 - Clone과 Pull

그렇다면 다른 사람이 만든 저장소를 받아오기 위해서는 어떻게 해야 할까?

Git에는 Clone이라는 명령을 통해 원격 저장소의 코드를 내 로컬로 받아 올 수 있다.

또한 로컬 저장소도 자동으로 생성해준다.

 

또한 만약 원격 저장소에 다른 사람이 Push를 올려 변경 내용이 있을 경우 변경 내용만 받아오는 Pull을 이용하여 원격 저장소의 변경 내용을 로컬로 받아올 수 있다.

그럼 간단한 실습을 통하여 직접 수행해 보자.

 

우선 로컬 저장소에 GitTestAnother라는 폴더를 만들어 준다.

(원래는 다른 로컬에서 사용하는 것이지만, 한 로컬 PC에서 두사람이 쓰는것처럼 이용하기 위해서 다른 경로를 지정해 준다. 앞서 설명했듯이 한 로컬 저장소에는 1사람만 사용 가능하기 때문에 다른 로컬 저장소 경로를 만들어 주는 것)

그 후, GitBash에서 새로 만든 gitTestAnother로 경로를 이동한다.

정상적으로 들어왔으면 Clone 명령어를 통해 원격 저장소의 코드를 로컬로 내려받는다.

git clone [원격 저장소 주소] .

 

명령이 정상적으로 수행되면 다음과 같이 클론이 완료된 것을 확인 할 수 있다.

한가지 주의 할 것은 원격 저장소 주소를 적고 스페이스를 입력하고 .을 찍어주는 것인데 이것은 해당 폴더에 바로 코드를 내려받으라는 명령이다.

만약 .을 입력하지 않고 그냥 내려받게 되면 Git에서 클론시 설정한 폴더에 원격 저장소 명으로 폴더를 생성하고 그 안에 코드를 내려받게 된다.

따라서, 필요한 경우가 아니라면 .을 입력하여 지정한 폴더 위치에 바로 풀어주면 되겠다.

해당 폴더를 확인해 보면 정상적으로 업로드 했던 파일이 내려받아진 것을 확인 할 수 있다.

또한, 앞서 설명했던 .git 로컬 저장소도 자동으로 만들어 준다.

 

Pull을 이용하여 변경사항 내려받기

원격 저장소에 새로운 Commit이 올라왔다면 Pull 명령어를 통해 내려받을 수 있다.

우선 변경사항을 만들기 위하여 GitTest에서 새로운 App.js라는 코드를 만들고 Push 시켰다.

GitHub에서 확인해 보면 이전에 올렸던 README.md와 Commit 내용이 다른 것을 볼 수 있는데 이렇게 Commit 별로 구분이 되기 때문에 정상적으로 버전 관리를 할 수 있는 것이다.

 

하지만 원격 저장소에 변경된 내용을 로컬에서 알 수는 없기 때문에 GitTestAnother 경로에서는 app.js 코드가 존재하지 않는다.

그럼 올라간 파일을 우리가 방금 만든 GitTestAnother 경로로 내려 받아 보겠다.

git pull origin master

 

정상적으로 처리 된다면 다음과 같이 Pull에 대한 진행사항이 나타난다.

 

 

실제 경로로 가보면 원격에 있는 코드가 내려받아 진 것을 확인 할 수 있다.

이렇게 Push와 Pull 명령어를 통하여 서로 다른 작업자가 원격에서 서로의 작업을 공유하며 손쉽게 작업할 수 있는 것이다.


정리하며...

지금까지 CLI를 통해 Git을 이용하는 방법을 배워 보았다.

다시 한번 순차적으로 순서를 정리해보자.

정확한 구분을 위해 AB라는 사람이 프로젝트에 참여한다고 가정하고, 시작은 A 유저가 한다고 가정한다.

프로젝트의 진행은 A 유저가 코드를 짜고, B 유저가 고도화 후, A 유저가 테스트한다고 생각해보자.

(빨간색은 A 유저의 행동이고 파란색은 B 유저의 행동이다.)

 

A 유저

  1. Git과 GitBash를 설치한다.
  2. 내 로컬 PC에 버전 관리를 할 경로(폴더)를 만든다.
  3. Git Bash 실행 후, 관리할 경로로 이동하고(cd 명령어) init 명령을 통해 로컬 저장소를 생성한다.
  4. 해당 위치에 버전 관리할 코드를 생성한다(IntelliJ, VS, VSCode 같은 IDE를 이용하게 될 것이다)
  5. 기능 구현이 끝나 저장할 분기점이 생기면 add를 통해 Commit 할 파일을 추가하고 Commit을 하여 분기점을 만든다.(이때, 버전 관리는 로컬에서만 이루어 지는 상태이다.)
  6. 다른 프로젝트 팀원이 생기면 GitHub에 원격 저장소(Repository)를 생성한다.
  7. 원격 저장소에 팀원을 초대하고, 저장한 Commit 목록을 Push를 통하여 원격 저장소에 올린다.

B 유저

  1. 로컬 PC에 버전 관리를 할 경로(폴더)를 만든다.
  2. Git Bash에서 Clone을 통해 원격저장소를 연결하고 로컬로 파일을 내려받는다.
  3. 받은 코드를 수정하여 고도화 작업을 진행하고 Commit 후, Push 하여 수정본을 원격 저장소로 올린다.

A 유저

  1. Pull을 통해 수정된 코드를 로컬로 내려받는다.
  2. 로컬에서 고도화 된 코드의 테스트를 진행한다.

이렇게 하면 서로 떨어진 유저가 원격 저장소를 통해 손쉽게 버전 관리를 하면서 프로젝트를 진행 할 수 있게 된다.

Git이 없었다면 우리는 USB로 파일을 주고 받으며 다른 사람이 작업이 끝날때 까지 기다렸다가 코드를 받아서 작업을 했을 것이다.

참으로 편한 기능이 아닐수 없다.

 

버전 관리는 이런식으로 진행이 되며 초기 설정이 끝나면 사실 Commit, Push, Pull 이외에는 크게 작업을 해줄 일이 없다. (물론, 실무에서는 Branch가 갈라지고 Merge 작업이라던지 Pull Request 같은 다른 것도 많지만 그것은 차차 알아보도록 하자. 그리고 저것만 알아도 기초적인 사용은 가능하다.)

 

그럼 다음에는 GUI를 통하여 Command가 아닌 그래픽화 된 툴로 Git을 이용하는 방법을 알아보도록 하자.

'Git' 카테고리의 다른 글

GIT - Branch 나누기  (2) 2023.12.29
GIT - 소스트리 이용하기  (1) 2023.12.28
Git - GUI 이용하기  (0) 2023.12.27
GIT 사용하기 - CLI를 이용한 Commit  (0) 2023.12.25
버전관리와 Git - 환경 설정 하기  (1) 2023.12.23