프로그래머스 데브코스 3일차(Git 실습)

박상하·2023년 11월 16일
0
post-thumbnail

Git (실습)

저번 시간에 CLI로 컴퓨터와 소통하는 기본적인 방법 몇가지를 배울 수있었다.

ls: 폴더 내부 파일 확인
ls -a: 폴더 내부 파일 확인(숨겨진거포함)
cd: 해당 폴더로 이동
cd ..: 이전 폴더로 이동
mkdir: 폴더 생성

이젠 이러한 CLI로 컴퓨터와 소통하는 방법을 배웠다면 이젠 Git에게 명령을(CLI)를 통해 내리는 방법을 실습하는 시간을 가졌다!!🔥

사실 Git만 배워도 정말 도움이 많이 될거 같다. 협업에 있어서 정말 필수인 도구인데 이를 이렇게 쉽게 알려주시는 김송아 강사님께 정말 감사드린다..🥲

먼저,git status를 먼저 실습하였다.

git status ?깃아 너 지금 컨디션 어떻니? 상태어떻니?

git이 잘 작동되고 있는지 확인할 수 있다.

git status 실습

이는 이제 이렇게 해석할 수 있다.

fatal: not a git repository
이거 지금 깃이 보고있지 않는 폴더인데??
깃 레포지토리 아닌데??
그리고 : .git 은 너 지금 .git폴더도 없어 라는 의미!

그럼 어떻게 해야할까 git한테 내가 지금 만든 이 폴더를 좀 봐주라고 해야할 것이다.

git init

git init: 깃아 지금 여기 폴더 봐줄래?

Initialized empty Git repository In ------.git/
너 저장소 내가 만들어줬다잉??
그리고 나 지금 너 저기 ---폴더에 git 설치했어(숨겨짐폴더)

그 후 다시 git status를 해보았다.

git은 보수적이라 이 폴더 전체를 봐달라고 해도 이 파일도 봐줘? 여기안에 있는 저파일도 보는게 맞아?
이렇게 물어본다 그게 바로 빨간글씨로 적힌 부분이다.

그래서 결국 파일 하나하나 버전관리해달라고 git한테 부탁해야한다.

그럼 Git init은 왜 할까 ❓

자, 먼저 Git에게 어떤 폴더를 지켜보라고 말하는 것이다.

Git은 항상 내 코드를 감시하고 수정사항을 기억할 수 있다. 이게 바로 내 프로그램에 깔려 폴더 내에서
Git init을 명령한 후 부터 내 폴더에 대한 수정사항(Version)을 관리할 수 있다.

결국 Git은 내 Local에서 Version을 관리할 수 있지만 결국엔 협업이나 백업을 위해 Github에 업로드할 수 있어야한다. 이때 Git init을 명령한 해당 repository 즉, 폴더에서 특정 파일을 묶어 업로드할 수 있다.

정리: git init=> 이 폴더를 감시해줘!

그럼 왜 Git init했는데 untracking❓

git은 생각보다 똑똑하고 개발자가 사용하기 정말 알맞게 설계되어있다. 만약 git init을 하여 해당 폴더의 모든 수정사항(Version)을 기록한다면? 그리고 해당 버전을 관리한다면 더욱 세밀한 버전 관리가 불가능하다.

그래서 Git은 사용자에게 선택권을 준다. 어떤 파일을 너는 기록하고싶어?
어떤 파일을 추가해서 버전관리를 해줄까?? 라는 질문을 사용자에게 던지는 것이다.

우리가 프로젝트를 할 때 만약 Input, Output에 대한 수정이 동시에 이루어지고있을때
Input에 대한 버전 수정만 기록하고 싶다면??

우리는 Git에게 Input에 대한 파일만 트래킹해줘 혹은 장바구니에 담아줘 라고 생각할 수 있다.

즉, Git에게 특정 파일에 대한 tracking을 부탁해야 Git은 해당 파일을 감시할 수 있다.

git add

우리는 git add 명령을 통해 git에게 우리가 tracking을 원하는 파일을 지정할 수 있다.
지정된 파일은 stage에 올라오게 되는데 필자는 이를 장바구니에 담겨있다고 이해했다.

git add => 이 파일 트래킹해줘, 이 파일 저장하기전에 담아줘

그럼 git add를 하면 .git이라는 숨겨진 파일에 해당 파일을 봐달라했음 이라고 기억한다.

git commit

대망의 git commit!! 얼마나 많은 commit을 해왔나.. 필자는 커밋을 하면서도 이게 뭔지 정확하게 몰랐다.
commit은 tracking 한 파일들을 모아 하나의 version을 기록하는 과정이다.

즉 대망의 새로운 버전이 기록되고 git이 이를 기억하는 아주 놀라운 순간이다.

필자는 이를 학습하기 전에 그저 잔디심어주는애🌱 라고 생각했다..🥲

자 간단한 설명은 끝났고 이제 그림으로 한번 알아보자

그림으로 알아보자🎨

git init

.git이 해당 폴더(repository)에 저장되며 이제 해당 폴더를 감시할 수 있게되었다.
하지만 해당 파일들은 아직 untracking, 왜? 어떤 파일을 tracking 할지를 선정하지 않음

git add

git add 를 통해 해당 파일 1,2,3를 tracking 하고 stage위에 올려둠 이제 commit이 가능함
왜냐하면 변경사항을 tracking한 파일들이 존재하기 때문이다.
장바구나에 담아두고 아직 기록(저장)하지 않은 상태

git commit

버전1에서 버전2가 되었다고 볼 수 있다. 즉 버전 2가 기록되어짐

코드로 알아보자💻

자, 처음부터 쭉 흐름을 쫓아 코드로 설명해보겠다!!

필자는 먼저 test 라는 txt 파일을 만들어서 연습을 해보았다.

해당 폴더명은 GitTestGUI(수업때 쓰던 폴더를 그냥 그대로씀..ㅋㅋ) GUI는 무시해도 괜찮다.
필자는 CLI를 사용해 Git과 소통해보겠다.

그 다음 이제 Git에게 요청하고 싶다.
해당 폴더에 Git repository를 만들어줘!
혹은 이제 이 폴더 좀 Git으로 버전관리좀 해줄래?

git init!

이제 git은 내 폴더의 버전관리를 할 수 있는 상태에 놓여있다.
이럼 진짜 git의 상태를 한번 살펴보자

여기서는 untracking이 아니라 no changes added to commit!

이라는 에러 메세지를 확인할 수 있다.

사실 최초에 폴더를 생성하고 git init을 하게되면 정말 tracking 하는 파일이 1개도 없기 때문에 untracking 에러가 발생하지만

실습을 하며 1번은 git add test.txt를 명령했기 때문에
git은 아. test.txt라는 파일을 tracking 해야하구나 라고 이해한다.
그 후 이제 tracking은 하고있지만 stage에 올라와 있는 파일은 없다는 말이다.

즉 commit이 가능한 상태는 아니다! 또 지금 아직 버전관리를 위해 담겨져있는 파일은 없다! 라는 의미이다.

그 후 원하는 파일을 stage에 올려주기로했다.

git add 후 git status
이제 Changes to be committed가 된다.
즉, statge에 올라와있는 파일이 있고 해당 파일의 수정사항이 있으니까 commit해도 된다 라는 의미이다.

그리고 git commit을 하니 그 시점(version)이 저장이 되었다. 이를 이제 local에서 기억을 해준다.
마치 스냅사진을 찍은 것 처럼!!

이제 git log를 통해 나의 commit 기록(version 기록)을 확인할 수 있다.

GitHub

자, Git을 통해 local에서는 버전관리를 할 수 있게 되었다!!!

init, add, status, log, commit 등에 대한 명령어를 사용해
local에서 내 버전을 기억하고 언제든 기 그 시점으로 돌아가는 것이 가능하다!

이제 Git이 관리해주는 폴더 내 버전을 모두 기억하고 있는 이 Git폴더를 다른 사람과 공유하고 백업을 위해 Github에 업로드할 수 있다.

Git과 GitHub의 모델은 다음과 같다.

깃 <===> 깃허브 <===>깃

결국 GitHub에서 Git 폴더들이 모일 수 있다.
마치 우주정거장~

Git도 나의 local 컴퓨터에서 고유의 폴더(repository)를 만들었다. 그럼 원격 컴퓨터를 제공하는 GitHub에도 폴더(repository)가 필요로 하지 않을까?

그게 바로 GitHub에서 늘 만들었던 repository 이다!!! 이곳에 만들고 나의 Local과 연결만 하면된다.
local에 있는 프로젝트를 Github의 repository에 저장을 하는 것!!

위와 같이 Create a new repository를 해서 만들면된다.

Git도 repository 형성했고 Github도 repository 형성했다.
이제 연결해주면된다.

연결은??

Git remote add 원격저장소별칭(깃허브저장소별칭) 원격저장소URL(깃허브저장소URL)

git remote

git remote는 원격으로 git과 github를 연결시켜주는 명령어이다.
git은 버전관리와 github와의 연동기능까지 제공한다.

그 명령어인

git remote add origin https://github.com/updownpark2/DevCourseGitTest.git

를 하면 해당 git repository와 github repository가 연동이 된다.

이제 연동이 되었으니 업로드가 가능하다.

git push

git push를 사용하면 코드를 github에 업로드할 수 있다.

git push 원격저장소별칭 원격저장소레포지토리명

git push origin main

하면 지금까지의 commit 기록을 원격 Git hub에 올릴 수 있다.

그니까 즉, version(수정사항)들을 GitHub에 올릴 수 있는 것이다.

가장 최근의 push된 코드 이후로 쌓인 commit들이 업로드되게 된다!!

그럼 이건 취향차이가 될 거 같다. 매번 commit할 때마다 push를 하는 개발자와 commit을 쌓아둔 후 마지막에 push를 하는 개발자가 있을 수 있겠다!

필자는 늘 commit을 할 때마다 push를 했었는데 그 이유는 필자는 코딩테스트를 포트폴리오 용으로 자주 commit하고 push해 기록을 남겼기 때문이다.

이유를 알고 사용하는게 역시 중요한 거 같다.

다음 시간에 GitHub에 대해 더 자세히 배울 수 있다.

Git은 잘 이해했으니 또 GitHub도 한번에 잘 이해해서 꼭 Git은 자신있는 개발자가 되자!🔥

0개의 댓글

관련 채용 정보