본문 바로가기
GitHub

Git 설치부터 버전등록 / 변경사항 확인

by avvin 2019. 8. 8.


TEST

1. 폴더 만들기( mkdir )

2. 생성한 폴더에서(cd gittest) 깃 등록 ( git init )

3. 텍스트파일 생성 후 git이 추적하도록 등록 ( vim / git add ) 

// 6번에서 git 추적 등록하는 과정, 수정 후에도 일일히 add해줘야한다.

4. 텍스트 파일 수정( i / esc / :wq )

5. 프로젝트 폴더 상태 확인(status)

6. 생성, *수정한 텍스트 파일 git이 추적하도록 등록(add)

7. 사용자 등록 (최초 1회만 ) : git config --global user.name OOO  / git config --global user.email OOO@xxx.xxx

8. 커밋( 버전 등록 ) (git commit / i / esc / :wq )

9. 로그 확인 ( git log )

10. 파일 수정 후 version2로 등록하기 ( git add f1.txt / commit )

(add 시에 CRLF 관련 에러가 뜬다면 git config --glovbal(전체 프로젝트에 적용하는 경우) core.autocrlf true 입력 후 

 다시 add )

11. 로그확인 




*새로운 파일의 버전관리 맡길때, 이미 버전관리가 되고있는 파일 수정하고 버전 생성할 때도 add

add먼저 하고 커밋.  add하고나면 변경사항이 commit 목록에 올라가고, 그 후에 commit


- git 설치




- git bash : 윈도우를 리눅스나 유닉스 계열의 컴퓨터 명령어를 통해 제어할 수 있게 해주는 프로그램


     git bash 실행


1
2
3
user@DESKTOP-7HBP03L MINGW64 ~
$ pwd
/c/Users/user



- $pwd : 현재 위치 알려줌



- 1. 프로젝트 폴더 만들기


원하는 경로로 이동한 후 프로젝트 파일을 만듭시다. 

1
mkdir gittest

프로젝트 디렉토리로 들어갑니다. 

1
cd gittest

현재 디렉토리를 git의 (버전) 저장소로 만듭니다. 

1
git init


* Git Bash 복사 / 붙여넣기 단축키


복사 : Ctrl + Insert

붙여넣기 : Shift + Insert


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
user@DESKTOP-7HBP03L MINGW64 ~
$ pwd
/c/Users/user
 
user@DESKTOP-7HBP03L MINGW64 ~
$ cd E:\ << 이렇게 입력하면 E:로 가지 않고 뒤에 나올 경로 입력을 기다림. 역슬래쉬 빼주기
 
user@DESKTOP-7HBP03L MINGW64 ~
mkdir gittest
 
user@DESKTOP-7HBP03L MINGW64 ~
$ cd gittest
 
user@DESKTOP-7HBP03L MINGW64 ~/gittest
$ ls -al
total 16
drwxr-xr-1 user 197121 0 8월   8 11:49 ./
drwxr-xr-1 user 197121 0 8월   8 11:49 ../
 
user@DESKTOP



//git 도움말 보기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
user@DESKTOP-7HBP03L MINGW64 ~/gittest
$ git
usage: git [--version] [--help] [-<path>] [-<name>=<value>]
           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-| --paginate | -| --no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
           <command> [<args>]
 
These are common Git commands used in various situations:
 
start a working area (see also: git help tutorial)
   clone      Clone a repository into a new directory
   init       Create an empty Git repository or reinitialize an existing one
 
work on the current change (see also: git help everyday)
   add        Add file contents to the index
   mv         Move or rename a file, a directory, or a symlink
   reset      Reset current HEAD to the specified state
   rm         Remove files from the working tree and from the index
 
examine the history and state (see also: git help revisions)
   bisect     Use binary search to find the commit that introduced a bug
   grep       Print lines matching a pattern
   log        Show commit logs
   show       Show various types of objects
   status     Show the working tree status
 
grow, mark and tweak your common history
   branch     List, create, or delete branches
   checkout   Switch branches or restore working tree files
   commit     Record changes to the repository
   diff       Show changes between commits, commit and working tree, etc
   merge      Join two or more development histories together
   rebase     Reapply commits on top of another base tip
   tag        Create, list, delete or verify a tag object signed with GPG
 
collaborate (see also: git help workflows)
   fetch      Download objects and refs from another repository
   pull       Fetch from and integrate with another repository or a local branch
   push       Update remote refs along with associated objects
 
'git help -a' and 'git help -g' list available subcommands and some
concept guides. See 'git help <command>' or 'git help <concept>'
to read about a specific subcommand or concept.
 
 




1
2
3
4
5
6
7
8
$ git init
Initialized empty Git repository in C:/Users/user/gittest/.git/
 
$ ls -al
total 20
drwxr-xr-1 user 197121 0 8월   8 11:57 ./
drwxr-xr-1 user 197121 0 8월   8 11:49 ../
drwxr-xr-1 user 197121 0 8월   8 11:57 .git/
cs



- 2. git이 관리할 대상으로 파일 등록



파일을 생성합니다. // vim이라는 프로그램(editor 프로그램)으로 f1.txt를 수정하기

1
vim f1.txt

" i " 입력하면 insert 모드로 >> 입력 >> 입력 완료 후 [ esc ] : 다시 입력할 수 없는 상태로

>> 다시 i 누르면 입력모드 >> esc로 입력 종료한 후 >> :wq ( : write quit) 입력  

>> vim 대신 cat f1.txt로 파일 내용 읽기 가능


프로젝트 폴더의 상태를 확인합니다. 

1
git status


Untracked files(git이 관리하고 있지 않은 파일) 목록을 보여줌 // 방금 생성한 f1.txt가 뜸


git이 파일을 추적(관리)하도록 명령합니다.

1
git add f1.txt


-3. 버전 만들기


사용자 등록

1
2
git config --global user.name "자신의 닉네임"
git config --global user.email "자신의 이메일"


파일 수정 후 git add / commit ( i / esc / :wq ) / git log


add는 stage area로 올려주고, commit은 stage area에 있는 파일들을 repository에 업로드함


1
2
3
4
5
6
7
8
9
10
11
12
13
git log
commit 426cd69f7e58e2c229f01b6b636a0211e08e77b7 (HEAD -> master)
Author: abn <abn_abn@naver.com>
Date:   Thu Aug 8 14:35:17 2019 +0900
 
    version2
 
commit b8a961051e22f7eb6c545ea470e6d33a0936263b
Author: abn <abn_abn@naver.com>
Date:   Thu Aug 8 14:12:45 2019 +0900
 
    version1
 



[ERROR]

fatal: not a git repository (or any of the parent directories): .git

>> 프로젝트 폴더 생성하고 git init으로 등록을 안해줘서 뜨는 에러


[ERROR]

warning: LF will be replaced by CRLF in f1.txt.

The file will have its original line endings in your working directory


: 이는 맥 또는 리눅스를 쓰는 개발자와 윈도우 쓰는 개발자가 Git으로 협업할 때 발생하는 Whitespace 에러다. 

  유닉스 시스템에서는 한 줄의 끝이 LF(Line Feed)로 이루어지는 반면, 

  윈도우에서는 줄 하나가 CR(Carriage Return)와 LF(Line Feed), 즉 CRLF로 이루어지기 때문이다. 

  따라서 어느 한 쪽을 선택할지 Git에게 혼란이 온 것이다.

  Git은 똑똑해서 이를 자동 변환해주는 core.autocrlf 라는 기능을 가지고 있는데, 이 기능을 켜주기만 하면 된다.


해결 방법 (윈도우 사용자의 경우)

git config --global core.autocrlf true


출처 : https://blog.jaeyoon.io/2018/01/git-crlf.html




-4. 변경사항 확인 :  git log


git log에 옵션 주기


log -p  // 각각의 커밋과 커밋 사이 소스 상의 차이를 알려줌

--- 뒤의 내용은 이전 버전, +++뒤의; 내용은 이후 버전에 대한 설명


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
user@DESKTOP-7HBP03L MINGW64 /e/gittest (master)
$ git log -p
commit 426cd69f7e58e2c229f01b6b636a0211e08e77b7 (HEAD -> master)
Author: abn <abn_abn@naver.com>
Date:   Thu Aug 8 14:35:17 2019 +0900
 
    version2
 
diff --git a/f1.txt b/f1.txt
index 4567ca4..de9f46b 100644
--- a/f1.txt
+++ b/f1.txt
@@ -1 +1 @@
-hello git~
+hello git~ version2
 
commit b8a961051e22f7eb6c545ea470e6d33a0936263b //커밋 고유 주소, 커밋
Author: abn <abn_abn@naver.com>
Date:   Thu Aug 8 14:12:45 2019 +0900
 
    version1
 
diff --git a/f1.txt b/f1.txt
new file mode 100644
index 0000000..4567ca4




git log b8a961051e22f7eb6c545ea470e6d33a0936263b (커밋 고유 아이디) // 해당 아이디와 그 이전 버전 로그만 출력



특정 커밋과 또다른 특정 커밋 사이의 차이점을 알고싶다면


git diff b8a961051e22f7eb6c545ea470e6d33a0936263b..426cd69f7e58e2c229f01b6b636a0211e08e77b7



-5. 과거 버전으로 돌아가기 / 커밋 취소


방법 두 가지 : reset VS revert //resert는 나중에


경계를 주의할것!

버전 5와 4를 지우고 버전 3으로 돌아갈 때

git reset [ 버전3의 커밋아이디 ] --hard //hard에 대한 자세한 내용은 나중에 설명


reset으로 이전버전으로 돌려도 복구는 가능하다. 

// 원격 저장소를 사용할 때 (여럿이 함께 작업할 때)는 절대 reset을 사용하면 안된다.