git init, git status, git add, git commit [-m] [--amend], git log [--pretty], .gitignore
0. Git Repository; Git Repo; 깃 저장소, 깃 작업공간
Repository(Repo)란 파일(또는 프로젝트)을 추적하고 관리하는 작업 공간으로,
프로젝트의 변경사항을 담고 있습니다.
각 Repository는 독립된 프로젝트입니다.
Git을 사용하려면 각각의 프로젝트 폴더에 가서 Git Repository를 생성하도록 해야합니다.
Git 명령어에 대한 것은 Git 홈페이지에서 찾아볼 수 있습니다.
1. git init, git status
git init
git init
git init은 git repository를 생성합니다.
(git init은 기본적으로 .git 디렉토리를 생성합니다.)
프로젝트당 한 번만 실행되며, 계속해서 초기화되지 않습니다.
repository의 최상단 경로에서 초기화하고, 하위 경로의 변경사항을 확인합니다.
만약 .git 디렉토리를 삭제하면 git을 사용할 수 없게 되며,
작업 이력에 대한 데이터가 삭제됩니다.
(삭제하지 않도록 주의합니다)
git status
git status
git status는 git repository의 현재 상태에 대한 정보를 제공하는 명령어입니다.
.git 이 존재하는 프로젝트 내부에 git init을 사용하면 문제가 발생할 수 있습니다.
git status를 사용하여 현재 작업 공간이 git에 의해 추적되고 있는지,
초기화하지 않았는지 먼저 확인 후 git init을 사용하도록 합니다.
git add로 새 파일(new file)을 올리거나, 기존 파일을 변경(modified)한 경우도 확인할 수 있습니다.
(변경사항이 있으나 git add로 추적하지 않은 파일도 마찬가지로 확인할 수 있습니다)
2. git add, git commit, git log
commit은 변경사항의 체크포인트를 만듭니다.
(commit은 변경사항의 스냅샷입니다)
따라서 특정 commit 시점으로 돌아가거나,
그 시점의 변경사항을 확인할 수 있습니다.
commit을 통해 변경사항을 그룹화할 수 있습니다.
단적인 예시로, 회원 기능을 개발할 때 회원가입 - 로그인 - 로그아웃 기능별로 커밋하여,
특정 기능별 코드를 확인할 수 있습니다.
작업공간에서 작업 후,
git add 명령어를 사용하여 Staging Area에 변경사항을 선택적으로 추가합니다.
git commit 명령어를 사용하여 Staging Area에 그룹화된 변경사항을 Repository에 커밋합니다.
이러한 과정은 번거롭지만, 변경사항을 추적하고 관리하는 데 필연적입니다.
git add
git add는 commit에 변경사항을 (선택적으로)추가하는 명령어입니다.
git add를 통해 commit할 변경사항을 선별합니다.
git add file1
git add file2 file3
git add .
하나 또는 다수의 파일을 add 할 수 있습니다.
혹은 모든 변경 사항을 add 할 수도 있습니다.
git commit [-m]
git commit은 repository의 변경사항을 기록하는 명령어입니다.
Staging Area에 있는 변경사항을 commit합니다.
git commit 의 -m옵션을 사용하지 않고 에디터로 메시지를 기재할 수 있지만,
주로 -m 옵션을 사용하여 변경사항을 요약하는 메시지를 기재하여 커밋합니다.
git commit -m "커밋 메시지"
git commit [--amend]
git commit의 --amend 옵션을 통해 직전의 커밋을 실행취소하고 메시지를 수정할 수 있습니다.
(또는 git add, git commit --amend를 통해 누락된 파일을 commit단위에 포함하도록 할 수 있습니다)
git log [--pretty[=<format>]]
git log는 commit log를 확인하 명령어입니다.
커밋 해시, 작성자 이름, 이메일, 날짜 커밋 메시지를 확인합니다.
간혹 commit message가 방대해지면, commit log로 확인하기 어려울 수 있습니다.
이 때, git log의 Commit Formatting --pretty option을 사용합니다.
--pretty=형식
--oneline
git log --oneline
한 줄로 표시
--pretty=oneline --abbrev-commit 을 --oneline으로 사용합니다.
--abbrev-commit
커밋 해시 짧게 줄이기
3. .gitignore
.gitignore파일을 통해 git이 특정 정보(API KEY, DB password, IP)를 추적하지 않도록 할 수 있습니다.
일반적으로 Git Repository의 최상위 경로에 .gitignore을 생성하여 사용합니다.
특정 문자열 패턴을 가진 파일이나 디렉토리에 적용할 수 있습니다.
*.log 를 작성하면 .log를 확장자로 갖는 파일들을 추적하지 않도록 합니다.
/dir 를 작성하면 dir 디렉토리를 추적하지 않도록 합니다.
4. 명령어 연습
1. cafe 디렉토리를 생성합니다.
mkdir cafe
2. cafe 디렉토리를 git repository로 초기화합니다.
cd cafe
git status
git init
3. latte.txt 파일과 tea.txt 파일을 생성합니다.
touch latte.txt tea.txt
4. 두 파일을 함께 커밋하고 메시지를 기재합니다. 메시지 예시: "cretate menu, latte and tea"
git add latte.txt tea.txt
git commit -m "cretate menu, latte and tea "
5. latte.txt 파일 내용에 ice, hot을 추가하고 커밋합니다. 메시지 예시: "add latte options"
vim latte.txt
git add latte.txt
git commit -m " add latte options "
6. tea.txt 파일 내용에 ice, hot을 추가하고 커밋합니다. 메시지 예시: "add tea options"
vim tea .txt
git add tea.txt
git commit -m " add tea options "
7. menu 디렉토리를 생성하고 latte, tea 두 파일을 menu 디렉토리로 이동시킵니다.
mkdir menu
mv latte.txt tea.txt
8. 커밋합니다. 메시지 예시: "moved latte and tea files to menu directory"
git commit -m "moved latte and tea files to menu directory"
9. 현재까지의 커밋 내역을 확인합니다.
git log
'SCM > Git' 카테고리의 다른 글
[Git & GitHub 3] Branch, HEAD, git branch(생성, 삭제, 이름 변경), 브랜치 이동(git checkout, git switch) (0) | 2024.05.04 |
---|---|
[Git & GitHub 3] Atomic Commits, Commit Message (0) | 2024.05.04 |
[Git & GitHub 1] Git 설정(이름, 이메일), GitKraken 설치 (0) | 2024.05.03 |
[Git & GitHub 0] Git이란?, Git vs. GitHub (0) | 2024.05.03 |
[Git]Git 설치 (0) | 2023.12.25 |