Computer Science/Version Control System

Git - part 2

코드몬스터 2022. 7. 4. 19:39
728x90
본 내용은 인프런의 제대로 파는 Git & GitHub - by 얄코  및 Codeit 으로 공부한 내용을 복붙 및 정리
했습니다.

 

 

👉 Git의 3가지 작업 영역

  1. working directory
    1. 작업을 하는 프로젝트 디렉토리
  2. staging area
    1. git add를 한 파일들이 존재하는 영역
  3. repository
    1. 커밋들이 저장되는 영역

👉 변화를 타임캡슐에 담아 묻기

일단 Git에서 파일들은 크게 다음 2가지 상태를 가진다.

  • Untracked 상태 (빨간색 상태)
    • 추적되지 않고 있는 상태
  • Tracked 상태 (초록색 상태)
    • Git에 의해 그 변동사항이 추적되고 있는 상태

그리고 Tracked 상태는 다시 아래와 같은 3가지 상태로 나눌 수 있다.

 

visual studio code 에서 U, M, A 라고 표시 되어있다.

  • Tracked 상태
    • Staged 상태 (A)
    • Unmodified 상태 (U)
    • Modified 상태 (M)
 

👉 git add .

git add 를 하면 Staging Area 에 파일이 올라가게 된다.

# 모든 파일 타임캡슐(버전)에 담기
git add . 

# 특정 파일 타임캡슐(버전)에 담기
git add tigers.yaml

# 타임캡슐(Staging Area)에서 취소하고 싶을 때
git rm --cached <파일명>
git restore --staged <파일명>
# 모든 파일 타임캡슐(버전)에 담기
git add . 

# 특정 파일 타임캡슐(버전)에 담기
git add tigers.yaml

# 타임캡슐(Staging Area)에서 취소하고 싶을 때
git rm --cached <파일명>
git restore --staged <파일명>

 

👉 git commit -m “ 커밋 내용" 

1. 하나의 커밋에는 한 단위의 작업을 넣도록 한다.,

  • 한 작업을 여러 버전에 걸쳐 커밋하지 않는다.
  • 여러 작업을 한 버전에 커밋하지 않는다.

2. 커밋 메세지는 어떤 작업이 이뤄졌는지 알아 볼 수 있도록 작성한다.

type: subject
커밋의 작업 내용 간략히 설명

body (optional)
길게 설명할 필요가 있을 시 작성

footer (optional)
    - Breaking point 가 있을 때
    - 특정 이슈에 대한 해결 작업일 때

🔥 주의사항 🔥

중요한 정보가 원격 저장소에 올라가는 경우가 종종 있다.

이를 해결하기 위해서는 아래와 같이 명렁어를 입력하자

(확실하게 안전하게 된다고 말은 못하겠다!!, 찾아보고 있습니다 ㅎㅎ)

# 이전 commit 해쉬로 돌아간다.
git reset HEAD^
# 원격 저장소에도 알려준다.
git push -f origin <브랜치명>

👉 git push origin <리모트 브랜치> 

  • 로컬 저장소에 있는 내용을 원격 저장소로 올리게 된다.
  • 리모트 브랜치 이름에 따라 main 또는 새로운 브랜치를 생성하면서 원격 저장소에 올라가게 된다.

 

👉 fetch vs pull

 

📌 git pull ?

원격저장소에 있는 프로젝트의 변경사항을 그대로 로컬저장소에 옮겨와 자동으로 병합
팀 단위로 사용하는 계정이 아닌 개인적으로 깃허브를 사용하는 사람들이라면 git pull 명령어를 가장 많이 사용할 것이다.
"변경 사항을 가져옴과 동시에 자동으로 병합이 되기 때문에 무엇이 추가되고 병합되었는지 확인이 안 됨"

 

📌 git fetch ?

원격저장소에 있는 프로젝트의 변경사항을 가져오기만 한 후 병합(merge)은 따로
깃 입문자 또는 깃허브를 개인적으로 사용하는 사람이라면 git fetch 명령어는 거의 사용하지 않을 것이다.
"다른 사람이 수정한 부분을 확인하고 병합할 수 있다는 장점이 있음"

 

[fetch 사용 방법]

  1. git fetch origin
    - 원격의 변화를 일단 merge 하지 않고 가져온다
    - 로컬 파일에 직접 추가 되지 않는다..!
  2. git checkout origin/main
    - 바뀐 내용이 로컬에 적용된다.(직접 적용되는 것은 아니다)
    - 따라서, 어떤 변화가 생겼는지 로컬 데이터를 바꾸지 않고 코드를 돌려볼 수 있다.
    - 문제가 있으면 되돌리면 된다.(git swtich main)
  3. git pull or git merge
    - 확인 결과, 괜찮으면 병합하면 된다.
# 차이점을 알려준다.
git diff <로컬 브랜치> <리모트 브랜치>

 

👉 git clone

  • git clone <git url> <폴더 명>

clone이라는 단어처럼 원격저장소의 내용을 새로운 폴더에 그대로 복사하는 것!

 
 

👉 참고사이트

'Computer Science > Version Control System' 카테고리의 다른 글

Discard / Update branch  (0) 2024.01.17
Git - part 3  (0) 2022.08.17
Git - part 5  (0) 2022.07.15
Git - part 4  (0) 2022.07.04
Git - part 1  (0) 2022.07.04