안녕하세요 개발적금입니다.
오늘은 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 |
---|