형상관리 작업을 할 때 Source Tree, GitHub Desktop, GitKraken 등의
GIT GUI 툴을 많이 사용하지만 그렇지 않고,
Git Bash, Windows Powershell 등 에서 Git 명령어를 통해
직접 형상관리를 하기 위한 Git 명령어에 대한 글입니다.
1. git init
- 로컬 저장소로 사용할 폴더를 생성하여 해당 폴더로 이동 후 해당 명령어를 사용합니다.
- Initialized empty Git repository in [경로] 라는 메시지가 노출되고, .git 이라는 숨겨진 폴더가 생성됩니다.
- 만약 init을 취소하려면 rm -r .git 명령어를 입력합니다.
- .git 폴더 내부에는 저장소에 필요한 뼈대(Skeleton) 파일이 존재합니다.
//.git 폴더 생성
$ git init
Initialized empty Git repository in [현재 위치하고 있는 경로]/.git/
//init 취소
$ rm -r .git
2. git config
- Git에 관한 설정을 추가하거나 변경, 삭제하는 명령어입니다.
- Git에는 System설정 파일과 Global설정 파일과 Local설정 파일이 존재합니다.
- System 설정 파일 : 모든 System 사용자에게 적용(전체 사용자에게 영향을 미칠 수 있는 공간에 위치),
git config --system 으로 시작하는 명령어로 System 설정 파일을 수정 - Global 설정 파일 : 한 사용자(user)의 전체 Git 저장소에 적용(한 사용자의 전체 저장소에 영향을 미칠 수 있는 공간에 위치), git config --global 으로 시작하는 명령어로 Global 설정 파일을 변경
- Local 설정 파일 : 하나의 저장소에만 적용(한 저장소에 영향을 미칠 수 있는 공간에 위치),
git config --local 으로 시작하는 명령어로 Local 설정 파일을 변경
- ex) git config --global user.email "you@example.com" 과 git config --global user.name "Your Name" : 이메일과 이름을 Global 설정 파일에 저장
- system, global, local 명령어를 입력한 후, git config --list 명령어를 입력하면 입력된 config 정보가 나타납니다.
//config 정보
$ git config --list
//config 설정 파일이 없다면, 아래와 같은 메시지 노출
*** Please tell me who you are.
RUN
git config --global user.email "you@example.com"
git config --global user.name "Your name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
3. git clone
- 저장소 복제, 다운로드 명령어 입니다.
- git clone [https:... URL] : 기존 소스 코드 다운로드/복제
- git clone /로컬/저장소/경로 : 로컬 저장소 복제
- git clone 사용자명@호스트:/원격/저장소/경로 : 원격 저장소 복제
4. git status
- 로컬의 현재 상태를 보여주는 명령어 입니다.
- Untracked, Tracked 상태를 통하여 파일 상태를 알려줍니다.
- Untracked 상태 : 단어의 의미대로 '추적되지 않고 있는'파일 이라는 의미, 즉 파일 생성 후 한번도 add하지 않은 상태
- Tracked 상태 : 파일이 Git에 의해 그 변동사항이 추적되는 상태, 이 상태는 특성에 따라 3가지로 나뉜다.
1) Staged 상태 : 파일 수정 후 staging area에 올라가 있는 상태
2) Unmodified 상태 : 현재 파일이 최신 커밋 파일과 비교하여 바뀐게 없는 상태
3) Modified 상태 : 현재 파일이 최신 커밋 파일과 비교하여 바뀐게 있는 상태
4-2. Git의 4가지 영역
1. Working Directory(작업 영역)
- 실제 프로젝트 디렉토리
- .git 이력과 관련 정보가 저장 된 .git을 제외한 모든 영역
- 실제 코드의 추가, 수정, 삭제 작업이 이루어지는 영역
2. Repository(저장소)
- 파일, 폴더를 변경 이력별로 저장해 두는 곳
- .git 디렉토리 내 존재하며 2가지로 나뉨
1) Local Repository : 개인 PC에 파일이 저장되는 개인 저장소
2) Remote Repository : 원격 저장소 전용 서버에서 관리되며, 여러 사람들과 같이 공유도 가능한 저장소
3. Index(Staging Area)
- Working Directory에서 Repository로 정보 저장 전 준비 영역
- 파일 상태를 기록, 스테이징 한다고 표현
- .git/index 파일로 관리
1) git add : Working Directory 에서 Index 영역으로 정보가 저장됨
2) git commit : Index 영역에서 Repository로 정보가 저장됨
4. Stash
- 현재 stage에 있는 파일(add 하기 전 현재 수정된 파일들)을 임시적으로 저장할수있다.
- 위의 3가지 영역과 다른 별개의 임시 영역
- 임시적으로 작업사항을 저장해 두고 나중에 꺼내올 수 있음
1) git stash
- stash에 저장하기
2) git stash save '설명 추가'
- 설명 추가하여 stash 저장하기
3) git stash list
- stash 목록보기
4-1) git stash apply 혹은 git stash apply stash@{숫자}
- 가장 최근의 stash 내용 혹은 지정된 stash가 적용되고, 적용 후에도 stash 리스트에 유지
4-2) git stash pop 혹은 git stash pop stash@{숫자}
- 가장 최근의 stash 내용 혹은 지정된 stash가 적용되고, 적용 후에 stash 리스트에서 삭제
4-3) git stash drop 혹은 git stash drop stash@{숫자}
- 가장 최근의 stash 내용 혹은 지정된 stash를 삭제
5) git stash clear
- stash의 모든 기록이 삭제
5. git add
- 파일을 준비영역(Staging Area)으로 추가하는 명령어 입니다.
- git add a.html
- a.html파일만 추가 - git add * 혹은 git add .
- 워킹 디렉토리 내 모든 파일 추가
- 아래 링크에서 git add * 와 git add . 의 차이를 확인할수있습니다 :)
https://hajoung56.tistory.com/56
6. git commit
- 준비영역(Staging Area)의 파일을 로컬 저장소에 저장하는 명령어 입니다.
1) git commit
- 에디터가 출력되고, 에디터에서 커밋 메시지 입력 후 저장하면 커밋
2) git commit -m "커밋 메시지"
- 간단한 커밋 메시지를 입력 후 커밋
3) git commit -a
- 자동으로 add를 진행한 후 커밋
- 별도의 add명령어를 사용하지 않고 수정된 파일에 대해 add, commit을 한번에 수행
- 한번도 add 되지 않은 파일은 add를 따로 작업 해줘야 함
4) git commit -am "커밋 메시지"
- a, m의 옵션을 합친 형태
5) git commit -v
- 커밋 메시지에 diff의 내용 포함
7. git pull
- 갱신 및 병합 명령어 입니다.
- 원격 저장소의 변경 내용이 현재 디렉토리에 가져와지고(fetch) 병합(merge) 됩니다.
- git pull 뒤에 --rebase 를 붙여 옵션을 줄수있습니다.
- git pull --rebase 의 형태로 명령어를 입력할수있습니다.
https://hajoung56.tistory.com/5 에서 더 자세한 내용을 확인할 수 있습니다 :)
8. git push
- 원격 저장소에 저장하기 위한 명령어 입니다.
- push 하기 전 내 코드는 commit 되어있어야 합니다.
- git push origin master
- master브랜치에 push - git push <원격저장소 이름> <branch 이름> 의 형식으로 사용합니다.
- git push -u <원격저장소 이름>
- push한 원격저장소에 앞으로 자동 연결되는 명령어 - git push -u origin master
- 이 명령어를 실행하면, 다음부터는 'git push' 명령어 만으로 현재 commit에 올라가 있는 내 코드들을 자동으로 해당 브랜치(여기서는 master)로 보내준다는 의미
9. git diff
- 워킹 디렉토리와 다른 커밋을 비교하는 명령어 입니다.
- git diff
- 현재 브랜치의 마지막 커밋과의 차이점 비교 - git diff [Commit ID]
- 특정 커밋과의 차이점 비교 - git diff [Commit ID] -- [파일 경로]
- 특정 커밋과 특정 파일의 차이점 비교
10. git branch
- 브랜치를 생성, 이동, 수정, 삭제하는 명령어 입니다.
- git branch
- 브랜치 목록 보기 - git branch [브랜치명]
- [브랜치명]으로 브랜치 생성 - git checkout [브랜치명]
- [브랜치명]으로 브랜치 이동 - git checkout [Commit ID]
- 특정 커밋으로 워킹 디렉토리 변경 - git checkout -b [브랜치명]
- [브랜치명]으로 브랜치 생성 후 이동 - git branch -m [브랜치 명] [바꿀 이름]
- 브랜치 명 수정 - git branch -d [브랜치 명]
- 브런치 삭제 - git push --set-upstream <원격저장소 이름> <branch 이름>
- 처음 원격 저장소에 올리기 위한 명령어 입니다.
8-1. 브랜치 생성 후엔 원격 레포지토리(github)에는 새로 생성된 브랜치의 정보가 없기 때문에
로컬 레포지토리를 리모트 레포지토리로 처음 push할 경우 --set-upstream 옵션을 주어야 함
8-2. 그래야 tracking 정보 설정이 되어 git push만 사용하여도 push가 됨
11. git log
- 로컬 저장소의 커밋 이력을 조회하는 명령어 입니다.
- git log -p -2
-p는 각 커밋의 diff 결과를 보여줌, -2는 최근 두 개의 결과만 보여주는 옵션 - git log --stat
히스토리의 통계를 보여주는 옵션, 각 커밋의 통계 정보를 조회할 수 있음 - git log --shortstat
--stat 명령의 결과 중에서 수정한 파일, 추가된 라인, 삭제된 라인만 보여줌 - git log --pretty=oneline
각 커밋을 한 라인으로 보여줌, 많은 커밋을 조회할 때 유용 (oneline, short, full, fuller, format) - git log --graph
로그를 브랜치 별 그래프 이미지와 함께 보여줌
'DEV > GIT' 카테고리의 다른 글
[GIT] git restore 를 이용한 staging area나 working directory 변화 취소 (0) | 2022.01.07 |
---|---|
[GIT] git 설치하기 (2) | 2021.07.19 |
[GIT] git merge와 git rebase의 차이 (6) | 2021.07.16 |
[GIT] Git add, commit, push 취소 (2) | 2021.07.16 |
[GIT] Git 이란? (0) | 2021.07.15 |
댓글