[Git/Github] 파일의 Lifecycle, staging, commit, Repository에 저장하기

soyi·2021년 3월 13일
0

Git / Github

목록 보기
5/9
post-thumbnail

💻 Repository에 저장하기


📌 파일의 LifeCycle

작업 디렉토리(working Directory) 또는 작업 트리(working tree)의 파일은 크게 Tracked(관리대상)Untracked(관리대상 아님)으로 나뉜다.

Tracked 파일은 'Git이 알고 있는 파일', '저장소에서 관리하는 파일'이라고 할 수 있으며 다음 세 가지 상태 중 하나를 가진다. 나머지는 모두 Untracked 파일이다.

  • Unmodified : 수정 안 된 파일
  • Modified : 수정 된 파일
  • Staged : commit으로 저장소에 기록할 파일. 스테이지(stage)에 올라간 파일.
  • 스테이지 Stage : 버전으로 만들 파일이 대기하는 곳. .git/index 파일에 저장됨
  • 저장소 Repository : 스테이지에서 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳. .git/HEAD 파일에 저장됨.

📌 파일의 상태 확인 : git status

현재 깃 저장소의 깃 상태 확인을 위해 git status 명령을 입력한다. 입력 후 나타나는 메시지의 의미를 간단히 정리해본다.

$ git status
On branch master		// 현재 master 브랜치에 있다.

No commits yet			// 아직 commit한 파일이 없다.

nothing to commit ...		// commit할 파일, stage에 올라온 파일이 없다.

새 파일 README를 만든 후, git status 명령을 입력해본다. 메시지의 내용이 다른 것을 확인할 수 있다. Untracked files에 README가 속해 있다. 이 외 자세한 내용은 아래에서 설명한다.

$ echo 'My Project' > README
$ git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        README

nothing added to commit but untracked files present (use "git add" to track)

📌 파일 staging 하기 : git add

새로운 파일을 생성한 후, git status 명령을 입력하여 받은 메시지 일부를 다시 확인해본다.

Untracked files:
  (use "git add <file>..." to include in what will be committed)
  // commit될 것들에 포함시키기 위해서는 "git add <file>..." 을 사용하라
        README	

nothing added to commit but untracked files present (use "git add" to track)
// commit에 추가된 것은 없으나 untracked 파일이 존재한다. 
// (track에 올리기 위해서 "git add"를 사용하라.)

작업 트리에서 만들거나 수정된 파일의 현재 상태를 스테이지에 올리는 것을 스테이징 staging이라고 한다. 스테이징 할 때 사용하는 명령이 git add <file>이다. 앞서 작성한 README를 스테이징하고 상태를 확인해본다.

$ git add README

$ git status
On branch master	// master 브랜치다

No commits yet		// 아직 commit 된 건 없고

Changes to be committed:	// commit 될 변경 사항은 다음과 같다.
  (use "git rm --cached <file>..." to unstage)
        new file:   README		// 새로운 파일 README!

💡 스테이징 후, 수정된 파일은 git add 명령으로 다시 스테이지에 올려주어야한다. 스테이지에는 git add 명령 당시의 파일 버전이 올라가있다.

$ vim modify-test		// vim으로 새로운 파일 modify-test 생성

$ git add modify-test    // modify-test 스테이징

$ git status		// git 상태 확인
On branch master

No commits yet

Changes to be committed:	// commit 될 변경 내용은 다음과 같다.
  (use "git rm --cached <file>..." to unstage)
        new file:   README		// 새로운 파일 README
        new file:   modify-test		// 새로운 파일 modify-test

$ vim modify-test		// vim에서 modify-test 수정

$ git status		// git 상태 확인
On branch master

No commits yet
		
Changes to be committed:	// commit 될 변경 내용은 다음과 같다.
  (use "git rm --cached <file>..." to unstage)
        new file:   README		// 새로운 파일 README
        new file:   modify-test		// 새로운 파일 modify-test

Changes not staged for commit:	// 스테이징 되지 않은 변경 사항들은 다음과 같다.
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   modify-test		// 수정된 modify-test

파일 수정 후, 깃 상태를 확인해보니 스테이지에 올라간 파일 목록은 수정 전과 같지만, not staged 파일 목록에 수정된 파일이 생긴 것을 확인할 수 있다.


📌 저장소로 commit : git commit

스테이지에 올라온 파일은 버전을 만들 수 있고, 버전을 만드는 것을 '커밋(commit)한다'고 말한다. 버전을 만드는 명령은 git commit으로, 보통 -m 옵션을 함께 사용하여 커밋 메시지와 함께 저장한다.

$ git commit -m "commit message"
[master (root-commit) 3f08ac6] commit message
 2 files changed, 2 insertions(+)
 create mode 100644 README
 create mode 100644 modify-test

$ git status
On branch master
nothing to commit, working tree clean
 
  • --amend 옵션은 가장 최근의 커밋 메시지를 수정할 수 있도록 해준다. vim이 실행되어 원래 커밋 메시지가 위쪽에 나타나고, 이를 수정하여 저장한다.

📌 스테이징과 커밋 한번에 하기 : git commit -am

  • git commit 명령에 -a 옵션을 추가하면 Git에서 Tracked 상태의 파일, 한번 commit한 파일들을 자동으로 staging 하고 commit 한다.
$ git commit -am "commit message"

💡 git status 메시지로 알 수 있는 파일 상태

  • Changes not staged for commit ... : 수정만 된 modified 상태
  • Changes to be committed ... : commit 직전, staged 상태
  • nothing to commit, working tree clean ... : unmodified 상태


References

profile
ヾ(^▽^*)))

0개의 댓글