Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
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
Archives
Today
Total
관리 메뉴

폐관수련

Git 본문

Programming

Git

믜믜 2021. 10. 3. 04:24

 

깃의 핵심 기능

버전 관리백업협업

 

깃 환경 설정

버전을 저장할 때마다 그 버전을 만든 사용자 정보도 함께 저장하므로 사용자 정보를 입력해야 한다.

 

$ git config --global user.name "SongLim"
$ git config --global user.email "xxng@kakao.com"

--global : 현재 컴퓨터에 있는 모든 저장소에서 같은 사용자 정보를 사용하도록 하는 옵션

 

 

리눅스 명령어

터미널 창에서 깃을 사용하기 위해 쓰는 명령은 리눅스의 명령과 같다.

$ pwd			: 현재 위치 경로
$ ls			: 현재 디렉터리의 파일이나 디렉터리 확인
$ cd ..			: 상위 디렉터리 이동
$ cd 하위디렉터리명	: 하위 디렉터리 이동
$ cd ~			: 홈 디렉터리 이동

$ mkdir 디렉터리명	: 디렉터리 생성
$ rm -r 디렉터리명	: 디렉터리 삭제, 하위 디렉터리 함께 삭제 옵션 (상위 디렉터리에서 실행해야 함)

$ vim 파일명		: 새로운 텍스트 파일을 만들거나 동일한 이름이 있다면 불러오기 (저장 모드인 ex 모드로 열리므로 I또는A 키로 입력 모드로 전환)
$ cat 파일명		: 텍스트 파일 내용을 화면에 표시

$ clear			: 터미널 창의 내용 삭제
$ exit			: 터미널 창 종료

 

깃으로 버전 관리

깃 저장소 만들기

저장소를 만들고 싶은 디렉터리로 이동해서 깃을 초기화하면 그때부터 해당 디렉터리 파일들을 버전 관리 할 수 있다.

$ git init			: 현재 디렉터리에 저장소를 만들기 위해 초기화
$ git init 디렉터리이름		: 새로운 디렉터리 생성 후 초기화

? 디렉터리가 비워져있어야만 만들 수 있는가 : 나중에 찾아보고 추가하겠습니다.

 

버전 만들기

  • 작업 트리 (작업 디렉터리) : 파일 수정, 저장 등의 작업을 하는 디렉터리. 우리 눈에 보이는 디렉터리.
  • 스테이지 (스테이징 영역) : 버전으로 만들 파일이 대기하는 곳. .git 디렉터리이다.
  • 저장소 (리포지토리) : 스테이지에서 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳. .git 디렉터리이다.

깃을 초기화하면 .git 디렉터리가 만들어지는데 숨은 파일 형태로 존재한다.

작업 트리에서 문서를 수정하고, 수정한 파일 중 버전으로 만들고 싶은 것을 스테이징 영역인 스테이지에 저장한다. 스테이지에 있던 파일을 저장소로 커밋하면 깃이 버전을 만든다.

untracked files : 깃에서 아직 한 번도 버전 관리하지 않은 파일.

 

$ git add 파일명			: 수정한 파일을 스테이지에 추가
$ git add .			: 현재 저장소에서 수정된 파일을 한꺼번에 스테이지에 추가

스테이지에 올릴 때 윈도우의 줄바꿈 문자와 리눅스의 줄바꿈 문자가 다르기 때문에 경고 메시지가 나타난다. 사용자가 따로 조치를 해야하는 것은 아니므로 넘어간다.

warning: LF will be replaced by CRLF in 파일명

처음에 당황해서 꺼버렸다...

 

$ git commit -m "커밋과 함께 저장할 메시지 내용"

파일이 스테이지에 있다면 깃에서 버전을 만드는 커밋을 할 수 있다.

커밋할 때 옵션으로 메시지를 함께 기록할 수 있다.

 

$ git commit -am "커밋과 함께 저장할 메시지 내용"

한 번 커밋한 파일이라면 commit 명령에 -am 옵션을 붙여서 스테이징과 커밋을 한꺼번에 처리할 수 있다.

 

$ git commit --amend

가장 최근의 커밋 메시지를 수정할 수 있는 명령으로, 기본 편집기인 빔이 실행되면서 커밋 메시지가 화면 위쪽에 나타나는데 이를 수정하면 된다.

 

커밋 내용 확인

$ git log			: 커밋 기록 확인
$ git diff			: 작업 트리 파일과 스테이지 파일을 비교

 

파일 상태 확인

깃에서는 버전을 만드는 각 단계마다 파일 상태를 다르게 표시한다.

$ git status			: 상태 확인
$ git log --stat		: 커밋에 관련된 파일까지 함께 확인

작업 트리에 있는 파일은 크게 tracked 상태와 untracked 상태로 나뉜다.

깃은 한 번이라도 커밋한 파일의 수정 여부를 계속 추적하며 이를 tracked 파일이라고 한다.

 

  • unmodified 상태 : 작업 트리에 있는 모든 파일이 수정되지 않은 상태
  • modified 상태 : 파일이 수정만 된 상태
  • staged 상태 : 커밋 직전 단계인 staged 상태. 커밋을 다 했다면 다시 unmodified 상태로 되돌아 간다.

 

버전 관리 제외

버전 관리 중인 디렉터리 안에 버전 관리를 하지 않을 특정 파일 또는 디렉터리가 있다면 .gitignore 파일을 만들어 목록을 지정할 수 있다.

빔을 사용하여 .gitignore 파일을 만들어 그 안에 버전 관리하지 않을 파일 또는 디렉터리 이름이나 파일 확장자를 입력.

텍스트파일이름.txt			: 제외 파일 지정
Ex/					: 제외 디렉터리 지정
.txt					: 제외 확장자 지정

 

작업 취소

$ git checkout -- 파일이름

작업 트리에서 수정한 내용을 쉽게 취소할 수 있는 명령.

checkout으로 되돌린 내용은 다시 복구할 수 없다.

 

$ git reset HEAD (파일이름)

스테이징한 수정된 파일을 스테이징 취소할 경우 사용하는 명령.

HEAD 다음에 파일 이름을 지정하지 않을 경우 스테이지에 있는 모든 파일을 되돌린다.

 

$ git reset HEAD^			: 가장 최신 커밋을 되돌린다
$ git reset HEAD~숫자			: 최근 n개의 커밋을 되돌린다

$ git reset --soft HEAD^		: 최근 커밋을 하기 전 상태로 작업 트리를 되돌린다.
$ git reset --mixed HEAD^		: 최근 커밋과 스테이징을 하기 전 상태로 작업 트리를 되돌린다. 기본 옵션.
$ git reset --hard HEAD^		: 최근 커밋과 스테이징, 파일을 수정하기 전 상태로 작업 트리를 되돌린다. 복구 불가.

이 방법으로 커밋을 취소할 경우 이 커밋 전에 했던 스테이징도 함께 취소된다.

 

$ git reset --hard 커밋해시(=커밋ID)

커밋 해시 지점으로 되돌린다. 그 이후에 했던 커밋은 삭제된다.

커밋 해시(=커밋ID)는 git log 명령을 통해 확인할 수 있다.

 

$ git revert 커밋해시

취소할 커밋 해시를 지정한다.

revert 명령을 실행할 때는 기본 편집기가 자동으로 나타나면서 커밋 메시지를 입력할 수 있다.

 

브랜치

기본적으로 master라는 브랜치가 만들어진다.

사용자가 커밋할 때마다 master 브랜치는 최신 커밋을 가르킨다. (포인터와 비슷하다)

 

기존에 저장한 파일을 master 브랜치에 그대로 유지하면서 기존 파일 내용을 수정하거나 새로운 기능을 구현할 파일을 만들 수 있다.

master 브랜치에서 뻗어 나오는 새 브랜치를 만드는 것을 '분기(branch)한다'라고 한다.

새 브랜치에서 원하는 작업을 마쳤다면 새 브랜치에 있던 파일을 원래 master 브랜치에 합칠 수 있다.

분기했던 브랜치를 master 브랜치에 합치는 것을 '병합(merge)한다'라고 한다.

 

브랜치 생성 및 정보 확인

$ git branch 브랜치이름			: 새로운 브랜치 생성
$ git branch				: 현재 저장소의 브랜치 확인

$ git checkout 이동할브랜치이름		: 브랜치 이동. 이동할 브랜치로 체크아웃한다.

$ git log --oneline		: 한 줄에 한 커밋만 나타내는 옵션 추가
$ git log --oneline --branches	: 각 브랜치의 커밋을 함께 보는 옵션 추가
$ git log --oneline --branches --gragh	: 그래프 형태로 보는 옵션 추가
$ git log 브랜치이름..다른브랜치이름	: 브랜치끼리의 차이점 확인. 앞에 브랜치에는 없ㄱ 뒤에 브랜치에만 있는 커밋을 보여줌.

브랜치를 만든 시점까지의 커밋이 새로운 브랜치에 적용된다.

분기된 이후에 master 브랜치에 추가된 커밋은 새로운 브랜치에 적용되지 않는다.

 

브랜치 병합

$ git merge 병합할브랜치이름

$ git merge 병합할브랜치이름 --no-edit		: 브챈치 병합 후 자동으로 나타나는 편집기 창이 열리지 않도록 하는 옵션.
$ git merge 병합할브랜치이름 --edit		:브랜치 병합 후 편집기 창을 다시 자동으로 나타나게 하는 옵션.
  • 서로 다른 파일 병합 : 파일이 브랜치에 합쳐짐
  • 같은 문서의 다른 위치 수정 후 병합 : 자연스럽게 하나의 파일에 합쳐짐
  • 같은 문서의 같은 위치 수정 후 병합 : 사용자가 직접 충돌 부분을 해결한 후 커밋해야 함

 

브랜치 삭제

$ git branch -d 브랜치이름			: 브랜치 삭제 옵션을 추가하면 삭제
$ git branch -D 브랜치이름			: master 브랜치에 병합하지 않은 브랜치를 삭제할 경우 오류가 발생하지만 강제로 삭제

브랜치를 삭제할 경우 기본 브랜치인 master 브랜치로 체크아웃 후 삭제를 해야한다.

 

삭제한 브랜치와 같은 이름으로 다시 브랜치를 만들면 예전에 작업했던 내용이 그대로 나타난다.

즉, 브랜치를 삭제한다는 것은 완전히 저장소에서 없애는 것이 아닌 깃의 흐름 속에서 감추는 것이다.

 

깃허브

  • 지역 저장소 (local repository) : 컴퓨터 내부 저장소.
  • 원격 저장소 (remote repository) : 지역 저장소가 아닌 컴퓨터나 서버에 만든 저장소. 지역 저장소와 연결되어 있다.

 

원격 저장소 사용

$ git init 지역저장소이름			1. 지역 저장소 생성
$ cd 지역저장소이름

$ git add 파일이름				2. 파일 커밋
$ git commit -m "커밋메시지"

$ git remote add origin 깃허브저장소주소		3. 원격 저장소 연결

$ git push -u origin master			4. 지역 저장소의 브랜치를 원격 저장소의 master 브랜치인 origin에 푸시

$ git commit -am "커밋메시지"			5. 한 번이라도 커밋한 파일(tracked파일)은 스테이징과 커밋을 한 번에 할 수 있다

$ git push					6. origin과 master가 연결되어 있으므로 다시 푸시할 때는 간단하게 가능

 

'Programming' 카테고리의 다른 글

포트폴리오  (0) 2024.01.26
Comments