본문 바로가기
Everyday Study

2024.07.24 (수) { git commit --amend, git add . 과 * 차이, git restore --staged <filename>, git tag, Git Alias }

by xogns93 2024. 7. 24.

git commit --amend

 

git commit --amend 명령어는 Git에서 최근 커밋을 수정하거나 업데이트하는 데 사용됩니다. 이 명령어를 사용하면 최근 커밋 메시지를 변경하거나, 새로운 변경 사항을 기존 커밋에 추가할 수 있습니다.

 

 

1. 파일 생성 및 첫 커밋:

echo "Hello, World!" > example.txt
git add example.txt
git commit -m "Add example.txt with initial content"

 

2. 파일 수정:

echo "This is an amended change." >> example.txt
git add example.txt

 

3. 커밋 수정:

git commit --amend

이 명령어를 입력하면 커밋 메시지를 수정할 수 있는 편집기가 열립니다. 예를 들어, 커밋 메시지를 "Add example.txt with amended content"로 수정할 수 있습니다.

 

4. 커밋 완료 후 푸시

변경된 커밋을 원격 저장소에 푸시합니다. 이미 원격 저장소에 푸시된 커밋을 수정했기 때문에 --force 옵션을 사용해야 합니다.

git push --force origin main

 

 


 

 

  • 브랜치는 독립적인 작업 공간을 제공하여 여러 작업을 병렬로 진행할 수 있게 합니다.
  • 브랜치 생성: git branch 브랜치이름
  • 브랜치 전환: git checkout 브랜치이름
  • 브랜치 생성과 동시에 전환: git checkout -b 브랜치이름
  • 브랜치 목록 확인: git branch
  • 브랜치 병합: git merge 브랜치이름
  • 브랜치 삭제: git branch -d 브랜치이름

파일 상태 코드

  1. A (Added):
    • 파일이 새로 추가되었고, git add 명령어로 스테이징된 상태를 의미합니다.
    • 이 파일은 다음 커밋에 포함될 것입니다.
  2. M (Modified):
    • 파일이 수정되었고, 스테이징되었거나 아직 스테이징되지 않은 상태를 의미합니다.
    • 수정된 파일은 git add 명령어를 통해 스테이징해야 커밋에 포함됩니다.

echo "Hello World" > README.md

 

==

 

touch README.md

vi README.md -> I -> Hello World -> ESC -> :wq

 

두 방법은 같다

 


git add . : .은 현재 디렉토리를 의미합니다. git add . 명령어는 현재 디렉토리와 모든 하위 디렉토리에 있는 변경된 파일을 재귀적으로 추가합니다.

숨김 파일과 디렉토리도 포함됩니다. 즉, .gitignore로 무시되지 않는 한, 모든 파일과 디렉토리가 추가됩니다.

 

git add * : *는 셸의 와일드카드(glob) 문법으로, 현재 디렉토리의 모든 파일과 디렉토리를 의미합니다.

 

git add *는 현재 디렉토리의 숨김 파일을 제외한 모든 파일과 디렉토리를 추가하며, 하위 디렉토리의 파일은 포함하지 않습니다.

git add .는 현재 디렉토리와 모든 하위 디렉토리의 모든 파일을 포함하여 추가합니다.


delete하는것도 변경문이기 때문에 스테이징해줘야 한다 !! 

  1. 파일 삭제: 먼저 파일을 삭제합니다.
  2. 삭제된 파일을 스테이징: git rm 명령어를 사용하여 삭제된 파일을 스테이징합니다.

예를 들어, example.txt 파일을 삭제하고 스테이징하려면 다음과 같이 합니다:

# 파일 삭제
rm example.txt

# 삭제된 파일을 스테이징
git rm example.txt

# 커밋
git commit -m "Deleted example.txt"

이렇게 하면 example.txt 파일이 삭제된 상태로 커밋됩니다. git rm 명령어는 삭제된 파일을 스테이징 에어리어에 추가하는 역할을 합니다.

 


git restore --staged <filename>

 

git restore --staged <filename> 명령어를 사용하여 스테이징된 변경 사항을 언스테이지 상태로 되돌릴 수 있습니다.

 

git restore <filename>

 

git restore <filename> 명령어는 작업 디렉토리의 파일을 최신 커밋의 상태로 되돌립니다. 이는 파일의 변경 사항을 취소하고, 마지막 커밋된 상태로 복원하는 데 사용됩니다.

 

 


git tag

 

커밋 객체는 해시 값과 메시지로 확인할 수 있지만, 이를 통해 특정 커밋을 찾기 어려울 수 있습니다. 이러한 이유로 중요한 커밋에 태그를 달아 쉽게 식별하고 관리할 수 있습니다. 태그는 릴리즈 버전이나 중요한 시점을 표시하는 데 유용합니다. 커밋객체는 해쉬값이랑 메세지로만 확인할수있는데 찾기 좀 빡세니까 태그를 다는 것 !

 

주석 태그(Annotated Tag) 생성:

git tag -a v1.0 -m "Release version 1.0"

여기서 v1.0은 태그 이름이며, -m "Release version 1.0"은 태그 메시지입니다.

 

 

로컬 저장소의 모든 태그 목록 확인:

git tag

 


Git Alias

 

Git Alias는 자주 사용하는 Git 명령어를 짧고 간편하게 사용할 수 있도록 별칭을 설정하는 기능입니다. 이를 통해 긴 명령어를 간단한 단축어로 사용할 수 있어 작업 효율을 높일 수 있습니다.

Git Alias 설정 방법

Alias는 Git 설정 파일(.gitconfig)에서 설정할 수 있습니다. git config 명령어를 사용하여 전역 또는 로컬로 설정할 수 있습니다.

 

전역 설정

전역 설정은 모든 Git 프로젝트에서 적용됩니다.

git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status

위의 명령어들은 git checkout을 git co로, git branch를 git br로, git commit을 git ci로, git status를 git st로 단축합니다.

 

로컬 설정

로컬 설정은 현재 Git 프로젝트에서만 적용됩니다.

git config alias.co checkout
git config alias.br branch
git config alias.ci commit
git config alias.st status

 


(HEAD -> testing, master)                   testing이 master를 기반으로 복사(참조)했단뜻

 

HEAD는 라스트 커밋을 한 애를 가리킨다.

 


소프트웨어 버전 번호는 일반적으로 "주-부-패치" 형식의 세 가지 숫자로 구성됩니다. 이를 통해 버전 관리와 배포를 체계적으로 할 수 있습니다. 각 숫자의 의미는 다음과 같습니다:

  1. 주 버전(Major Version): 큰 변화나 새로운 기능이 추가될 때 증가합니다. 이전 버전과의 호환성이 깨질 수 있습니다.
  2. 부 버전(Minor Version): 기존 기능에 새로운 기능이 추가될 때 증가합니다. 이전 버전과의 호환성을 유지합니다.
  3. 패치 버전(Patch Version): 버그 수정이나 작은 변경이 있을 때 증가합니다. 이전 버전과의 호환성을 유지합니다.

예시: 버전 1.1.1

  • 1: 주 버전 (Major)
  • 1: 부 버전 (Minor)
  • 1: 패치 버전 (Patch)

예를 들어:

  • 1.0.0: 첫 번째 주요 릴리스.
  • 1.1.0: 새로운 기능이 추가된 릴리스.
  • 1.1.1: 작은 버그가 수정된 릴리스.

기능 추가:

  • 예: 1.1.0에서 새로운 기능을 추가하면 버전이 1.2.0으로 증가합니다.

리팩토링:

  • 예: 코드 구조를 개선하거나 최적화하는 리팩토링을 했을 때, 주로 부 버전을 증가시키지 않지만, 기능이 추가되거나 수정되었으면 부 버전 또는 패치 버전을 증가시킬 수 있습니다.

버그 수정:

  • 예: 1.2.0에서 버그를 수정하면 버전이 1.2.1로 증가합니다.