Git 기초 버전 관리

Heena·2022년 8월 7일
0

git

시작하기 전

  • 옵션 확인
git
  • 환경 설정 목록 확인
git config --list
  • 사용자 정보 설정
git config --global user.name "UserName"
git config --global user.email "UserId@gmail.com"
  • 세 가지 상태
    • 작업 트리(Working Tree, Working Directory)
      : 파일 수정, 저장 등의 작업을 하는 디렉터리
    • 스테이지(스테이징 영역, Staging Area)
      : 버전으로 만들 파일이 대기하는 곳 (.git/index 파일에 저장)
    • 저장소(Repository, .git directory)
      : 스테이지에서 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳(.git/HEAD 파일에 저장)
  • 상태 확인
    • On branch master : 현재 master 브랜치에 있음
    • No commits yet : 아직 커밋한 파일이 없음
    • nothing to commit, working tree clean
      : 현재 커밋할 파일이 없음(unmodified 상태)
    • Untracked files : 한번도 버전 관리를 하지 않은 파일
    • Changes not staged for commit
      : 변경된 파일이 스테이지에 올라가지 않음(modified 상태)
    • Changes to be commited
      : 커밋할 변경 사항이 있음(staged 상태)
git status

기초

1. 깃 저장소 생성(git init)

'git init(initialized)' 명령어를 통해 현재 디렉터리를 깃을 사용할 수 있도록 초기화한다. 깃을 사용하면서 버전이 저장될 저장소(repository)에 해당하는 '.git' 디렉터리가 숨김 파일로 생성된다. 'Initialized empty Git repository...' 메시지 표시 후 사용 가능하다.

git init

2. 스테이징 영역에 추가(git add)

'git add' 명령어를 통해 현재 디렉터리의 파일을 스테이징 영역에 올릴 수 있다. 스테이징 내용을 '.git/index' 파일에 저장하기 때문에 '인덱스에 등록한다'라고 표현할 수도 있다. 스테이징 영역에 있는 파일은 버전으로 만들 수 있다.

git add {파일명}

3. 파일 커밋(git commit)

'git commit' 명령어를 통해 스테이징 영역의 파일을 버전으로 만들 수 있다. -m 옵션을 사용하여 함께 저장할 메시지를 저장할 수 있다.
'git commit --amend' 명령어를 사용하여 최근 커밋 메시지를 수정할 수 있다.

git commit -m 'message'

4. 수정 파일 되돌리기(git checkout)

'git checkout' 명령어를 통해 작업 트리에서 수정한 파일의 변경 사항을 취소할 수 있다. 단, checkout으로 되돌린 내용은 다시 복구할 수 없다.

git checkout -- {파일명}

심화

스테이징/커밋 일괄 처리(git commit -am)

-am 옵션을 사용하여 스테이지에 올리고 커밋하는 과정을 일괄 처리할 수 있다. 단, 한 번이라도 커밋한 적이 있는 파일을 다시 커밋할 때만 사용 가능하다.

git commit -am 'message'

버전/로그 확인(git log)

'git log' 명령어를 통해 다음과 같은 버전 정보를 확인할 수 있다. 다음과 같은 정보를 묶어 간단히 '커밋 로그'라고 한다. --stat 옵션을 사용하여 관련된 파일까지 함께 확인할 수있다.

  • 커밋 로그
    • 커밋 해시(commit hash)/깃 해시(git hash) : 커밋 구별 아이디
    • 버전 (예, HEAD -> master : 최신 버전)
    • 작성자(Author)
    • 버전 생성일(Date)
    • 커밋 메시지
git log

변경 사항 확인(git diff)

'git diff' 명령어를 통해 작업 트리에 있는 파일과 스테이지에 있는 파일을 비교할 수 있다. 추가한 내용은 "+" 기호와 함께, 삭제한 내용은 "-" 기호와 함께 표시된다.

git diff

되돌리기(git reset)

  • git reset HEAD {파일명}
    스테이징 영역에 올라간 파일이 커밋되기 전 되돌릴 수 있다.
git reset HEAD {파일명}
  • git reset HEAD^
    HEAD^는 현재 HEAD가 가리키는 브랜치의 최신 커밋을 가리킨다. 최신 커밋을 되돌릴 수 있다.
    • --soft HEAD^
      : 최근 커밋을 하기 전 상태로 작업 트리를 되돌린다.
    • --mixed HEAD^
      : 최근 커밋과 스테이징을 하기 전 상태로 작업 트리를 되돌린다. 옵션 없이 git reset 명령 사용시 해당 옵션이 기본 작동한다.
    • --hard HEAD^
      : 최근 커밋과 스테이징, 파일 수정을 하기 전 상태로 작업 트리를 되돌린다. 이 옵션으로 되돌린 내용은 복구할 수 없다.
git reset HEAD^
  • git reset HEAD~{n}
    최근 커밋된 n개의 파일을 되돌릴 수 있다.
git reset HEAD~{n}
  • git reset 커밋 해시
    커밋 해시에 해당하는 커밋을 최신 커밋으로 되돌릴 수 있다. 지정한 커밋 해시 이후 커밋은 삭제된다.
git reset --hard {커밋 해시}

커밋 삭제하지 않고 되돌리기(git revert)

커밋 해시에 해당하는 커밋을 최신 커밋으로 되돌릴 수 있다. 단, 지정한 커밋을 삭제하는 것이 아닌 변경했던 이력을 취소한 새 커밋을 만든다.

git revert {커밋 해시}

참고

git add 시 경고 메시지 발생 이유

Git에서 사용하는 명령은 리눅스를 기반으로 하고, 윈도우에서는 깃 배시 프로그램을 거쳐서 깃 명령을 사용한다.
텍스트 문서에서 Enter를 눌렀을 때 그 위치에 삽입되는 문자를 개행 문자 또는 줄바꿈 문자라고 한다. 윈도우의 개행 문자(CRLF 문자)와 리눅스와 맥의 개행 문자(LF문자)는 다르다.
때문에 Git에서 'git add' 명령어 실행시 다음과 같은 경고 메시지와 함께 문서의 CRLF 문자를 LF 문자로 변환하여 커밋할 것이라고 안내한다.

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

버전 관리 제외

버전 관리 중인 디렉터리 안에 버전 관리를 하지 않을 파일 또는 디렉터리가 있는 경우, '.gitignore' 파일을 만들어 목록을 지정할 수 있다. vim 에디터를 통해 파일 생성 후, 버전 관리 대상이 아닌 파일 또는 디렉터리 이름이나 파일 확장자를 입력한다.

리눅스 명령어

시작하기 전

  • 옵션 추가 : 붙임표(-)와 원하는 옵션을 나타내는 글자를 함께 입력
  • 디렉터리 기호
기호설명
~현재 접속 중인 사용자의 홈 디렉터리(또는 사용자 디렉터리, c/User/사용자 아이디)
* 사용자 아이디는 5글자까지만 나타난다.
./현재 사용자가 작업 중인 디렉터리
../현재 디렉터리의 상위 디렉터리

명령어

  • clear : 터미널 초기화
  • pwd : 현재 위치의 경로(print working directory)
  • ls : 현재 디렉터리에 어떤 파일이나 디렉터리가 있는 확인(list)
    • -a : 숨김 파일과 디렉터리도 함께 표시
    • -l : 파일이나 디렉터리의 상세 정보를 함께 표시
    • -r : 파일의 정렬 순서를 거꾸로 표시
    • -t : 파일 작성 시간 순으로 표시(내림차순)
  • cd : 디렉터리 이동(change directory)
    • cd ..(마침표 2개) : 상위 디렉터리 이동
    • cd 하위 디렉터리 : 하위 디렉터리 이동
    • cd ~(물결 표시) : 홈 디렉터리 이동
  • mkdir : 현재 디렉터리 안에 하위 디렉터리를 만듦(make directory)
  • rm : 디렉터리 삭제(remove)
    • -r : 디렉터리 안에 있는 하위 디렉터리와 파일까지 함께 삭제
  • cat : 텍스트 문서 내용 확인(concatenate)
    • cat {파일명} : 파일의 내용을 화면에 표시
    • cat {파일명1}, {파일명2},...{파일명n} > {새파일명} : 파일 n개를 차례로 연결하여 새로운 파일 생성
    • cat {파일명1}>>{파일명2} : 파일1의 내용을 파일2 끝에 연결

vi/vim 에디터

vim은 "vi improved"의 약자로서 유닉스의 기본 편집기인 vi 에디터의 개량한 버전이다. vim 에디터는 편집 가능한 '입력 모드'와 저장 가능한 'ex 모드'로 나뉜다. vim 에디터 진입시 'ex 모드'로 열리며, I(Insert) 또는 A(Add) 명령어를 입력하여 '입력 모드'로 전환 가능하다. 편집한 내용 저장 후 종료를 위해 ESC 명령어를 입력하여 'ex 모드'로 다시 전환해야 한다.

ex 모드진입키입력 모드
저장, 종료 등<======= ESC =======
== I (Insert) / A (Add) ==>
텍스트 입력, 수정

vim 시작 명령어

vim 에디터 실행시 vi/vim 명령어 모두 사용 가능하다.
vi 명령어 사용시에도 vim 에디터를 실행한다.

명령어설명예시
vim {파일명}파일 열기
{파일명}의 파일이 존재하는 경우, 수정 가능
존재하지 않는 경우, 신규 생성 후 작성 가능
vi test.txt
vim -{행번호} {파일명}파일을 열고 해당 행 번호로 커서 이동vi -100 test.txt
vim -/"{검색 문자열}" {파일명}파일을 열고 첫 번째 검색 문자열로 커서 이동vi -/"test" test.txt
view {파일명}읽기 전용 파일 열기view test.txt

Git 설치 시, vim 편집기 사용을 기본값으로 설정했지만, 다른 편집기로 변경 가능하다. 예를 들어, 'Notepad++'로 변경시 아래와 같이 입력하여 변경할 수 있다.

git config --global core.editor "notepad++"

ex 모드 명렁어

명령어설명
:w / :write편집 중이던 문서를 저장
:q / :quit편집기 종료
:wq {파일명}편집 중이던 문서를 저장하고 종료
파일 이름 입력시 해당 이름으로 저장
:q!문서를 저장하지 않고 편집기 종료
확장자가 .swp인 임시 파일 생성
profile
Hello, I am Heena :)

0개의 댓글