본문 바로가기
Develop

[Git] Git Bash와 각종 Git 관련 명령어들

by Tarra 2022. 1. 13.

Git Bash란?

Git bash는 Window의 명령프롬프트, Linux와 Mac의 Terminal과 같은 역할의 프로그램으로.

키보드로 명령한 명령어(Command)를 운영체제인 OS에 전달하여 명령어를 실행하도록 하는 프로그램이다.

 

왜 Git Bash? 

Linux와 Mac이 Unix(유닉스)계열의 운영체제를 본 따 만들어졌기 때문에 유닉스의 풍부한 커맨드라인 툴들을

물려 받았으며, 개발에서는 Unix가 중요하기 때문에 우리는  Window를 쓰더라도 추후를 위해 Git Bash를 사용한다.

 

기본적인 Git Bash의 명령어 (CLI :Command-line interface)

  • 폴더 이동 관련
pwd : 현재 작업 중인 폴더

ls  : 현재 위치 내 모든 파일 표시 

ls -a : 현재 위치 내 모든 파일 표시 (숨김파일 포함)

ls -l : 현재 위치 내 모든 파일 표시 + 파일 정보 (-a, -l을 합쳐 -al로도 쓸 수 있음)

cd 폴더경로 : 위치 내 있는 폴더 위치로 이동

cd .. : 상위 폴더로 이동

cd - : 이전 폴더로 이동

cd ~ : 최상위 디렉토리로 이동

 

  • 파일 생성 및 삭제
mkdir 폴더이름 : 폴더 생성

rm -r 폴더이름 : 폴더 삭제 (하위 파일들 모두 포함)

cp -r 폴더명 위치 : 폴더 복사

mv 폴더이름 변경할폴더이름 : 폴더 명 변경

 

touch 파일이름 : 새로운 파일 생성 (확장자 입력)

rm 파일이름 : 파일 삭제

cp 파일이름 위치 : 파일 복사

mv 파일명 변경할파일이름 : 파일이름 변경

 


Git Bash와 Git

먼저!

- Repository (저장소)
Git은 원격 저장소와 로컬 저장소 두 종류의 저장소를 사용한다.


    - Remote Repositort (원격 저장소) : 파일이 원격 저장소 전용 서버에서 관리되며 여러 사람들이 함께 공유한다.
   - Local Repository (로컬 저장소) :  내 PC에 파일이 저장되는 개인 전용 저장소

- Branch
기본 설정으로 "master"라는 브랜치가 생성되어있다.
일종의 독립적인 작업공간.
브랜치는 필요에 의해 만들어지고, 다른 브랜치의 영향을 받지 않기 때문에 여러 작업을 동시에 진행할 수 있다.
여러 브랜치를 이용하여 동시에 개발하고 , 이후 master로 합치는 과정을 통해 소프트웨어를 개발할 수 있다.

 

Git 기본 명령어

1) 초기 설정

Git을 설치하고 나서 가장 먼저 해야 할 것은 사용자 이름과 이메일 주소를 설정하는 것이다.
초기에 한번만 설정하면 되며, 이후 Git은 커밋할 때마다 이 정보를 사용한다.

$ git config --global user.name 이름
$ git config --global user.email abcdef@example.com

이후에 다른 이름과 이메일 주소를 사용하고 싶으면 --global 옵션을 빼고 명령을 실행하면 된다.

 

2) Git init

$ git init
Initialized empty Git repository in [경로] (master)

현재 폴더를 기준 폴더로 하고 git을 관리하도록 한다. 
기본 브랜치는 master가 되며, 해당 폴더에 숨김 폴더로 .git 폴더가 생성된다.

[주의사항]
1. 기존에 Git을 통해 관리하는 폴더를 또 다시 init을 통해 중첩해서는 안된다.
2. 최초 디렉토리인 ~에서 절대 해서는 안된다. 내 모든 파일이 공유될 수 있기 때문

 

3) git의 상태 확인

$ git status
On branch master
No commits yet
nothing to commit (create/copy files and use "git add" to track)

파일의 상태 확인 명령어로.
on branch는 현재 작업 중인 branch를 그 밑으로는 현재 커밋된 파일등을 표시한다.

$ git status -s 
short 명령어로 간단하게 볼 수도 있다.


$ git log
commit 기록을 확인하는 명령어이다.
이전까지 commit을 진행한 기록과,  이후에 나올 git config 명령을 통해 설정한 user.name과 user.email 값이 표기된다.

$ git log --oneline
기존의 git log 에서 commit 메세지만 한줄씩 표시하도록 한다. 

$ git log  --graph 
브랜치의 트리 그래프를 확인할 수 있다.

 


 

+ git의 상태 (status)

untracked : 디렉토리 안에는 있지만, Git이 추적하지 않고 있는 파일.
tracked : Git이 상태를 추적하고 있는 파일.
Unmodified : 최신 상태
Modified : 수정되었지만 Staging Area에 가기 전 상태로. add가 되기 전 상태이다.
staged : Staging area에 반영된 상태
git에 의한 file의 lifecycle

 


 

4) git add / rm

$ git add 파일이름
commit을 하기 전 상태인 index에 파일을 추가하는 명령어이다.
파일 이름에 " . " (하위 폴더내의 모든 파일) folder/(특정 폴더)를 적어 지정을 특정할 수 있다.

$ git rm --cashed test.txt
index에 추가된 파일을 제외할 수 있다.

 

5) git commit

$ git commit -m "커밋 메세지"
git commit은 변경사항 확정에 사용되는 명령어이다. ( -m은 커밋 메세지 옵션, 거의 관용적으로 사용)
Staging 영역의 (add를 한 이후) 파일들을 commit 한다.

$ git commit -a

별도의 add 명령어를 사용하지 않고, 수정된 파일에 대해서 add와 commit을 한번에 수행하는 명령어이다.

 

6) gitignore

프로젝트 작업시 로컬 환경의 정보나 빌드 정보등.

원격 저장소에 관리되서는 안되는 파일들을 선정해, 사전에 업로드 되지 않도록 관리하는 파일.

gitignore 에 정의한 파일들에 대해 git이 Tracking 하지 않도록 한다.

$ touch .gitignore
.gitignore 파일은 프로젝트 파일의 최상위 위치에 존재해야하며,
원격 저장소에 push하면 gitignore가 적용되며, 먼저 push된 파일들의 경우 Tracking이 해제되지는 않는다.

gitignore 파일의 내용 예시
### Python ###
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

 

 

+ gitignore io

git에서 관리하면 안되는 파일들을 자신에 프로젝트에 맞추어 만들어주는 웹사이트이다.

자신의 프로젝트에 맞추어 설정한 뒤 나오는 텍스트를 .gitignore에 붙여넣어 주기만 하면 된다.

 

 

 


git의 push와 원격 저장소에 관한 내용은 글이 길어지니 다음 포스팅에 적었다.

https://tarra.tistory.com/113

 

[Git] GitHub Repository에 push하기 , pull하기

전 포스팅 https://tarra.tistory.com/112 에 이어지는 내용입니다. [Git] Git Bash와 각종 Git 관련 명령어들 Git Bash란? Git bash는 Window의 명령프롬프트, Linux와 Mac의 Terminal과 같은 역할의 프로그램으..

tarra.tistory.com