2022. 11. 23. 21:32ㆍGit & GitHub
목차 |
1. Git |
2. Git의 사용 2.1. Workspace 정의 2.2. 초기설정 2.2.1. .git과 .gitignore 2.3. Git 작업 순서도 2.4. 명령어 2.4.1. Reset과 Revert 2.4.2. Branch |
1. Git
다른 사람들과 작업을 공유하거나 혹은 특정 하나의 파일을 동시에 처리한다면 어떨까?
GIt을 사용하면 위와 같은 작업이 가능하다.
Git은 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템이다. 참고로 Git은 리눅스의 창시자인 리누즈 토발즈에 의해 개발되었다.
GIt의 기능 및 특징은 다음과 같다.
- 소스코드 관리에 주로 사용한다.
- 어떠한파일 집합의 변경사항을 지속적으로 추적(Tracked)하기 위해 사용될 수 있다.
- 분산 버전 관리 시스템으로서 빠른 수행 속도에 중점을 두고 있다.
- 데이터 무결성, 분산, 비선형 워크플로를 지원한다.
2. Git의 사용
2.1 workspace 정의
Git을 사용하기에 앞서 사용할 디렉토리를 생성해보자. (참고로 git 폴더는 내가 만든 임의의 폴더이다.)
$ cd /mnt/c/Users/82103/Documents/git
# 내 문서의 git 디렉토리까지 이동한다.
$ code .
# 현재 디렉토리의 Visual Studio Code를 실행한다.
2.2 초기설정
Git를 사용하기 위해서는 초기설정이 필요하다. 아래의 명령어로 초기설정을 해보자.
아래와 같이 입력을 하면 내가 들어온 디렉토리 안에 .git(로컬 저장소)이라는 폴더가 생성된다.
$ git init
# git을 사용하겠다.
# 해당 디렉토리안에 .git이라는 폴더를 생성해준다.
# Local Repository 생성
$ ls -al
# .git을 볼 수 있다. (숨김파일)
2.2.1 .git 과 .gitignore
- .git
- 버전별로 저장되는 히스토리들이 모두 다 저장될 것이다.
- 이 폴더를 삭제하면 git을 삭제하는 것과 같다.
- .gitignore
- .gitignore 파일을 생성해주고, 그 파일 안에 관리하고 싶지 않은 파일명을 작성해주면된다.
2.3 Git 작업 순서도
Git에는 Working directory, Staging area, Local Repository 순으로 프로세스가 진행된다.
Working directory(작업폴더)
- 작업 폴더는 git에 의해 관리되고 있는 상태이다.
- 나의 작업폴더 안에서는 하나의 파일당 2가지 상태로 표현한다
- Tracked(추적) : 한번이라도 .git에 의해 관리된 적이 있는 파일이며 Unmodified, Modified, Staged의 세 가지 상태로 존재한다.
- UnTracked(추적되지않음) : 한 번도.git에 의해 관리된 적이 없는 파일이다.
Staging area로 이동하는 방법은 다음과 같다.
$ git add [파일명]
# 특정 파일만 넘긴다.
$ gid add .
# 모든 파일을 넘긴다.
Add의 내용을 취소하기 위한 코드도 존재한다. 이때는 화살표가 반대방향으로 바뀐다.
$ git rm --cached [파일명]
# add의 내용을 취소한다.
$ git restore --staged[파일명]
# add의 내용을 취소한다.
Staging area(대기소)
- Staging area는 Local Repository에 저장하기 전에 중간다리 역할을 한다.
- 정말 단순하게 대기소 역할만하기 때문에 큰 의미를 두지않는다.
- 대기소에서는 저장, 기록을 진행할 수 있고 이를 Commit이라 한다.
Local Repository(저장소)로 이동하는 방법은 다음의 명령어를 입력하면된다.
$ git commit
# 저장소로 이동
$ git commit -m "커밋 메시지 입력가능"
# 저장소로 이동하고 커밋 메시지 입력
Local Repository(.Git 폴더)
- GIt에서 데이터가 저장되는 장소이다.
$ git log
# commit 정보를 볼 수 있다.
# commit을 할 경우에 log에 쌓인다.
# q 나가기
# ctrl + x // 나가기
- Add 처럼 Commit도 이전으로 되돌릴 수 있다.
$ git switch -d [해시값]
# 이전 commit으로 되돌아가기
- Commit에는 메시지를 남길 수 있는 데, 함께 작업하는 사람들과 소통하기 위해 약속된 메시지를 남긴다.
- feat; 새로운 기능추가
- fix; 버그수정
- docs; 문서수정
- style; 코드 스타일 변경
- design; UI 변경
- test; test 코드작성, test 코드에 대한 리팩터링
- refactor; 실제 코드에 대한 리팩터링
- rename; 파일명 수정
- remove; 파일 삭제
위 내용을 그림으로 한 번에 나타내어보자.
2.4 명령어
2.4.1 Reset과 Revert
Git에서는 과거 시점으로 돌아가는 방법이 여러가지 있다. 그에 대한 명령어를 알아보자.
reset
- 이전의 시점으로 되돌려 데이터를 없앤다.
#문법
$ git reset [커밋 해시값]
$ git reset --옵션 [커밋 해시값]
$ git reset --hard [커밋 해시값]
# 수정사항을 완전히 삭제한다
# 이전에 코드를 작업하더라도 날라간다.
$ git reset --hard
# 현재 위치하고 있는 한 줄만 삭제하는 법이 있다. 구글링 必
## hard 복구하는 방법
$ git reflog
# git 히스토리를 보고 , 해시값을 구한다음
$ git reset --hard [해시값]
$ git reset --soft [커밋 해시값]
# repository에서 staging area로 이동
$ git reset --mixed [커밋 해시값] // 디폴트값
# 저장소에서 working directory로 이동
revert
- 이전 시점으로 돌아가지만 히스토리를 남기고 돌아간다.
- revert의 핵심은 commit 히스토리를 삭제하는 것이 아니라, 새로 만들어서 되돌리는 방법이다.(Copy)
- revert를 진행할 경우에는 이전 commit과 비교해서 똑같은 파일에서 바뀐 부분이 있을 수 있다. 하지만, 컴퓨터는 뭐가 우선 순위인지 모르기 때문에 사람이 직접 코드를 작성해야한다.
# 문법
$ git revert [되돌릴 해시값]
# revert를 취소하고 싶다면
$ git revert --abort
# 직접 코드를 정리해서 완료했다면
$ git revert --countinue
2.4.2 Branch
- 브랜치(branch) 직역하면 나뭇가지라는 뜻이다.
- commit은 한 줄짜리 리스트이고, 여러 줄로 만들어 내는 것은 branch이다.
# 문법
$ git branch [브랜치이름]
$ git branch
# 현재 브랜치 명이 나온다.
# 브랜치를 바꾸는 법
$ git switch [브랜치명]
# 브랜치를 만들고 바꾼다.
$ git switch -c [브랜치명]
# 브랜치를 삭제하고 싶다.
$ git branch -d [브랜치명]
# 브랜치명을 바꾼다.
$ git branch -m [기존브랜치명] [바꿀브랜치명]
# m은 move의 약자
'Git & GitHub' 카테고리의 다른 글
Github - Actions (1) | 2023.04.22 |
---|---|
2. Git & GitHub 기본 개념(2) (0) | 2022.11.28 |