[Git] git 사용법 튜토리얼1 - 초기화, 스테이징, 커밋, 되돌리기
- -
git 사용법 튜토리얼 시리즈
2 깃 브랜치(branch) 같은 파일로 여러 버전 만들기
깃(Git) 이란?
깃은 버전 관리(형상 관리)를 할 수 있는 툴 중 하나이며, 깃은 소프트웨어를 개발하는 기업의 핵심 자산인 소스코드를 효과적으로 관리할 수 있게 해주는 무료 공개 소프트웨어 입니다.
깃의 큰 특징 중 하나는 분산형 관리 시스템이라는 점입니다. 소스코드를 여러 개발 pc와 저장소에 분산해서 저장 가능하며, 그렇기 때문에 서버에 장애가 발생해도 로컬 저장소에 커밋을 할 수 있습니다. 또한 로컬 저장소들을 이용하여 중앙 저장소의 복원도 가능합니다.
깃허브와 깃의 차이?
깃은 커피 깃허브는 카페. 깃은 깃 레포지토리라고 불리는 데이터 저장소에 소스코드나 리소스를 넣어서 이용하고, 이런 깃 레포지토리를 인터넷 상에서 제공하는 호스팅 서비스가 바로 깃허브 입니다.
왜 깃(Git)을 사용해야 하는가?
개발자들은 작업물을 컴퓨터 특정 폴더에 넣어 놓게 됩니다.
작업을 하여 생성된 여러 리소스들이나 소스코드를 폴더 안에 저장하며 수정하고 업데이트, 삭제 등을 할텐데요. 내가 실수를 하였거나, 전에 수행했던 작업들과 뭐가 바뀐건지 헷갈릴 때 언제든 폴더 내 상태를 이전으로 되돌릴 수가 있습니다. ctrl Z 수준이 아니라 아예 저장되어있는 모든 폴더의 상태를, 1시간전, 어제, 엊그제로 혹은 맨처음으로 되돌릴 수 있게 됩니다. 또는 과거 작업 상태로 돌아가서 필요한 것만 현재 작업물에, 다른 과거 작업물에 적용할 수도 있습니다.
만약 깃허브를 사용하지 않고 로컬 컴퓨터의 폴더 안에서만 작업을 하게 된다면, 시점별 폴더를 압축해서 여러개를 만들어놓아야 하겠죠.
코딩을 하다보면 메인 작업에서 해보기에는 위험이 있는 혹은 단순한 테스트 등을 진행하거나, 여러 버전을 만들어봐야 하는 경우가 굉장히 많은데요. 깃이 없다면 폴더를 통째로 따로 복사해서 각각에서 따로 작업을 해야할 것입니다. 이런 불편한 점을 없애고 여러 버전을 넘나들며 작업을 할 수 있다는 큰 장점이 있습니다. 또 깃은 같은 프로젝트를 여러 사람이서 협업하는 것도 가능하게 해줍니다.
● 튜토리얼1
: 처음 시작하기, 수정 변경 사항 반영하기
튜토리얼을 실행하기 전에 git을 다운로드 받아주세요!
IDE는 현재 사용하고 있는 곳에서 깃을 적용할 수 있고, 저는 평소 비주얼스튜디오 코드를 사용하고 있으니 비쥬얼스튜디오 코드 기준으로 설명드리겠습니다.
1. 폴더생성
원하는 곳에 먼저 테스트를 진행할 폴더를 생성해줍니다.
2. IDE로 생성한 폴더를 열고, 몇 개의 파일을 생성합니다.
저는 처음 폴더명을 gitTest라고 지었고 그 폴더 안에 두 개의 파일 cat, mouse를 생성하였습니다.
3. 명령창 띄우기
vs code를 사용하시면 ctrl + ` 단축키를 누르면 자동으로 터미널이 열립니다.
터미널을 사용하는 것 외에도 git bash를 사용할 수 있습니다.
git bash는 깃의 터미널이라고 생각하시면 됩니다.
원하는 폴더에서 오른쪽 마우스를 누른 후 "Git Bash Here" 클릭.
이렇게 명령창이 띄워집니다. 여기에 깃 명령어를 써서 사용해도 됩니다.
다른 폴더로 이동할 때는 "cd 폴더명" 명령어를 사용해주시면 됩니다.
4. 초기화
git init
git config --global user.name "본인의깃닉네임"
git config --global user.email "본인의깃이메일"
※ 이전 명령어 복사 ↑ 키
git status
git status는 현재 상태를 확인하는 깃 명령어 입니다.
아직 아무것도 하지 않은채 상태를 확인해보면, Untrackted files라고 뜨는데, 아직 깃이 이 파일들을 관리하고 있지 않다는 의미가 됩니다.
5. 변경사항 더하기 : git add
git add명령어로 커밋할(깃에 반영할) 내용들을 추가할 수 있으며 이를 스테이징 이라고 합니다.
생성한 두 파일 cat과 mouse를 이제 깃에 반영해보도록하겠습니다.
git add -A
add를 하게되면 커밋될 내용들이 뜨게됩니다.
※ 참고
git add --all
git add .
git add *
add 뒤에 붙는 -A 옵션은 모든 변경사항을 반영하겠다는 의미가 됩니다. --all . * 옵션 모두 모든 변경사항을 반영한다는 의미입니다. 하지만 이렇게 모두 add하는 작업은 권장하지 않습니다. 중요한 설정파일과 IDE에서 제공하는 파일까지 모두 add할 필요가 없기 때문입니다. 이런 파일들은 .gitignore로 관리해야 하지만, 그냥 그때그때 반영해야 할 파일들만 add해주는 것을 권장합니다. 파일명을 일일이 지정하지 않아도 되고 한번에 모두 반영할 수 있어서 편해보이지만 어떤 내용을 커밋에 포함되는지 완전히 감춰진다는 점에서 정말 좋지 않은 옵션입니다.
예를 들어 dog파일을 생성하고 이를 반영합니다. git add dog 이후 커밋을 할 때 메세지를 이용해 git commit -m "add dog file" 이런식으로 기록을 남겨놓을 수 있는데, git add * 해버리면 어떤 내용을 커밋에 포함되는지 감춰지기 때문에 좋지 않습니다.
커밋 실수를 방지하는 가장 좋은 방법은 add와 commit과정에서 어떤 내용이 추가되는지 계속 확인하는 것입니다.
이를 위해 -p옵션을 사용하는 것이 좋은데 이것에 대해서는 나중에 설명하도록 하겠습니다.
6. 변경사항 반영하기 : git commit
git commit -m "원하는메세지"
이제 추가한 내용들을 깃에 반영해봅니다.
커밋을 한 내용들은 이제 깃이 추적하며 버전관리를 할 수 있도록 도와줍니다. 깃은 반영된 소스코드, 리소스 등을 24시간 내내 추적해줍니다.
7. 반영사항 확인하기 : git log
git log는 변경사항 반영한 사항들의 기록을 확인할 수 있습니다. 이를 이용해서 이전 단계로 되돌리거나 버전관리를 할 수 있는 것입니다.
git log
방금 전에 커밋한 내용이 보이게 됩니다. 노란 줄의 commit 뒤에 나온 번호는 상태의 일련번호이고 이 번호를 통해 분기할 수 있게 됩니다.
8-1. 이전 상태로 되돌리기 : git reset
git reset 커밋번호여섯자리 --hard
git log를 통해 확인한 커밋번호의 앞 6자리를 이용해 이전 상태로 되돌릴 수 있습니다.
먼저 확인을 위해 dog라는 파일을 추가로 생성해봅니다.
그리고, add commit을 통해 이를 반영합니다.
git add dog
git commit -m "add dog file"
이제 dog 파일을 생성하기 이전 상태로 되돌려 봅시다.
git reset a6f30a --hard
a6f30a 이전의 로그들이 다 지워지고 a6f30a 상태로 되돌아 옵니다.
8-2. 이전 상태로 되돌리기 : git revert
이전 상태로 되돌리는 방법에는 두가지가 있습니다. 편의를 위해서 이전 상태로 되돌아간 것을 과거로 돌아갔다라고 하고, 이전 상태를 다시 그 전 상태로 되돌린 것을 미래로 갔다고 하겠습니다. reset은 로그를 아예 지워버리기 때문에 미래로 되돌릴 수 없습니다. 한마디로 과거로 돌아갔다가 다시 미래로 갈 수가 없는 것이죠. 하지만 revert는 로그를 덮어쓰는 것이므로 다시 미래로 되돌릴 수가 있습니다.
예를 들어 1단계에서 dog파일을 생성하고 add, commit 한 후, 2단계에서 cat파일을 생성하고 add, commit하였다고 가정해보겠습니다. 1단계에서 커밋 번호가 111111이고 2단계에서 커밋 번호가 222222이라면,
git reset 111111 --hard를 하게되면, 로그에는 111111의 커밋 상태만 남게되어 다시 222222의 상태를 가질 수 없습니다. 하지만 git revert 222222을 하게되면 새로운 커밋상태 333333이 생성되고, 111111과 동일한 상태를 가지게 되어, 222222상태로도 되돌아갈 수 있게됩니다.
git revert 커밋번호여섯자리
테스트를 위해 마찬가지로 cat, mouse 파일만 있던 상태에 dog파일을 추가하고 add, commit을 합니다.
이후, 다시 cat, mouse만 있던 상태로 만들려면 git revert d61bb9를 입력해줍니다.
reset을 사용할 때는 사용한 커밋번호의 상태로 되돌려주지만
revert는 사용한 커밋번호의 상태를 삭제해줍니다.
git revert d61bb9
이렇게 vi에디터가 열리게 되는데 저장하고 닫으려면 :wq를 입력해주면 됩니다.
이렇게 하면 dog파일은 삭제되고 처음에 cat, mouse 파일만 있던 상태로 돌아옵니다.
revert를 하면 기존의 로그 위에, revert한 로그가 덧붙여집니다.
오늘은, 깃을 통해 변경사항 반영하는 방법, 스테이징, 되돌리기 등에 대해 알아보았고,
다음 시간에는 branch를 이용해 여러 버전으로 소스 관리하는 방법에 대해 알아보겠습니다.
깃 튜토리얼 시리즈
깃의 장점, 사용 이유, 기초 사용법
2020/06/19 - [SW개발/Framework Library] - [Git] git 사용법 튜토리얼1 - 초기화, 스테이징, 커밋, 되돌리기
깃 브랜치 사용법
2020/06/22 - [SW개발/Framework Library] - [Git] git 사용법 튜토리얼2 - 깃 브랜치(branch) 같은 파일로 여러 버전 만들기
깃 허브 연동, 협업
2020/06/22 - [SW개발/Framework Library] - [Git] git 사용법 튜토리얼3 - 깃 허브와 연동하기
깃 브랜치 주고받기, 충돌 다루기
2020/06/23 - [SW개발/Framework Library] - [Git] git 사용법 튜토리얼4 - 브랜치 원격에서 다루기
'👀 etc...' 카테고리의 다른 글
[Git] git 사용법 튜토리얼5 - PR (Pull Request) & Issue (2) | 2021.01.04 |
---|---|
[Git] git 사용법 튜토리얼4 - 브랜치 원격에서 다루기 (2) | 2020.06.23 |
[Git] git 사용법 튜토리얼3 - 깃 허브와 연동하기 (2) | 2020.06.22 |
[Git] git 사용법 튜토리얼2 - 깃 브랜치(branch) 같은 파일로 여러 버전 만들기 (1) | 2020.06.22 |
[Git] .gitignore 자동 생성 및 적용하기 (0) | 2020.05.15 |
소중한 공감 감사합니다