본문 바로가기
Git , Github

[Mac] Git 설치방법 및 기본세팅 그리고 commit과 branch에대해 알아보자

by 개발적금 2022. 11. 24.

안녕하세요 개발적금입니다.

오늘은 Git에대해 조금 알아보겠습니다

** Mac 기준으로 작성하였습니다 **

 


목차

 

1. Git 설치방법 및 기본세팅

 

2. Git 기본구조 및 사용방법

 

3. Commit 과 Branch에 대해

 


1. Git 설치방법 및 기본세팅

 

우선 설치하기전에 Git이란? "소스형상관리툴" 이라고도 불리며

개발자들이 서로 간 코드를 공유하여 협업을 할수있도록

도와주는 역할을 하고있습니다. Git 말고도 SVN 등등.. 몇가지가

더있습니다.

 

** Git 과 Github은 다른개념이니 유의하여 알아두도록 합시다**

 

Git은 개발자에게있어 매우 중요한 개념입니다. 사무직 직원이

Excel을 다루지 못하는거와 비슷하다고 볼수있습니다. 또한 다루지

못하게되면 서로 협업도 어려워지기때문에 잘 알아두어야합니다.

 

1-1 Git 설치방법

 

Terminal을 실행하여 " git --version "을 타이핑하여 설치가

되어있는지 , 버전이 몇인지 우선 확인을 합니다.

저는 " git version 2.37.1 (Apple Git-137.1) " 라고 나옵니다

(2.38.X 버전으로 업그레이드 하겠습니다)

 

우선 " which git " 을 통하여 git의 설치되어있는 위치를 확인합니다.

(저는 " /usr/bin/git "에 설치되어있습니다. 여기있는 git을

homebrew에 설치하고싶어서 옮겼습니다.)

 

1) " brew update " (일단 brew를 업데이트 해주시고)

2) " brew install git " (git 을 install 해줍니다)

 

** 여기서 에러가 발생하실수 있습니다. opt안에 homebrew가 없을수 있습니다 **

** homebrew가 없을경우

/bin/bash -c "$(curl -fsSl http://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

를 실행해줍니다 **

 

3) 정상적으로 설치가 되면 경로는 " /opt/homebrew/bin /usr/bin " 가 되어야합니다

( 저는 연습용으로 했기때문에 /usr/bin 앞에 /opt/homebrew/bin을 추가해주었습니다

이부분은 저도 깊게 알지못해서 다른블로그를 참조하시면 좋을것 같습니다.)

 

1-2 기본설정

 

Terminal을 열어줍니다. 기본설정을 하기전에 Terminal안에서의 명령 및 실행들은

완료되었다 , 성공하였다 라는 메세지를 남겨주지 않기때문에 확인을 하면서

가시는게 좋습니다.

 

1) 이름 설정

 

git 에서 사용할 name을 작성해줍니다.

git config --global user.name "사용자명(영어추천)"

-> git config --global user.name 명령어를 통해 잘 입력되었는지 확인!

 

2) 이메일 설정

 

git 에서 사용할 email을 작성해줍니다.

git config --global user.email "사용자이메일"

-> git config --global user.email 명령어를 통해 잘 입력되었는지 확인!

 

3) 엔터호환 설정

 

git 에서 엔터 호환에대한 설정을 해줍니다.

git config --global core.autocrlf input

-> git config --global core.autocrlf 명령어를 통해 잘 입력되었는지 확인!

 

여기까지 기본설정은 되었습니다.

 

1-3 Workspace(작업폴더)

 

프로그램을 사용하기 전에 Workspace를 만드는거는 기본이죠

저는 " /Users/사용자명/Documents/lecture_git " 으로 

lecture_git 폴더를 만들었습니다.

 

Terminal을 실행하여 작업폴더까지 경로를 설정해줍니다.

(cd /User/사용자명/Documents/lecture_git)

 

그리고 명령어 " code . " 을 실행해주시면 VSCode가 실행됩니다.

** Path(경로설정)을 잘못하였으면 , 실행이 안될수가 있습니다 **

** VScode에서 Command + Shift + P 를 누른 후 Shell을 입력

하시면 Shell Command : install 'code' command in PATH 가 나오는데 설치하면 됩니다 **

 

항상 " code . "을 실행하시고 왼쪽에 저장경로를 잘 확인하셔야합니다.

 

마지막으로 최상단 메뉴에서 " 터미널 -> 새 터미널 "을 누르시면 

linux로 터미널이 열리게됩니다. 이제 시작합니다!

 


 

2. Git 기본구조 및 사용방법

 

우리는 Git을 설치하긴 했지만 사용하지는 않았습니다.

Git을 초기에 실행하는 명령어는 init입니다.

 

- git init : git 실행하기 명령어입니다. 

-> 실행하고 ls -al 하시면 " .git "이 생성된게 보입니다.

-> " .git " 폴더는 나의 히스토리들이 모두다 저장될것입니다

-> 정말 중요한 폴더이니 소중히 다뤄줍시다 ( 중요해서 숨김파일로 표시되어있음 )

 

- git status : git 폴더가 작동 되는지 , 현재 git 의 상태 , 문제는없는지 체크해줌

-> 현 git의 상태를 알려주는 명령어로 저는 앞으로 작업할때에는 수시로

-> git status를 사용하여 상태를 확인할것입니다.

 

- # .gitignore : 파일을 추적(관리)하고 싶지 않을때 , " .gitignore 파일을 생성하고"

-> 그안에 추적(관리)하고싶지 않을 파일명을 작성하고

-> git status 하면 파일명이 빠지게된다.

-> 밑에서 추적(관리)에대해 한번더 설명하겠습니다(기본구조에 대해 알아야함)

 


 

Git의 작업 순서도(저장되는 구조)

 

(1) Working directory(작업폴더) -> (2) Staging area(대기소) -> (3) repository(.git 폴더)

 

3가지로 나뉘어서 이동하며 저장합니다. 하나씩 설명하겠습니다

 

(1) Working directory(작업폴더)

 

   -> Working directory의 최종목표는 , repository(.git)으로 가는것입니다.

   -> Working directory 안에는 두가지의 영역으로 분리가 됩니다.

   -> 1-1) Tracked (추적)

        =====> 한번이라도 .git에 의해 관리 된적이 있는 파일을 말합니다.

 

    -> 1-2) UnTracked (추적되지않는)

        ======> 한번이라도 .git에 의해 관리된적 없는 파일을 말합니다.

 

만약 우리가 Working directory 즉 우리의 작업폴더 안에서 어떠한 파일을 수정했다고 하면,우리는 그 수정된파일을 repository로 보내고 싶어합니다(.git에서 관리하고싶으니까)그런데 한번에 옮길수는 없고 꼭 거쳐야 하는곳이 Staging area(대기소)입니다

 

# git add [파일명] : 파일을 대기소로 이동시킵니다.

# git add . :  . 을 사용하여 저장된 모든파일을 대기소로 이동시킵니다.

 

이동 시킨후 git status의 명령어를 사용하여 확인하시면 대기소에 저장된것을

확인할수있습니다.

 

(2) Staging area(대기소)

 

     -> 예를들어 제가 develop.json 파일을 작업하다가 저장하였습니다.

     -> 이 파일을 저장하려고 " git add develop.json " 을 하면 바로 repository로 가지않고

     -> Staging area(대기소)로 오게됩니다. " git status " 를 사용하여 확인가능합니다

     -> 중간다리 역할을 한다고 생각하시면 됩니다!

     -> 대기소에서 정말 repository로 보내고싶으시면

     -> " git commit -m "commit에 대해 설명 및 멘트적어놓기"

     -> repository(.git)로 보내는것을 commit 커밋한다 라고 합니다

     -> git을 commit하겠다 -m(메세지를남기면서) " 메세지 내용 "

     -> 이렇게하시면 commit 완료입니다.

   


     -> 만약에 실수로 , " git add develop.json "을 사용하셨다면

     -> " git rm --cached develop.json " ===> add를 잘못하였을때 ,

     -> Staging area -> Working directory로 이동하게됩니다!

 


   (3) repository(.git)

 

     -> commit 한 내용을 보고싶으시면(git graph로 보는게 편함)

     -> git log 를통해 확인이 가능합니다.

    


실제 예제들(파일들)을 만들어서 git 명령어에 익숙해지는게

빨리배우는 지름길 같습니다. 배웠던 명령어들중 많이사용할것 같은것들을

정리해보겠습니다.

 

- git init : git 실행하기

- git status : git의 상태 , git이 정상작동되고있는지 확인

- #.gitignore : Tracked되고싶지 않을때 , 폴더를 만들어 리스트를 작성한다.

- git add [파일명]: 수정 및 추가된 내용들(Working directory)을 Staging area(대기소)로 이동시켜줌

- git add . : 수정된 모든파일을 Staging area로 이동시켜줌

- git rm --cached [파일명] : git add로 넘긴 파일을(Staging area) 다시 취소하고싶다(Working Directory)

-git commit [파일명] : Staging area에 있는 값을 repository로 커밋(저장)하고싶다.

-git commit -m "메세지" : 커밋한 내용의 이력(수정된 부분)을 남기고싶다.

         -> 이 메세지에는 개발자들끼리 구분하기위해 정해놓은 국룰?같은게있는데 소개해드리겠습니다.


- feat : 새로운 기능 추가

- fix : 버그 수정

- docs : 문서수정

- style : 코드 스타일 변경(중괄호..세미콜론..)

- design : UI 변경

- test : test 코드작성 , 리팩토링

- refactor : 리팩토링

- rename : 파일명 수정

- remove : 파일 삭제

 

ex) git commit -m "fix: test.json 데이터베이스 내용 수정"


 

- git reset --hard [커밋해시값] : 해시값 이전의 커밋들을 리셋(통째로 잘라버린다)

  -> 복구시키는 방법은?

  -> git reflog 를 사용하여 히스토리를 보고 삭제된 녀석의 앞에 해쉬값을 복사한다.

  -> git reset --hard [해시값]  : 복구가 됩니다.

 

- git revert [해쉬값] : 해쉬값을 되돌린다 라고 이해하면됩니다. reset은 통째로 

  -> 자른다는 느낌이면 , revert는 되돌리다 라는 의미로 그 현재까지 했던것은 그대로

  -> 두고 과거로 돌아가고싶었던때의 작업을 맨위로 되돌려 올립니다.

  -> git revert를 사용하고 중간에 취소하고싶으시면 

  -> git revert --abort , 계속 진행하고싶으시면 git revert --continue

 


 

3. Commit 과 Branch에 대해

 

Commit은 실제 저장된 , 내가 git add [파일명] 혹은 git add . 을 통해

Staging area안에 넣어 둔 자료를 

git commit [파일명] 혹은 git commit -m "메세지" 를 통해 

실제 " .git " 폴더에 저장 한것입니다.

 

그런데 문제가 발생합니다. 처음에 설명할때에, [git은 "소스형상관리툴" 이라고도

불리며 개발자들이 서로 간 코드를 공유하여 협업을 할수있도록

도와주는 역할을 하고있습니다] 라고 설명을 하였습니다. 

 

다수의 사용자들이 같은 내용의 작업을 한다고 가정을 할때

예를들어 작업이 A B C D E F 순으로 해야한다고 합시다.

그리고 확실하게 작업이 된곳이 A B C 라고 가정할시에,

확실하게 커밋된 부분 C 부분에서 Branch(나뭇가지)를 뻗어나가서

D E F 를 만들기 위해 각자 작업을 합니다. 왜냐하면 중간에

에러가 날수도있기때문이죠, 확실하게 되는부분 C까지만 커밋한 후

다른줄기로 뻗어나가(실제 C에 영향이 안가도록) 작업한 후

D를 만들어 확실하게 작동이되면 D도 커밋을 합니다.

 

설명이 길어졌네요.. Branch는 나뭇가지라고 생각하시면 편합니다.

그럼 문법에 대해서 알아보도록 하겠습니다

 

- git branch [브랜치이름] : [브랜치이름]으로 브랜치를 만듭니다.

  ---> git branch development => development라는 브랜치를 만듬

 

- git branch : branch 목록을 볼수있다 ( * 표시가 있는부분이 HEAD입니다

* 표시가 있는부분을 기준으로 branch를 만드시면 그 branch로 줄기가 뻗어나감)

 

- git switch [브랜치이름] : * 표시를 바꿔줍니다(바라보는 방향을 바꾼다는의미)

 

- git switch -c [브랜치이름] : [브랜치이름]을 생성하는 동시에 바라보게합니다 

 

- git branch -d [브랜치이름] : [브랜치이름]을 지웁니다 ( 단 , 바라보고있는 방향이

[브랜치이름]일경우에 에러가 발생합니다! 마치 윈도우로치면 폴더가 열려있는데

그폴더를 지운다는 느낌)

 

- git branch -m [기존브랜치명] [바꿀브랜치명] : 브랜치의 이름을 바꿉니다.

 


 

오늘은 git에 설치방법과 기본적인 내용들을 배워봤습니다.

처음 접하는거라 어렵지만 많이 타이핑해보시고 익숙해지면

괜찮아 질것입니다. 저도 익숙해질때까지 파일들을 만들면서

수정하고 , 커밋해보고 명령어들에 익숙해져야겠습니다.

감사합니다.

'Git , Github' 카테고리의 다른 글

Git(Branch 합치기) , Github 기본설정 및 가져오기  (0) 2022.11.24