1. Git 기본사용 문법

1.1 Git Status

  • Git Status 명령어는 Working Directory와 Staging Area의 상태를 표시한다.
  • 보통 파일의 상태를 확인할 때 사용한다.
git status

1.2 Git Add

  • Git Add 명령어는 Working Directory에서 생성된 파일을 Staging Area (Index)에 추가한다.
  • Modified 상태의 파일을 Staged 상태로 변경한다.
git add <file_name>

1.3 Git Commit

  • Git Commit 명령어는 Working Directory에서 생성된 파일을 Staging Area (Index)에 추가한다.
  • Modified 상태의 파일을 Staged 상태로 변경한다.
  • -m 옵션은 commit message를 함께 작성할 수 있도록 해준다.
  • -a 옵션은 Staging Area를 생략하고 Modified 상태의 파일을 바로 Commit할 수 있도록 한다.
git commit -m <commit_message>
git commit -a -m <commit_message>

1.4 Git Ignore

  • Git Ignore 명령어는 Git에서 무시해야 하는 파일 패턴을 관리한다. 이를 통해 Git은 특정 파일이나 디렉토리를 추적하지 않고 무시할 수 있다.

아래는 Git Ignore 파일에 대한 예시이다.

*.a #확장자가 .a인 파일 무시

!lib.a #윗 라인에서 확장자가 .a인 파일은 무시하게 했지만 lib.a는 무시하지 않음

/TODO /*현재 디렉토리에 있는 TODO 파일은 무시하고
subdir/TODO처럼 하위 디렉토리에 있는 파일은 무시하지 않음*/

build/ #build/ 디렉토리에 있는 모든 파일은 무시

doc/*.txt #doc.notes.txt 파일은 무시하고 doc/server/arch.txt 파일은 무시하지 않음

doc/**/*/pdf. #doc 디렉토리 아래의 모든 .pdf 파일을 무시

1.5 Git RM

  • Git RM 명령어는 Git에서 관리하는 파일 삭제할 때 사용한다.
  • Staging Area의 파일을 삭제하고 Commit 할 수 있다.
  • 해당 파일은 Working Directory에서도 삭제된다.
git rm <file_name>

1.6 Git MV

  • Git MV 명령어는 Git에서 파일 이름 변경시 사용한다.
git mv <old_name><new_name>

Git MV 명령어와 동일한 동작을 수행하는 명령어들도 있다.

  • 파일을 복사하고, 원본 파일을 삭제한 뒤 Git Add 하는 동작과 같다.
cp <old_name><new_name>
git rm <old_name>
git add <new_name>

2. 저장소에 파일 추가(add)

1) Git Repository 생성

git_ws % mkdir HelloGit		# HelloGit 폴더 생성
git_ws % cd HelloGit		# 생성한 HelloGit 폴더로 이동
HelloGit % git init			# 저장소에 HelloGit 추가

2) 생성한 Git Repository 확인

HelloGit % git status

3) 파일 생성

HelloGit % touch test.txt #빈 파일 생성
HelloGit % git status

Git에 add하지 않은 상태에서 working directory에서 만든 test.txt 파일은 untracked 상태이다. Git이 버전 관리에 포함시키지 않기 때문에 add를 해줘야 tracked 상태로 변한다. 따라서 이 파일을 Git이 추적하고 관리하도록 하려면 git add 명령을 사용하여 이 파일을 staged 상태로 추가해야 한다.

4) 파일 Add (Staged 상태로 만들기)

HelloGit % git add test.txt
HelloGit % git status

test.txt가 이제 Staged 상태로 변경된걸 확인할 수 있다. Staged 상태로 변경되어 Git이 해당 파일을 추적하고 commit에 포함할 준비가 된 상태이다.

5) Commit 시도

HelloGit % git commit

Git에서는 commit을 할 때 항상 commit message를 작성해야 한다. 만약 commit 메시지를 작성하지 않고 commit을 시도하면 Git은 이를 빈 메시지로 처리할 수 없으므로 에러를 발생시킨다. 위와 같이 "Aborting commit due to empty commit message"와 같은 에러 메시지가 표시되고, commit이 중단되며, VSCode가 열린다.

6) Git Message 입력

HelloGit % git commit -m "first commit"

HelloGit % git status

git add * 명령어를 쓸 때 조심해야한다. git add * 명령은 현재 디렉토리 내의 모든 파일 및 하위 디렉토리를 한 번에 스테이징 영역에 추가한다. 이 명령은 매우 강력하며 실수로 원하지 않는 파일이 스테이징되어 commit될 수 있다.

특히 무분별하게 git add *를 사용하는 경우, 소스 코드에 의도치 않은 변경 사항이 포함되어 프로젝트에 문제를 일으킬 수 있다. 따라서 git add * 명령을 사용할 때는 스테이징할 파일을 신중하게 검토하고, 실수로 원하지 않는 파일이 스테이징되지 않도록 주의해야 한다. 대신에 필요한 파일만 스테이징하거나, 명시적으로 파일을 추가하는 것이 더 안전하다.

3. 저장소에서 파일 수정(-a)

1) 파일 수정

HelloGit % cat > test.txt #>: 아래 typing한 내용으로 파일을 덮어쓰기
Hello, Git! #쓰고 싶은 문구 작성 후 ctrl+D(저장)

HelloGit % cat test.txt #파일 내용 출력
HelloGit % git status

2) Add하고 commit

HelloGit % git add test.txt
HelloGit % git commit -m "second commit"

HelloGit % git status

3) 다시 파일 수정

HelloGit % cat >> test.txt #>>: 덮어쓰지 말고 해당 파일에 있는 내용 아래 줄에 추가해주기
This is commit!% #문구 작성 후 ctrl+D(작성)
HelloGit % cat test.txt

4) Modified 상태 -> Commit 상태 (Staging Area 생략)

HelloGit % git commit -a -m "third commit"

HelloGit % git status

4. Git에서 무시할 파일 등록

1) Git ignore 파일 생성

HelloGit % touch .gitignore
HelloGit % git add .gitignore
HelloGit % git status

2) 무시할 CSV 확장자 파일 편집

HelloGit % cat > .gitignore
*.csv #확장자가 csv인 모든 파일을 무시
HelloGit % git status

여기서 .gitignore은 unstaged 하면서 staged한 파일 두 개가 생긴다.

3) 파일 commit

HelloGit % git commit -m "make .gitignore file"

HelloGit % git status

이때 그냥 파일을 commit하면 unstaged 상태로 있던 .gitignore 파일은 해결이 안된 상태인걸 확인할 수 있다.

4) 다시 Add 후 Staged 상태로 만들고 Commit

HelloGit % git commit -a -m "add *.csv to gitignore"

HelloGit % git status

Staged 상태에서 Add 한 시점에만 commit을 하기 때문에 Staged 상태의 .gitignore 파일만 commit을 하고 Unstaged 상태로 있던 .gitignore 파일은 해결이 안된것이다.

5) .gitignore 테스트

HelloGit % touch data.csv
HelloGit % ls

HelloGit % git status

현재 상태가 clean한 이유는 해당 data.csv를 무시하고 있기 때문이다.
따라서 해당 csv 파일을 add 해보면,

HelloGit % git add data.csv

무시해야할 항목에 .csv 확장자를 포함시켰기 때문에 해당 파일을 add 할 수 없다고 에러가 뜬다.

더 쉽게 Unstaged 및 Staged 상태의 파일들을 commit 할 수 있다. Unstaged 상태의 파일을 Staged 상태로 만들어서 Staged 상태의 파일들을 바로 commit하면 된다.

위에서 3번 프로세스 대신 해당 프로세스를 따르면 된다.

HelloGit % git add .gitignore
HelloGit % git status

HelloGit % git commit -m "add"

HelloGit % git status

5. 저장소에서 파일 삭제

Git에서 파일을 삭제할 때에는 단순히 파일을 working directory에서 삭제하는 것만으로는 충분하지 않다. Git은 파일이 add된 순간부터 해당 파일을 버전 관리 대상으로 취급한다. 따라서 파일을 삭제할 때는 Git에서도 해당 파일을 제거해야 한다. 이를 통해 Git의 버전 관리 대상에서 파일이 삭제되고, working directory에서도 파일이 삭제된다.

1) 파일 삭제

HelloGit % git rm test.txt

HelloGit % ls

HelloGit % git status

2) Commit

HelloGit % git commit -m "remove test.txt"

HelloGit % status

3) 다시 파일 생성 + Add + Commit

HelloGit % touch test.txt
HelloGit % git add test.txt
HelloGit % git commit -m "remove test2"

HelloGit % git status

4) Working Directory에서 파일 삭제

HelloGit % rm test.txt
HelloGit % git status

5) Git에서도 삭제

HelloGit % git rm test.txt

HelloGit % git status

Unstaged 상태에서 Staged 상태로 되어있는걸 확인할 수 있다.

실수로 working directory에서 파일을 삭제한 경우에는 Git에서 또한 해당 파일을 삭제해야 한다. 이를 위해 git rm 파일명 명령을 사용하면 된다. 이 명령은 Git의 버전 관리 대상에서 해당 파일을 제거하는 역할을 한다.

6) Commit

HelloGit % git commit -m "rm test succeed"

HelloGit % git status

6. 저장소에서 파일명 변경(MV)

1) 파일 다시 생성

HelloGit % cat > test2.txt
This is mv test.
HelloGit % git add test2.txt
HelloGit % git commit -m "add test2.txt"

HelloGit % git status

2) 파일 이름 변경

HelloGit % git mv test2.txt test.txt
HelloGit % ls

HelloGit % git status

3) commit 후 저장

HelloGit % git commit -m "rename test2 to test"

HelloGit % git status

4) 경로 바꾸기

HelloGit % mkdir src
HelloGit % mv test.txt src/ #source directory(src) 밑으로 test.txt 이동
HelloGit % ls

HelloGit % cd src
src % ls

5) 삭제된 파일 확인

HelloGit % git status

6) 기존 위치의 파일 삭제

HelloGit % git rm test.txt

HelloGit % git status

7) src 폴더 내 파일 추가

HelloGit % git add src/test.txt
HelloGit % git status

8) Commit

HelloGit % git commit -m "rename test.txt to src/test.txt"
HelloGit % git status

profile
거북선통통통통

0개의 댓글