GIT : 07. Git 기본사용법

yeppi1802·2024년 6월 15일

❇️ 요약

  • Git Status
  • Git Add
  • Git Commit
  • Git Ignore
  • Git Rm
  • Git Mv

📖 Git 기본사용법

🔆 Git에서 3가지의 파일 저장 상태

  • Untracked(git에 등록되지 않은 상태) vs Tracked(등록된 상태)
  • Tracked 상태 3가지
    • Staged : Commit을 할 수 있는 후보 상태
    • Committed(Unmodified) : 버전이 매겨진 상태
    • Modified(UnStaged) : 버전이 매겨진 파일이 수정된 상태, Staged 도, Committed 도 아닌 상태

상태 변화

Add File : Tracked 상태로 들어옴, 버전을 매기는 대상으로 인식 ( UntrackedStaged )

Commit : 버전을 매김 (StagedCommitted)

Edit : 작업하면서 파일 수정 ( CommittedModified)

Stage File for Commit : 버전을 다시 매겨주기 위해 버전을 매길 수 있는 Staged 상태로 전환 ( ModifiedStaged )

Delete : 관리 하지 않을 파일을 Git이 관리하고 있는 Tracked 상태에서 Untracked 로 전환해줘야함 /

  • 폴더에 삭제하는 것과 다름! 깃에서 지워야함

🔆 Git Status ⭐⭐⭐⭐⭐

  • Working Directory와 Staging Area의 상태를 표시
  • 보통 파일의 현재 상태를 확인할 때 사용
git status

🔆 Git Add

  • Working Directory에서 생성된 파일을 Staging Area(index)에 추가
  • Modified 상태의 파일을 Staged 상태로 변경
git add <file_name>

🔆 Git Commit

  • ❗ 반드시 -m <commit message>와 함께 줘야함 ⭐⭐⭐⭐⭐
    • 의미 있는 문구로 작성했다면, Commit message로 해당 버전을 찾을 수 있다.
    • 다른사람들에게도 Commit message로 무슨 버전 무슨 내용인지 공유 가능
    • 의미 있는 문구로 작성 추천
    • 영문으로 작성 추천
  • Working Directory에서 생성된 파일을 Staging Area에 추가
  • Modified 상태의 파일을 Staged 상태로 변경
  • -a 옵션으로 Staged 상태를 생략 가능 (Modified 상태에서 바로 Commit 상태로 변경)
git commit -m <commit_message>
git commit -a -m <commit_message>

🔆 Git Ignore

  • Git에서 무시해야 하는 파일 패턴을 관리
# 확장자가 .a인 파일 무시
*.a

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

# 현재 디렉토리에 있는 TODO파일은 무시하고 subdir/TODO처럼 하위디텍토리에 있는 파일은 무시하지 않음
# 경로 상에 있는 TODO만 무시
/TODO

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

# doc/notets.txt 파일은 무시하고 doc/server/arch.txt파일은 무시하지 않음
# doc 바로 밑에 있는 txt는 무시하지만 다른 경로의 txt는 무시하지 않음 
doc/*.txt

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

🔆 Git RM

  • Git에서 관리하는 파일 삭제
  • Staging Area의 파일을 삭제하고 Commit
  • Working Directory에서도 삭제됨
git rm <file_name>

🔆 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>

📖 저장소에 파일 추가 - add

☁️ Git Repository 만들기

mkdir HelloGit
cd HelloGit
git init

☁️ 잘 만들어 졌는지 체크

  • 잘만들어졌으면 Git 명령어 정상 작동
git status

☁️ 파일 하나 생성

  • Untracked File : test.txt
touch test.txt
git status

☁️ 파일 Add(Stage 상태로 전환)

  • Stage File : test.txt
  • ❗ 많은 파일을 한꺼번에 add 하고싶어서 git add * 하면 올리고싶은 파일 뿐 아니라 안보이는 쓰레기 파일들까지 올라갈 수 있으니 조심!
git add test.txt
git status

☁️ Commit

  • Commit message가 없으면 Commit은 무시됨
git commit -m "first commit"
git status


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

사용한 문법

  • cat <file_name> : file의 내용 출력
  • cat > <file_name> : 다음 내용으로 덮어 써라
  • cat >> <file_name> : 덮어쓰지 말고 파일 내용 아랫줄에 추가해라

☁️ 파일 수정

  • Modified 상태로 전환
cat > test.txt
Hello, Git! 

# Ctrl + D 눌러서 입력 저장

git status

☁️ 방법 1 : 다시 Add, Commit

  • Commit 상태
  • 매번 이러기 귀찮을 것
git add test.txt
git commit -m "second commit"

☁️ 파일 다시 수정

  • 다시 Modified 상태
cat >> test.txt
This is commit!

cat test.txt 

☁️ 방법 2 : -a 사용 - Staging Area 생략 가능

  • -a 옵션
git commit -a -m "third commit"


📖 무시 할 파일 등록 - Ignore

☁️ git ignore 파일 생성

touch .gitignore
git add .gitignore
git status

☁️ 확장자가 CSV인 파일 무시하도록 편집

  • 파일 데이터는 보통 Git에서 이력 추적을 할 파일이 아니기 때문에 올리지 않는다.
cat > .gitignore
*.csv

git status
  • Staged 상태, Modified 상태의 두가지 모두 있다!
    • 변경사항이 2가지! 등록된 상태와 수정된 상태
    • 둘 중 먼저 해결하는 순서는 상관 X

☁️ 그냥 Commit 하면 Staged 상태는 해결, Modified 상태는 해결X

git commit -m "make .gitignore file"

git status

☁️ Modified 상태는 해결 : 다시 Add 후 Staged 상태로 만들고 Commit

  • Add한 시점만 Commit하기 때문
git commit -a -m "add *.csv to .gitignore"

git status

☁️ .gitignore 테스트

  • csv 파일 무시
touch data.csv

ls

git status

  • Add 해봐도 무시하는 것 확인


📖 저장소에서 파일 삭제 - RM

☁️ 파일 삭제

  • 폴더에서 파일 삭제하듯이 하면 X
git rm test.txt

ls

git status

☁️ 지워도 변경사항! Commit

  • 자주 Commit 하는 습관을 들이자
git commit -m "remove test.txt"

git status

☁️ 다시 파일 생성 + Add + Commit

touch test.txt

git add test.txt

git commit -m "remove test2"

git status 

☁️ 폴더에서 파일을 삭제

  • git rm 이 아니라 터미널 명령어 rm
  • Working Directory에서 파일 삭제한 경우
rm test.txt
git status
  • 수정 사항이 있는데 Unstaged 상태

☁️ 해결 : Git에서도 지워준다

  • 실수로 파일을 먼저 지워버리면 git rm 하여 Git에도 지워주면 된다
git rm test.txt

git status 

☁️ 마무리 Commit

git commit -m "rm test succed"

git status


📖 저장소에서 파일명 변경 - MV

☁️ 파일 하나 생성

test2.txt
This is my test.

git add test2.txt

git commit -m "add test2.txt"

git status 

☁️ 파일 이름 변경

git mv test2.txt test.txt

ls

git status

☁️ Commit 하여 저장

git commit -m "rename test2 to test"

git status 

☁️ 경로 바꾸는 경우도 이름이 바뀜

  • git mv가 아닌 터미널 명령어 mv 사용
  • 폴더에서 직접적 수정
mkdir src

mv test.txt src/

ls

cd src

ls

☁️ 그 후 git status

  • 삭제된 파일과 새로운 파일
  • 이름은 같고 경로만 달라져서 새로운 파일로 인식!
  • 둘 중 먼저 해결하는 순서는 상관 X

☁️ 해결 : 기존위치의 파일을 삭제

git rm test.txt

git status 

☁️ 해결 : src 폴더내의 파일을 add

  • src/test.txt : 경로 포함 해당 파일
  • 프로젝트 내의 서브디렉토리 정보는 Git에 저장 X
    • src/test.txt 같이 파일 경로로 파일 단위 관리
git add src/test.txt

git status

☁️ 마무리 Commit

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

git status

0개의 댓글