Git 배워보기 / init, status, add, commit , log

이상기·2023년 3월 21일
0

git

목록 보기
3/9

내가 연습할 프로젝트 제작

mkdir 파일명 // 디렉토리 생성

버전관리의 시작

버전 관리를 해야할 폴더를 git에게 알려주어야한다.

이 떄 'git'을 콘솔창에 입력하면 여러 명령어 들을 볼 수 있다. 여기 중 git에게 알려주기 위해선 이 부분을 보면 된다.

이 사진을 보면 clone과 init이 있다. 둘의 차이는 아래에 있다.

git init //빈 git 저장소를 만들거나 기존 저장소를 다시 초기화.
git clone <url> //url에 해당하는 저장소를 복제해 새 디렉토리로 가져오는 명령어

clone의 경우 url 뒤에 문자열을 추가해 내가 원하는 이름으로 새 디렉토리의 이름을 정할 수 있다. 우리는 이 중 git init을 사용한다.

이것을 사용한다면 파일이 초기화되고 안에 폴더들이 생성된다.

git init 
Reinitialized existing Git repository in 해당 파일 경로

ls -al
drwxr-xr-x 1 Sang Gi 197121 0 Mar 21 17:20 ./
drwxr-xr-x 1 Sang Gi 197121 0 Mar 21 17:11 ../
drwxr-xr-x 1 Sang Gi 197121 0 Mar 21 17:21 .git/

안에 폴더들 중 .git/ 파일은 버전관리의 역할을 해주는 파일이다. 이게 지워지면 VCS는 물건너가는 것이다.

버전관리 테스트를 위한 테스트 파일 생성

vim f1.txt

위의 명령어 중
vim 부분은 'vim editor'
f1.txt 은 파일명이다.

여기서 vim은 대부분의 환경에 존재하지만 쓰기가 불편하다는 단점이 있다.
처음 글을 작성할 떄면 'i'를 누르면 Insert Mode로 전환되고 값을 입력한 후 'ESC' 키를 누르면 Insert Mode가 해제되고, ' : ' 을 입력하면 나갈 준비가 된것이다.
"w = 저장, q = 나가기, ! = 강제" 이런 구성이며 더 다양한 속성들이 존재한다.

:wq 

로 입력을 하면 저장하고 나가기가 된다.
안의 값을 보고싶다면 아래의 명령어를 사용하면 가능하다.

cat f1.txt

git status

git status 명령은 작업 디렉토리와 스테이징 영역을 표시하며, 어떤 변경사항이 스테이징되었는지 또는 안되었는지, 현재 git에서 추적이 되고있지 않은 파일이 무엇인지을 알 수 있다.

git status
On branch master

No commits yet

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

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

위의 코드처럼 git status를 사용하니 방금 막 파일을 생성한 f1.txt가 추적중이지 않다는 사실을 바로 알 수 있다.

git add

그럼 저 파일을 어떻게 해야할까? 답은 간단하다. git에게 이것을 추척하라고 추가해주면 된다.

git add f1.txt

git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   f1.txt

이렇게 진행이 된다.

어쩌면 이 시스템에 대해 의문을 갖을 수 있을 것이다.
"아니 그냥 바로바로 추가해주면 니좋고 나좋고 아님? " 이라고 생각할 수 도 있다.
하지만 이러면 안되는 이유가 존재하는데 프로젝트상 여러 이유로 존재하는 임시파일들 까지 바로바로 반영이 되면 안되기 때문이다. 만약 반영이 된채로 그걸 모르고 서비스를 시작한다면 어떤 현상이 일어날지 모르게 된다. 그렇기에 사용자가 명확히 알려주어서 이러한 일을 방지해야한다.

git config

이 코드를 통해 이 파일이 내가 올린 파일이라는 것을 명시할 수 있게 된다. 그리고 해당 파일에 나에 대한 정보를 추가할 수 있다. (이건 한 번만 하면 된다.)

git config --global user.name <이름>

git config --global user.email <메일>

이 명령어를 통해 내가 올리는 버전에서 나의 정보를 추가할 수 있다.

git 버전 만들기 (commit)

여기서 뭐가 바뀌었다고 다 버전이 올라가는게 아니라 이것이 유의미한 역할을 해야한다. 이것을 왜 말했냐면 유의미하지 않은 것들에 굳이 버젼을 붙이지 말란 뜻에서 한 것이다.

git commit

을 사용한다면

최초 버전 생성
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch master
#
# Initial commit
#
# Changes to be committed:
#	new file:   f1.txt
#

이 콘솔창에 나오게 되고 이것을 vim editor로 이루어져있기에 나는 '최초 버전 생성' 이라는 값을 입력하였다. 이렇게 입력 후 저장하고 나간다면 로컬영역에 바뀐 값이 저장된다.

git log

이 명령어를 통해 내가 생성한 버전을 볼 수 있다.

Author: SangGi <메일 >
Date:   Tue Mar 21 17:43:20 2023 +0900

    최초 버전 생성

버전 관리를 받는 파일을 수정한다면?

기존 f1.txt 파일을 수정하였다. 그 후 git status를 사용해보니 아래와 같은 문구가 나왔다.

git status
On branch master
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:   f1.txt

no changes added to commit (use "git add" and/or "git commit -a")

우리는 화면을 통해 f1.txt가 변경되었다는 것을 알 수 있다.

git에선 어떤 새로운 파일이 생기거나 기존 버전관리가 적용되던 파일또한 'git add 파일명'의 대상이다

git add f1.txt

git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   f1.txt

아까 전과 똑같은거 같지만 첫 번쨰 화면에선
modified: f1.txt였던 방면, 두 번째 화면에선
modified: f1.txt으로 수정이 되었다. 이를 통해서 바뀐 파일이 VCS에 반영되었다는 것을 알게 되었다.

이 반영된 것에 git commit을 활용하여 설명을 덧 붙인 상태로 저장한다.
그 후 git log를 사용하면 아래의 것처럼 나오게 된다.

git log
commit 540fc6247133259b10e466e760cc6c8c40952d63 (HEAD -> master)
Author: SangGi <메일 >
Date:   Tue Mar 21 18:24:24 2023 +0900

    두 번쨰 버전 실행

commit 700e946b928b587b4202794583cb7dec89eecde2
Author: SangGi <메일 >
Date:   Tue Mar 21 17:43:20 2023 +0900

    최초 버전 생성

으로 나오게 된다.

profile
DBA가 되고싶은 사람입니다

0개의 댓글