배경

첫 번째 버전을 만들어 가면서 git이 버전을 어떻게 운용하고 관리하는지 알아보고자 한다. 

 

 

 

1. git init


처음 git을 사용하기 위해선 버전을 만들고 관리하기 위한 폴더를 하나 선정해야 한다. 그리고 해당 폴더에 git init 명령어를 사용하여 버전 관리를 하겠다고 설정해주어야 한다. 

본인은 바탕화면에 tmp_git_1이라는 폴더를 만들고 해당 폴더 안에 파일들을 버전으로 관리하고자 한다.

아래 명령어를 따라하면 git 초기 설정을 할 수 있다. 

$ mkdir tmp_git_1  // tmp_git_1 폴더 생성

$ cd tmp_git_1  // tmp_git_1 폴더로 이동

$ git init  // 해당 폴더 git repository 설정
Initialized empty Git repository in C:/Users/kkc28/tmp_git_1/.git/

$ ll -a  // 폴더 전체를 보면 .git폴더 생성
total 24
drwxr-xr-x 1 kkc28 197609 0 Sep 26 23:55 ./
drwxr-xr-x 1 kkc28 197609 0 Sep 26 23:55 ../
drwxr-xr-x 1 kkc28 197609 0 Sep 26 23:55 .git/

 

 

2. touch A.txt


git repository 설정이 완료되었으면, 버전 관리할 파일을 생성한다. 샘플로 touch 명령어를 사용하여 A.txt파일을 만들도록 하겠다. 독자들은 vi편집기든 여러 편집기를 사용해서 폴더를 작성해도 된다.

 

$ touch A.txt // A.txt 파일 생성

$ ll  // A.txt생성 확인
total 0
-rw-r--r-- 1 kkc28 197609 0 Sep 27 00:04 A.txt


 

 

 

3. git status


버전을 관리할 파일을 생성 완료하였으면, git status 명령어를 통해 상태를 확인한다. 파일들의 상태는 Untracked / Tracked -( modified / Unmodified ) / Staged 이렇게 나눌 수 있다. 각각의 상태는 다음과 같이 설명할 수 있다.


- Untracked : 해당 파일이 추적되지 않는 상태고, 버전 관리가 되지 않고 있는 상태
- Tracked > modified : 해당 파일이 추적되는 상태이고, 이전 버전과 현재 파일이 수정된 상태
- Tracked > unmodified : 해당 파일이 추적되는 상태이고, 이전 버전과 현재 파일의 내용이 같은 상태
- Staged : 해당 파일이 추적되어 있는 상태이고, 해당 파일을 최신 버전으로 업로드 하기 직전 상태

 

 

$ git status
No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
bash: $: command not found
        A.txt

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


위에 상태를 보면 새로 만든 A.txt는 Untracked인 상태이다. 해당 폴더 및 파일은 별도로 버전을 생성한 적이 없기 때문이다. 

 

4. git add, git commit


우리는 A.txt를 신규 버전에 포함된 파일로 등록하려고 한다. 이를 위해선 해당 파일을 stage에 올리고, commit을 해야 한다. 여기서 stage란 가상의 장소로 변경점이 있거나 새롭게 버전에 포함시키려 하는 폴더들을 올리려는 무대라고 생각하면 된다.  

파일을 stage에 올리는 방법은 1) git add <filename> 명령어를 사용한다. stage에 버전으로 등록하려는 파일이 올라가면, 이후 2) git commit -m "<버전을 설명할 수 있는 정보>"로 버전을 생성한다. 

 

*commit은 완료한다는 뜻으로 "어떤 버전으로 이름을 등록하고 버전을 완료한다" 이정도로 이해하면 된다. 

 

$ git add A.txt  // stage에 A.txt올리기


$ git status  // git 상태 확인 -> untracked에서 staged되었다. 아래 changes to commited가 staged의 뜻
On branch master

No commits yet

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


$ git commit -m "first version upload A.txt"  // git commit을 통해 버전 등록
[master (root-commit) 39c17eb] first version upload A.txt
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 A.txt

$ git log  // git 버전 등록 완료 
commit 39c17ebc124b5e5171878dbe1d1293f39fa65132 (HEAD -> master)
Author: 
Date:   Tue Sep 27 00:26:53 2022 +0900

    first version upload A.txt

이상으로 git을 이용해 첫번째 버전을 만들어 보았다. 

 

 

*Reference

- "지옥에서 온 문서 관리자 깃&깃허브 입문" 이지스버블리싱 - 이고요, 고경희 지음

 

부족한 글이지만 읽어주셔서 감사합니다. 

이전 글의 마지막에서도 git을 시작한 이후 사용자 등록에 대해 간략하게 써 놓았다. (아래 글 참조)

2022.06.25 - [프로그래밍/GIT] - (0) GIT 이란?

 

이번에는 사용자 등록에 대한 기본적인 내용을 복기하고 등록된 사용자 확인 및 error상황에 원인을 확인하고 해결하고자 한다. 

 

1. 사용자 등록 및 확인


어떤 버전을 누가 언제 만들었는지 쉽게 파악하기 위해 사용자 정보를 입력해야 한다.

git config 명령을 사용하며 --global 옵션을 추가하면 현재 컴퓨터에 있는 모든 저장소에서 같은 사용자 정보를 사용하도록 한다.  추가로 등록된 사용자를 확인하기 위해서 --get user.name --get user.email --list 옵션을 사용한다. 

 

//사용자 등록
git config --global user.name "someone" // 사용자의 이름을 등록
git config --global user.email "email" // 사용자의 이메일 등록
//등록된 사용자 확인
git config --get user.name // 사용자의 이름 확인
git config --get user.eamil // 사용자의 이메일 확인

git config --list //config에 등록된 정보 확인

 

<git config --list 출력결과>

<git config --list 출력결과>

 

git config --list
diff.astextplain.textconv=astextplain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
http.sslbackend=openssl
http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
core.autocrlf=true
core.fscache=true
core.symlinks=false
credential.helper=manager-core
pull.rebase=false
credential.https://dev.azure.com.usehttppath=true
init.defaultbranch=master
user.name=someone
user.email=email
core.repositoryformatversion=0
core.filemode=false
core.bare=false
core.logallrefupdates=true
core.symlinks=false
core.ignorecase=true

 

 

2. 등록된 사용자 변경 및 삭제


기존에 등록된 사용자의 정보를 변경하기 위해선 기존에 사용하였던 git config --global user.name  

git confir --global user.email 명령어를 재사용해주면 된다. 

 

//사용자 변경
git config --global user.name "someone" // 변경할 사용자의 이름을 등록
git config --global user.email "email" // 변경할 사용자의 이메일 등록

 

기 등록된 사용자의 정보를 삭제하고 싶을 땐 git config --global --unset user.name

git config --global --unset user.email 명령어를 사용한다. 확인은 동일하게 git config --list를 사용하면 기존에 등록했던 정보(user.name, user.email)가 사라진다,

//사용자 삭제
git config --global --unset user.name // 사용자의 이름을 삭제
git config --global --unset user.email // 사용자의 이메일 삭제

//삭제 여부 확인
git config --list

 

3. 사용자 미등록 오류 (error)


등록된 사용자가 없는 상태로 commit을 하게 되면 다음과 같은 에러가 발생한다. 

커밋을 하려고 하는 사람이 누군지 모르니 등록을 해달라고 하는 부분이다. 

그럼 사용자 등록을 해주면 간단히 해결된다. 

 

$ git commit -m "add test.txt"
Author identity unknown

*** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

 

 

<해결방법>

//사용자 등록
git config --global user.name "someone" // 사용자의 이름을 등록
git config --global user.email "email" // 사용자의 이메일 등록

 

 

 

 

*Reference

- "지옥에서 온 문서 관리자 깃&깃허브 입문" 이지스버블리싱 - 이고요, 고경희 지음

 

부족한 글이지만 읽어주셔서 감사합니다. 

배경

 어제 학습한 add, commit은 변경사항이 생겼을 때 버전정보를 업데이트 하는 것이라면, 이전 버전으로 돌아가는 방법에 대해 학습해 보려고 한다.

 

1. 이전 버전으로 복구


① Git 구조

 Git버전은 작업 트리에서 변경된 내용이 있으면 스테이지에 add를 하고 변경된 정보를 저장소에 저장(Commit)을 하게 된다. 반대로 커밋된 내용으로 부터 과거로 돌아갈 때는 git reset, 커밋되기 전 스테이지에서 작업트리로 돌아갈 때 git restore --staged <file>, 작업트리에서 수정한 이후 파일이 정상적으로 돌아가지 않을 때 git restore <file>를 사용하는 것에 대해 자세하게 알아보려고 한다. 

 

② git reset

 생성된 버전에 대해서 다시 과거 버전으로 돌아갈 때 사용하는 명령어이다. 변경하는 방법은 다음과 같다. 

// 돌아가고 싶은 git 해시 확인 //
git log

// 돌아가려는 버전으로 변경 (해당 해시 이후 변경된 내용은 삭제) //
git reset --hard 돌아가려는 커밋해시


// 만약 돌아가려는 버전이 바로 전 버전일 경우 //
git reset --soft HEAD^

 

③ git restore --staged <file>

스테이징 된 파일을 취소할 때 다음과 같은 명령어를 사용한다. 

/* git 상태 확인 - 상태가 changes to be committed 일 때 */
git status

/* 스태이지에서 해당 파일을 내리는 방법 */
git restore --staged <filename>

/* git 상태 확인 */
git status

 

 

④ git restore <file>

파일을 수정한 뒤 소스가 정상적으로 동작을 안하는 등의 이유로 수정한 내용을 취소하려면 다음과 같은 명령어를 사용한다.

/* 수정된 파일 확인 */
git status
----------------------------------------------------------------------
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:   hello.txt
----------------------------------------------------------------------

/* 수정된 파일을 원래대로 복구 */ 
git restore <file>

/* 상태확인 - modified 사라짐 */
git status

 

 

 

*Reference

- "깃&깃허브 입문" - 이지스퍼블리싱

-

-

 

부족한 글이지만 읽어주셔서 감사합니다. 

 

배경

 깃이란 소스코드를 효과적으로 관리하기 위한 시스템이고 깃의 핵심기능은 버전관리, 백업, 협업이었다. 그 중 버전관리 기능에 대해 알아보려고 한다.  

 

깃으로 버전을 관리한다는 것은

1) 저장소를 만들고, 2)변경사항이 있을때 버전을 생성하고, 3)다시 원상태로 돌리는 것이다. 

이번에는 저장소 생성 및 버전을 생성하는 부분까지 정리해보도록 하겠다. 

 

1. 깃 저장소 만들기


새로운 프로젝트를 하기 위해서 폴더를 만들게 되는데, 이렇게 생성된 폴더의 소스코드들을 관리하기 위해 git을 사용하려고 한다. 그러기 위해 해당 폴더에 깃 저장소를 생성해야 된다. 아래 코드를 따라가자.

 

mkdir project_test // project_test 폴더를 생성
cd ./project_test // project_test 저장소로 이동

git init // project_test 폴더에 저장소를 생성
// Initialized empty Git repository in C:/Users/project_test/.git/ <- 이런식으로 작성되면 해당디렉토리를 깃을 사용할 수 있다.

 

 

2. 깃 버전 생성 및 관리


① 깃의 구조

 깃 버전을 생성하기에 앞서 깃의 구조에 대해 먼저 알아봐야 한다. git은 작업트리, 스테이지, 저장소 세개의 공간으로 나뉘어 지게 된다. 그리고 아래 그림의 add, commit, restore, reset의 명령어를 통해 설정이 되게 된다. 

 - 작업트리 : 파일 수정, 저장등의 작업을 하는 디렉토리로 위에서 보이는 ./project_test 내의 공간을 말합니다.
 - 스테이지 : 버전으로 만들 파일이 대기하는 곳,
                     ./project_test에서 버전을 통해 관리하고 싶은 파일들만 스테이지로 저장하게 된다.

 - 저장소 : 스테이지에 대기하고 있던 파일들을 버전으로 만들어 저장.

 

② 깃 버전의 생성

 깃 버전의 생성 과정을 통해 status, log, add 및 commit명령어의 사용법에 대해 알아보고자 한다.

git status : 현재 작업트리의 git 상태를 확인한다. (기존 버전 대비 변경된 내용의 파일이 있는지?, 신규 생성된 파일이 있는지?)
git log : 해당 branch의 버전 변경 기록을 확인한다.
git add : 변경된 사항이 있을 경우. 신규버전 생성을 위해 스테이지로 변경 내용을 등록한다.
git commit -m : 스테이지에 등록된 변경사항을 반영하여 신규 버전을 생성한다. 
/* 신규파일 등록 */
vi test.txt  // 관리해야할 test.txt 파일 생성
// vim 편집기에서 i를 누른다 (insert : 입력)
// vim 편집기에 a/b/c/d/e를 입력한다.
// vim 편집기에서 esc버튼을 누른 뒤 wq를 작성하고 엔터 (저장후 나가기)

git status // git의 상태를 확인
// Untracked files test.txt 새로 등록한 파일이기에 git에서 추적을 못한다.
----------------------------------------------
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   hello.txt

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



/* 스테이징 */
git add test.txt // 수정 또는 생성한 파일을 스테이지로 등록한다.
git status // git의 상태를 확인
// 스테이지로 test.txt파일이 옮겨저 저장소로 커밋할 상태가 되었다.
----------------------------------------------
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   hello.txt
        new file:   test.txt
----------------------------------------------



/* 저장소로 커밋 */
git commit -m "new file test.txt" // 스테이지에 등록된 파일을 커밋하여 저장소로 옮겨 신규 버전저장
git log // 버전 정보들을 확인한다. 
----------------------------------------------
commit 2a90767a070d85bebdbaa5f54b72b8e5d7043b45 (HEAD -> master)
Author: -----
Date:   Sun Jun 26 14:01:04 2022 +0900

    new file test.txt
----------------------------------------------

 

 

 

 

*Reference

- "깃&깃허브 입문" 이지스퍼블리싱

 

부족한 글이지만 읽어주셔서 감사합니다. 

+ Recent posts