devFancy BE Developer

[Git 공식문서 & Git 마스터과정] Git 기초

2022-04-13
devfancy
Git

아래의 글은 Git 공식 문서를 통해 배운 것을 정리한 내용입니다.

Git 저장소 만들기

  • 주로 다음 두 가지 중 한 가지 방법으로 Git 레포지토리를 쓰기 시작한다.
  1. 로컬 디렉토리 하나를 선택해서 Git 레포지토리를 적용하는 방법.

  2. 다른 어딘가에서 Git 저장소를 Clone 하는 방법.

로컬 디렉토리를 Git 저장소로 만들기

  • 우선 기존 프로젝트를 Git으로 관리하고 싶은 경우 해당 프로젝트가 있는 디렉토리로 이동하고 명령어를 입력한다.

  • Mac 기준 명령어는 다음과 같다.

cd /Users/user/my_project
  • 그리고 아래와 같은 명령어를 실행한다.
git init
  • git init 명령은 .git이라는 하위 디렉토리를 만든다는 의미이다.

  • Git이 파일을 관리하게 하려면 레포지토리에 파일을 추가하고 커밋해야 한다.

  • git add : 파일을 추가하는 명령어 / git commit : 커밋하는 명령어

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

기존 저장소를 Clone 하기

  • 기존 혹은 다른 프로젝트에서 Git 레포지토리를 복사하고 싶을 때 git clone 명령을 사용한다.

  • 해당 명령어를 실행하면 프로젝트 히스토리를 전부 받아온다.

  • git clone <url> 명령으로 저장소를 Clone 한다.

  • devfancy.github.io에 있는 소스코드를 Clone하려면 아래와 같이 실행한다.

https://github.com/devfancy/devfancy.github.io.git
  • 만약 다른 디렉토리 이름(jun-yong)으로 Clone 하고 싶을 경우 아래와 같이 입력하면 된다.
https://github.com/devfancy/devfancy.github.io.git jun-yong
  • url 주소 뒤에 하고 싶은 디렉토리 이름을 추가해서 명령어를 입력하면 된다.

아래의 글은 Git 마스터 과정에서 배운 것을 정리한 내용입니다.

Basic

Git init

git init #initialise git  -> git이 초기화됨.
rm -rf .git #delete .git 

Show the working tree status

  • git의 상태를 볼 수 있는 명령어다.
git status #full status
git status -s #short status -> 간편하게 확인하고 싶을 때

Ignoring Files

  • git과 github에 올리고 싶지 않은 파일들 → .gitignore 파일에 추가할 수 있다.

  • 예) echo *.log > .gitignore ⇒ *.log라는 파일은 .gitignore에 속해진다.

Staging files

git add a.txt #stage a.txt file
git add a.txt b.txt #stage a.txt, b.txt files
git add *.txt #stage all files ends with .txt 
git add * #stage all files except deleted files and files that begin with a dot
git add . #stage everything 

Modifying files

  • git 명령어를 사용(git rm or git mv)하면 git status 명령어를 통해 Staging area에 포함이 되는 것을 볼 수 있다.

Removing files

rm file.txt #delete file
git add file.txt #add to staging area
	# git add 를 통해 해당 파일을 staging area로 이동한다.
git rm file.txt # removes file from working directory and staging area
git rm --cached file.txt #removes from staging area only
git clean -fd #removes all untracked files

Moving files

git mv from.txt to.txt
git mv from.text /logs/from.text

Viewing the Staged/Unstaged changes

  • 정확하게 어떤 파일의 내용이 수정이 되었는지 확인하려면 diff 명령어를 수행한다.
git status #full status
git status -s #short status
git diff #changes in working directory
git diff --staged #changes in staging area
git diff --cached #same as --staged

Commit

  • 버전을 만들때 쓰는 명령어다.

  • Staging area에 있는 변경사항을 Git repository에 옮겨주는 역할이다.

git commit #commit stagged files
git commit -m "Commit message" 
	# commit stagged files with commit message
git commit -am "Commit message" #commit all files with commit message

Log · History

See history

  • 히스토리를 확인하기 위해 git log를 이용한다.
git log #list of commits  -> 누가, 언제, 추가한 내용을 보여준다.
git log --patch #shows the difference introduced in each commit
git log -p #same as --patch
git log --state #abbreviated states for each commit
git log --oneline #oneline -> 간편하게 한줄로 확인(제목)
git log --oneline --reverse #oneline, from the oldest to the newest  -> 오래된 것부터 순서대로 확인한다.

Filtering

git log -2 #shows only the last n commits -> n번까지 출력할 것인지 예시에서는 2줄까지 출력한다.
git log --author="fancy" 
git log --before="2022-01-01"
git log --after="one week ago"
git log --grep="message" #finds in commit messages -> message가 포함된 commit을 찾는다.
git log -S="code" #finds in the code
git log file.txt #logs only for file.txt
	# 조금 더 자세히 보고 싶다면 
	git log -p file.txt
	# 간단하게 보고 싶다면
	git log -s file.txt

History of a file

git log file.txt #history of file.txt
git log --state file.txt #shows statistics
git log --patch file.txt #show the changes
git log -p # 위에 있는 git log --patch file.txt와 같은 명령어이다.

HEAD

git log HEAD
git log HEAD~1 # HEAD 바로 이전 첫번째 꺼를 보고 싶다면 => HEAD~1, HEAD이전 몇번째를 보고 싶다면 => HEAD~n

Viewing a commit

git show HEAD #shows the last commit
git show hash #shows the given commit
git show hash:file.txt 
  ex) 만약에 commit에 여러가지 파일들이 들어있다면, 그 중에서 user_repository.txt만 보고 싶다면
    -> git show hash:user_repository.txt

Comparing

git diff hash1 hash2 #all changes between two commits
	ex) git diff 5e27f5819e 0e0fe985e022 => 두가지 해쉬코드값을 보고 두 파일을 비교한다.
git diff hash1 hash2 file.txt #changes to file.txt only

Tagging

  • 내가 특정한 commit을 북마크 하고 싶을 때 git tag 명령을 사용한다.

  • 대부분 Sematic Versioning 시스템을 따라간다. (Semetic Versioning은 버전 형식에 의미를 부여하여 좀 더 체계적인 버전 관리를 위한 제안이다)

Creating

git tag v1.0.0 #lightweight tag on latest commit
git tag v1.0.0 hash #lightweight tag on the given commit
	원하는 해쉬코드에 태그를 넣는다. 여기서 문자열은 "v1.0.0"을 뜻한다.
git show v.0.0 
 #shows the tag 태크에 있는 내용을 확인 할 수 있다.
git tag -a v.1.0.0 -m "message" 
 #-a: annotated tag(조금더 정보를 추가하겠다)
 #-m: message를 추가하는 옵션 뒤에 " "안에 있는 것이 message를 의미한다. 

Listing

git tag #all the tags (만들어진 모든 태그들을 확인 할 수 있다.)
git tag -l "v1.0.*" #search certain tags (특정한 태그만 확인할 수 있다)

Deleting

git tag -d v1.0.0 #delete the given tag

Checking out Tags

git checkout v1.0.0 #checkout certain tag (v1.0.0이라는 태그로 이동이 가능하다)
git checkout -b branchName v1.0.0 
	#create a new bracnh with the given tag 
	# 태그를 checkout하면서 새로운 branch를 만들고 싶을때 사용한다.

참고) checkout : 이동하거나 브랜치를 만들때 쓰는 명령어다.

  • 예) git checkout fix : fix라는 branch로 이동한다.

Reference


Comments

Index