반응형

Git을 사용하기 위해서는 먼저 Git을 설치해 줘야 합니다. Git 다운로드 링크에 들어가서 각자 운영체제에 맞는 Git을 설치해 줍니다. 저는 Mac을 사용하기 때문에 homebrew로 설치해 줬습니다.

 

그리고 Git을 터미널에서 사용하는 과정에서 CLI 명령어가 주로 사용될 것이기 때문에 미리 익혀두시는 것이 좋을 거 같습니다.

 

터미널에서 명령어로 Git을 사용하다 보면 화면에서 편하게 눈으로 보면서 클릭으로 간편하게 Git을 사용할 수 있는 GUI(Graphical User Interface) 툴인 Sourcetree나 Gitkraken 등을 사용하면 되지 않을까라는 생각을 하게 됩니다.

 

Git이 어떤 방식, 어떤 명령어로서 버전을 관리할 수 있는지 원리를 알아야 나중에 GUI 툴을 사용하게 되더라도 쉽게 입문할 수 있다고 생각됩니다. 그래서 먼저 터미널에서 직접 명령어로 Git을 사용하는 방법을 익히는 것이 도움이 될 수 있습니다. 

 

 

Git에서 버전을 관리할 때 사용되는 3개의 공간

Git 설치를 완료했다면 먼저 Git이 어떤 방식으로 버전을 관리할 수 있는지에 대해서 알아보고자 합니다. Git에는 3개의 공간이 존재합니다. 눈에 실제로 보이는 공간인가라고 물어보시면, 눈으로 직접 볼 수 있는 공간도 있고 보이지 않는 가상의 공간도 존재합니다.

 

1. 작업 디렉터리 (working directory)

뒤에서 git init이라는 명령어를 통해서 이 디렉터리에서 이제 Git으로 관리를 시작하겠습니다라고 알려주면서 .git이라는 파일이 생성될 것입니다. 이 .git이라는 파일이 존재하는 디렉터리를 작업 디렉터리라고 합니다.

 

작업 디렉터리에서 작업한 변경 내용(수정, 삭제, 생성 등)들은 Git에서 추적을 해서 버전으로 관리할 수 있도록 해줍니다.

 

2. 스테이지 (stage)

작업 디렉터리와는 다르게 눈에 보이지 않는 공간입니다. 다음 버전이 될 수 있는 후보들이 올라가 있는 공간입니다. 쉽게 말하면 작업 디렉터리에서 작업을 한 후 git add라는 명령어로 작업들을 스테이지로 올려줄 수 있습니다. 이렇게 스테이지에 올라와 있는 변경 사항들은 다음 버전이 될 수 있는 상태가 됩니다. 이 공간이 스테이지입니다.

 

3. 저장소 (repositroy)

스테이지에 올라온 변경 사항들을 이제 버전으로 만들기 위해 Commit이라는 걸 하게 됩니다. git commit이라는 명령어를 사용하면 스테이지에 올라와 있는 변경사항들을 하나의 버전으로서 저장소에 커밋할 수 있게 됩니다. 즉, 저장소는 버전이 만들어지고 관리되는 공간입니다.

 

 

Git 명령어 사용해 보기

# git 초기 설정하기

>> git config --global user.name "{Github Username}"
>> git config --global user.email {Github Email}

위에 있는 2개의 설정 명령어를 먼저 입력해 줍니다. 잘 설정되었는지 확인하기 위해서는 git config --list라고 쳐보면 확인이 가능합니다.

 

 

# git init

내가 지금 현재 위치해 있는 디렉터리를 작업 디렉터리로 만들기 위한 명령어입니다.

해당 명령어를 입력하면 .git이라는 숨김파일이 생성되고, 이는 곧 Git으로 관리를 시작하겠다는 것을 의미합니다.

노란색으로 뭔가 hint 이런 게 많이 뜨는데 저는 초기 브랜치 설정을 안 해줘서 이렇게 뜨는 것이기 때문에 문제는 없습니다. 안 보이는 분들도 있고, 보이는 분들도 있으실 텐데 거슬리면 hint를 읽어보고 git config 설정을 해주면 됩니다.

 

 

# git add

위에서도 말했듯이 작업 디렉터리에서 발생한 변경 사항을 스테이지로 올릴 수 있는 명령어입니다. 

예시를 위해서 test.txt라는 파일을 만들어서 진행했습니다. (touch test.txt 명령어를 쓰면 비어있는 파일을 만들 수 있음)

 

 

# git status

작업 디렉터리에 어떤 변화가 있었는지 확인할 수 있는 명령어 입니다. 위에서 test.txt를 생성해 주고 git status로 한번 확인해 줍니다.

test.txt가 Git에 의해 감지된 모습

이제 git add test.txt를 통해서 생성한 파일을 스테이지에 올린 후 다시 git status를 사용해서 상태를 확인해 봅니다.

초록색으로 바뀌고 스테이지에 올라간 것을 볼 수 있는 모습

색이 초록색으로 변경되고 스테이지에 잘 올라간 것을 볼 수 있습니다. 

 

 

# git commit

이제 스테이지에 올라와 있는 test.txt를 버전으로 만들어줘야 하는데, 이때 사용하는 명령어가 git commit입니다. 

그냥 git commit이라고만 치고 엔터를 누르면 커밋 메시지를 작성할 수 있는 vi 편집기 창이 열립니다. 커밋 메시지를 작성해 주고 vi 편집기 창을 닫아주면 됩니다.

git commit 후 열린 vi 편집기창

첫 줄에는 제목을 입력하고, 한 칸 띄우고 본문을 작성해 줍니다. 그리고 :wq 명령어를 이용하여 저장하고 나와주면 커밋이 완료됩니다.

 

 

# git commit -m "커밋 메시지 제목"

만약 나는 vi 편집기창으로 들어가서 적는 게 싫다. 제목만 써서 커밋을 하고 싶다고 하시면 이 명령어를 사용하면 바로 커밋을 할 수 있습니다.

git commit -m 명령어를 이용하여 커밋

이렇게 제목만 입력해서 바로 커밋이 되는 것을 확인할 수 있습니다.

 

 

# git log

커밋은 했어. 근데 어디서 확인해라는 질문에 답이 될 수 있는 명령어입니다. 지금까지 커밋한 목록들이 출력됩니다.

git log

저는 vi 편집기로 한번, git commit -m으로 한번 했기 때문에 2개의 커밋이 존재합니다. 여기서 노란색으로 막 적혀있는 부분은 해당 커밋을 지칭하는 고유의 문자열이고, 커밋 해쉬라고 부릅니다.

 

커밋 해쉬는 커밋끼리 작업을 비교하거나 HEAD를 옮기고, 병합할 때 사용됩니다. 여기서는 무엇을 의미하는지만 알고 넘어가시면 될 거 같습니다.

 

그럼 저 하늘색 HEAD랑 초록색 master는 무엇인지 궁금하실 겁니다. HEAD는 내가 지금 어디서 작업을 하고 있는지 알려줍니다. 일반적으로는 가장 최근 커밋에 HEAD가 위치합니다.

 

master는 내가 지금 있는 브랜치를 의미합니다. 정리해 보면 HEAD -> master는 나는 지금 master라는 브랜치에서 작업을 하고 있다는 것을 의미합니다.

 

 

# git log --oneline

위에서 본 커밋 목록을 간결하게 짧은 커밋 해쉬로 볼 수 있는 명령어입니다.

git log --oneline

지금은 커밋이 2개밖에 없어서 그렇지 나중에 커밋이 많아질 때 유용하게 사용되는 명령어입니다. 짧은 해쉬를 보면 위에서 봤던 긴 해쉬의 앞부분을 줄여놓은 것이라고 알 수 있습니다.

 

 

간단하게 사용되는 Git 명령어들을 터미널에서 사용해 봤습니다. 🙋🏻‍♂️

반응형
반응형

개발에 관심이 있거나 개발을 해본 분들은 Github에 대해서 많이 들어봤을 것이다. 근데 Git은 무엇인가? 둘이 똑같은 거 아닌가?라는 생각을 할 수도 있다. 

 

필자도 개발에 처음 입문했을 때 당시 정확한 의미를 모르고 사용했을 때, Github를 줄여서 편하게 Git이라고 부르는 줄 알고 있었다. 😂

둘은 다른 소프트웨어이고, 서로 맡은 역할이 다르다.

 

 

Git이란?

버전을 관리하기 위한 소프트웨어를 말한다. 여기서 버전이라는 것은 그럼 무엇일까?

버전은 변경사항이라는 단어로 대체해서 사용할 수도 있는데, 유의미한 결과가 결과물로서 나오는 것을 버전이라고 한다.

아직도 어려운 느낌이 있다. 그럼 유의미한 결과는 무엇일까?

수정하고, 삭제하고, 새롭게 생성하고, 버그를 수정하는 등의 행위들이 모두 유의미한 결과가 될 수 있다.

 

즉, 정리해 보면 Git이란 유의미한 결과(변화)들이 최종적인 결과물로서 나오는 과정을 관리하기 위해서 사용되는 소프트웨어이다. 정리를 해봤지만 아직도 말이 조금 어려운 것 같다.

 

쉽게 말해서 내 컴퓨터에서 작업(수정, 삭제, 생성 등)을 했을 때, Git에서 작업 내용을 버전에 따라서 관리할 수 있도록 기능을 제공한다. 내가 원하는 변경 사항들만 스테이지에 올린 후 하나의 버전으로 만들 수 있고, 지금까지 작업했던 내용이 마음에 안 들면 원하는 버전까지 되돌아가는 등의 기능도 제공해 준다. 자세한 부분은 Git을 실습해 보면 크게 와닿을 수 있을 거라고 생각한다.

 

 

 

그럼 Github는 무엇인가?

Github는 원격 저장소 호스팅 서비스라고도 불린다. 말이 조금 어렵기 때문에 이렇게 바꾸어보자. Github는 인터넷상 어딘가에 있는 저장소에서 Git으로 관리한 프로젝트를 호스팅 해주는 서비스이다.

 

Git으로 관리한 프로젝트를 호스팅 해준다는 의미가 무엇일까? Git을 사용하면 내 컴퓨터(로컬)에서 편리하게 프로젝트를 관리할 수 있다. 하지만 이 프로젝트는 내 컴퓨터에 있기 때문에 나만 볼 수 있다. 근데 만약 다른 사람들에게 내가 Git으로 관리한 프로젝트를 공유하고 싶다면 어떻게 해야 할까라는 고민을 해보면 해답을 얻을 수 있다.

 

첫 번째 방법은 이 프로젝트 파일 자체를 다른 사람에게 USB나 외장하드를 통해서 전달해 주는 방법이다. 이것이 과연 효율적일까? 만약 내 프로젝트를 100명에게 줘야 한다면 USB를 100개를 사서 파일을 공유하던가 아니면 USB 1개를 사서 100번을 돌아다녀야 한다. 정말 비효율적인 방법이라고 할 수 있다.

 

두 번째 방법은 이 프로젝트를 인터넷상 어딘가에 올려서 다른 사람들도 볼 수 있도록 하는 것이다. 우리가 일상에서 사용하는 네이버 클라우드나 구글 클라우드를 생각해 보면 이해하기 쉬울 것이다.

 

Github는 두 번째 방법을 간편하게 이용할 수 있도록 호스팅 서비스를 제공해 준다. Github에 대해서 다시 정의해 보면 Git으로 관리한 내 컴퓨터에 있는 프로젝트를 인터넷상 어딘가에 저장할 수 있도록 자리를 빌려주는 서비스(호스팅)라고 할 수 있다. 

 

그럼 그냥 공유 드라이브에 프로젝트 파일을 올리고 다운받아서 사용하면 되는 거 아닌가라는 의문이 들 수도 있다. Github에서는 단순하게 파일만 추가하고, 내려받는 것이 아니라 이 프로젝트를 진행하면서 생긴 변화 과정(버전)에 대한 정보(History)도 저장이 됩니다.

 

즉, 내가 원하는 버전으로 돌아갈 수도 있고 되돌릴 수도 있다는 것입니다. 그래서 개발자들이 협업을 할 때 Github를 많이 사용합니다. Git과 Github에 대해서 잘 학습해 두는 것이 나중에 팀원들과 협업할 때 유용하게 작용할 수 있을 거라고 생각합니다.

 

 

다음 게시물에서는 이 Git에서 기본적으로 사용하는 명령어와 Git을 터미널에서 어떻게 사용하는지에 대해서 기록해 볼 것이다. Git을 터미널에서 사용할 때는 CLI 명령어도 같이 사용되기 때문에 이와 관련된 내용을 같이 학습하고 넘어가는 것이 좋다.

반응형

'🧑🏻‍💻 Dev > Git & Github' 카테고리의 다른 글

[Git] Git 사용해보기 (Git 명령어)  (0) 2023.03.24
[Git] CLI 명령어 사용하기  (4) 2023.03.22
반응형

Git을 터미널에서 원활하게 사용하기 위해서 필요한 CLI 명령어에 대해서 먼저 알아보는 시간을 가져보자.

 

CLI 명령어

CLI란 Command Line Interface의 약어로 우리가 사용하는 검은색 화면의 터미널을 말한다. CLI 명령어는 검은색 화면에서 내가 직접 칠 수 있는 글자(명령어)라는 의미이다.

 

Git을 다뤄보기 전에 CLI 명령어에 대해서 알아보는 시간을 가져보자.

 

 

# pwd

내가 현재 위치해 있는 경로를 확인할 수 있는 명령어이다.

우리가 폴더에서 폴더를 클릭하면서 옮겨다닐 때는 눈에 다 보여서 상관이 없지만, 터미널에서 글자만 가지고 이 폴더 저 폴더를 옮겨 다니다 보면 내가 지금 어디에 위치해 있는지 헷갈릴 때가 있다. 이럴 때 사용해 주면 유용하게 쓰일 수 있다.

 

 

# ls

현재 경로에 존재하는 파일, 디렉터리들의 목록을 출력할 수 있다.

 

 

# ls -a

현재 경로에 존재하는 파일, 디렉터리들의 목록을 출력하는데, 추가적으로 숨길 파일까지 모두 출력해준다.

위에 보면 .이 붙은 파일들이 있는데, 이 파일들이 모두 숨김 파일들이다. 우리가 클릭해서 폴더로 들어가면 볼 수 없게 숨겨져 있다.

 

 

# cd {이동하고자 하는 경로}

이동하고자 하는 경로 또는 디렉터리를 입력해 주면 된다. 위에 ls -a의 결과로 나온 화면 중에서 만약 IdealProjects로 이동하고 싶다면 아래와 같이 치면 된다.

pwd 명령어로 바로 현재 경로까지 확인해 봤다.

 

 

# cd ..

상위 디렉터리로 이동할 수 있는 명령어이다. 여기서 상위 디렉터리란 내가 지금 /Users/kimhunsope/IdealProjects에 있을 때, /Users/kimhunsope이 현재 나의 상위 디렉터리를 말한다.

cd ..을 사용 후에 pwd 명령어로 확인해봤을 때, 정상적으로 상위 디렉터리로 이동된 것을 볼 수 있다.

 

 

# cd .

현재 디렉터리로 이동할 수 있는 명령어이다. 이 명령어는 현재 디렉터리로 이동하기 때문에 쳐도 아무 변화도 일어나지 않습니다.

 

 

# cd ~

Home 경로로 이동하는 명령어이다. Home 경로는 뭔데? 각자 컴퓨터마다 Home 경로가 있다. 보통 터미널을 처음 켰을 때, 처음 위치한 곳이 Home 경로이다. 이 경로는 변경하지 않는 것이 좋다고 한다.

 

처음 pwd를 했을 때인 /Users/kimhunsope이 내 Home 경로일 것이다. 한번 다른 경로로 이동했다가 Home으로 돌아와 보자.

 

 

# touch {파일 이름}

{파일 이름}을 이름으로 가지는 비어있는 파일이 하나 생성된다. 예시 코드로 test.txt라는 비어있는 텍스트 파일을 하나 만들어보자.

test.txt라는 파일이 새로 생성된 것을 볼 수 있다.

 

 

# cat {파일 이름}

{파일 이름}을 이름으로 가지는 파일의 내용을 출력해 주는 명령어이다. 위에서 새롭게 만든 test.txt 파일의 내용을 한번 출력해 보자.

몇 번을 쳐봐도 아무것도 출력되지 않는다. 왜냐하면 우리가 touch로 만들어준 test.txt는 비어있는 텍스트 파일이기 때문이다. 그럼 이 test.txt 파일에 내용을 추가해 보자.

 

 

# vi {파일 이름}

{파일 이름}을 이름으로 가지는 파일의 내용을 수정해 줄 수 있는 vi 편집기 창이 열린다. vi 편집기는 터미널 상에서 내용을 수정할 수 있도록 해주는 편집창이다. 

 

vi 편집기를 사용하기 위해서는 아래 2가지 정도의 내용은 알고 시작해야 한다.

 

1. 내용을 입력할 수 있는 모드

내용을 입력하기 위해서는 vi 편집기 창으로 가서 알파벳 i 또는 a를 누르면 아래에 INSERT라는 메시지가 뜨고 입력을 할 수 있는 모드로 변경된다.

이때부터 이제 vi 편집기에 내용을 입력할 수 있다.

 

2. 명령을 입력할 수 있는 모드

입력이 모두 완료됐으면 이제 저장을 하고, vi 편집기에서 나가야 한다. 이때 명령어를 사용해서 진행하는데, 이 명령어를 치기 위한 모드로 가기 위해서는 esc를 눌러주면 된다.

 

esc를 누르면 -- INSERT --라는 메시지가 사라지고 명령을 입력할 수 있는 모드가 된다. 이때 저장하는 명령어는 :w이고, 편집기에서 나가는 명령어는 :q이다. w는 write의 약자고, q는 quit의 약자이다. 기억하기 더 쉬울 것이다.

 

추가로 저장을 하고 바로 편집기에서 나가기 위한 명령어는 :wq이다.

 

이제 test.txt에 안녕하세요라는 내용을 입력하고 저장해 보자.

알파벳 i를 누르고 INSERT 모드에서 '안녕하세요.'를 입력했다. 그리고 항상 저장할 때는 엔터를 한 번 더 치고 나서 저장하는 것이 좋다. 이제 :wq 명령어로 저장을 하고 나가보자.

저장까지 모두 완료했다. cat 명령어로 우리가 저장한 내용이 잘 출력되는지 확인해 보자.

내용이 잘 출력되는 것을 확인할 수 있다.

 

 

# rm {파일 이름}

{파일 이름}의 이름을 가지는 파일을 삭제할 수 있다. test.txt 파일을 삭제해 보자.

두 번째 ls 명령어의 결과에서는 test.txt 파일이 사라진 것을 볼 수 있다.

 

 

# mkdir {디렉터리 이름}

{디렉터리 이름}을 이름으로 가지는 비어있는 디렉터리를 생성하는 명령어. 여기서 디렉터리란 윈도우에서는 폴더라는 말이 더 익숙할 수도 있다. mkdir이란 make directory의 약자이다. 외우기 쉽겠다. my_dir이라는 새로운 디렉터리를 만들어보자.

새로운 디렉터리가 생성된 것을 볼 수 있다. my_dir는 디렉터리이기 때문에 해당 디렉터리로 cd 명령어를 통해서도 들어갈 수 있다. 직접 해보시길 바란다.

 

 

# rmdir {디렉터리 이름}

생성도 있으면 삭제도 있어야 한다. {디렉터리 이름}을 이름으로 가지는 디렉터리를 삭제하는 명령어이다. 하지만 나중에 해보면 알 수 있지만 비어있는 디렉터리가 아니라면 rmdir을 이용해서 삭제할 수 없다. 이에 대한 내용은 다음에 알아보도록 하자. 앞서 만든 my_dir을 삭제해 보자.

두 번째 ls 명령어의 결과에서는 my_dir가 사라진 것을 볼 수 있다. 

 

 

# rm -rf {디렉터리 이름}

위에서 의문이었던 점을 여기서 해결할 수 있다. 이 명령어는 비어있지 않는 디렉터리도 강제로 삭제해 주는 명령어이다. 그렇기 때문에 사용할 때는 반드시 주의가 필요하다. 해당 명령어로 삭제하는 디렉터리는 복구 못한다고 생각하는 게 편하다. 사용할 때는 주의하자!

 

my_dir이라는 디렉터리를 하나 만들고, my_dir 안에 second_dir라는 디렉터리와 test.txt라는 파일을 한 번 생성한 뒤에 my_dir을 강제로 삭제해 보자.

생성하고, 삭제하는 모든 과정을 캡처해 봤다.

 

빨간색 네모 부분이 my_dir을 생성하고, my_dir 안으로 들어가서 second_dir과 test.txt를 생성하는 과정이다.

 

파란색 네모 부분이 my_dir을 삭제하는 부분인데, 비어있지 않은 디렉터리는 rmdir 명령어로 삭제되지 않는 것을 보여주기 위해서 한번 삭제해 봤다. 해당 디렉터리가 비어있지 않다는 메시지와 함께 삭제되지 않는다.

 

그리고 바로 rm -rf 명령어로 my_dir을 정상적으로 삭제해봤다.

 

다음 게시글에서는 Git과 Github가 무엇이 다르며 각각 어떤 기능을 하는지에 대해서 알아볼 생각이다.

반응형

+ Recent posts