git cheatsheet
초기 설정 후에는 주로 add, commit, push만 가지고 git을 써왔는데(이마저도 atom을 사용하면 클릭 몇 번으로 대체된다), 한계가 느껴져서 새로운 기능을 쓰게 될 때마다 정리를 하려고 한다.
레포 생성
$ git init [projecet-name]
$ git clone [url]
계정 정보 변경
$ git config --global user.name "이름"
$ git config --global user.email "이메일"
# 프로젝트 하나만 변경하고 싶은 경우
$ git config --local user.name "이름"
$ git config --local user.email "이메일"
계정 정보 조회
# 전역 설정 설정 정보 조회
$ git config --glogbal --list
# 저장소별 설정 정보 조회
$ git config --list
branch control
생성 - 변경 - 병합 - 삭제
# 현재 branch list 출력
$ git branch
# branch 생성
$ git branch [branch-name]
# branch 체크아웃(변경)
$ git checkout [branch-name]
# 생성 + 체크아웃
$ git checkout -b [branch-name]
# 병합
$ git merge [branch]
# 삭제
$ git branch -d [branch-name]
리모트 저장소
현재 프로젝트에 등록된 리모트 저장소 확인. 저장소를 Clone하면 origin이라는 리모트 저장소가 자동으로 등록됨
$ git remote
origin
-v
옵션으로 단축이 름과 url 표시 가능. 저장소가 여러개 있다면 모두 표시.
$ git remote -v
origin https://github.com/Moons08/Moons08.github.io (fetch)
origin https://github.com/Moons08/Moons08.github.io (push)
저장소 추가
git remote add [단축이름] [url]
추가한 뒤에는 fetch
로 로컬 저장소에는 없지만 추가된 저장소에 있는 것을 가져올 수 있음
$ git fetch [단축이름]
위에서 말했듯, 저장소를 Clone하면 자동으로 리모트 저장소를 origin이라는 이름으로 추가한다. 그래서 나중에
git fetch origin
을 실행하면 Clone 이후에 수정된 것을 모두 가져온다.fetch
는 리모트 저장소의 데이터를 모두 로컬로 가져오지만, 자동으로 머지하지 않는다. 따라서 로컬에서 하던 작업을 정리한 후 수동으로 머지해야 한다. 자동으로 데이터를 가져와서 머지까지 완료하려면git pull
을 사용하면 된다.
저장소 살펴보기
리모트 저장소의 구체적인 정보 확인 가능.
$ git remote show [단축이름]
저장소 이름 변경/ 삭제
$ git remote rename [단축이름] [바꿀이름]
$ git remote rm [단축이름]
커밋 히스토리
git log
명령은 저장소의 커밋 히스토리를 시간순으로 보여준다.
-p
옵션은 각 커밋의 diff 결과를 보여준다. -2
는 최근 두 개의 결과만 보여주는 옵션이다.
$ git log -p -2
commit 1b857a03ed515b50792a50e74f645f0db36ff319 (HEAD -> master, origin/master)
Author: Moons08 <mskk0805@gmail.com>
Date: Mon Aug 13 13:51:09 2018 +0900
add post
diff --git a/_posts/2018-08-13-saver_error.md b/_posts/2018-08-13-saver_error.md
new file mode 100644
index 0000000..d3de945
--- /dev/null
+++ b/_posts/2018-08-13-saver_error.md
@@ -0,0 +1,81 @@
+---
+title: 오늘의 에러 - 180813
+date: 2018-08-13
+tags: Error deeplearning
+category: programming
+---
+
+신경망 모델을 클래스로 구현해보던 중 `Saver`에서 에러(`ValueError: No variables to save`)가 발생했다.
+
+
:...skipping...
commit 1b857a03ed515b50792a50e74f645f0db36ff319 (HEAD -> master, origin/master)
Author: Moons08 <mskk0805@gmail.com>
Date: Mon Aug 13 13:51:09 2018 +0900
(... 생략...)
위 옵션은 직접 diff를 실행한 것과 같은 결과를 출력한다. 따라서 동료가 무엇을 커밋했는지 리뷰하고 빨리 조회하는데 유용.
줄 단위 대신 단어 단위로 보려면
-U1 --word-diff
옵션을 이용한다. 추가한 단어는{+ +}
기호, 삭제한 단어는[- -]
기호가 둘러싼다.diff
는 기본적으로 3줄을 보여주는데, 단어 단위로 볼 때는 굳이 3줄을 볼 필요가 없기 때문에-U1
옵션을 주어서 해당 줄만 보이게 한다.
–stat
git log --stat
명령은 각 커밋의 통계 정보를 조회할 수 있다.
commit c253c6d09a7544d91e24c345c0c73ed841279cb6 (HEAD -> master, origin/master, origin/HEAD)
Author: Moons08 <mskk0805@gmail.com>
Date: Thu Aug 16 10:12:00 2018 +0900
fix doc-string
- denoted examples
- add see also
pandas/core/indexes/base.py | 6 ++++++
1 file changed, 6 insertions(+)
commit bc8ae8a6857e0a79768d3bf2138c92a06df68fc0
Author: Moons08 <mskk0805@gmail.com>
Date: Wed Aug 15 19:38:50 2018 +0900
fix typo
pandas/core/indexes/base.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
–pretty
--pretty
옵션을 이용해 다양한 형식의 로그를 확인할 수 있다. oneline
, short
, full
, fuller
, format
등이 있다.
--graph
옵션과 함께 사용할 경우 더 유용하다. 이 옵션은 브랜치와 머지 히스토리를 보여주는 아스키 그래프를 출력한다.
$ git log --pretty=oneline
$ git log --oneline
이외에도 다양한 옵션이 존재한다.
옵션 | 설명 |
---|---|
-p |
각 커밋에 적용된 패치를 보여준다. |
--word-diff |
diff 결과를 단어단위로 보여준다. |
--stat |
각 커밋에서 수정된 파일 통계정보를 보여준다. |
--shortstat |
--stat 명령 중 수정한 파일, 추가된 줄, 삭제된 줄만 보여준다. |
--relative-date |
정확한 시간이 아닌 산대적 형식의 시간으로 보여준다. |
--graph |
브랜치와 머지 히스토리 정보까지 보여준다. |
--abbrev-commit |
SHA-1 체크섬을 처음 몇자만 보여준다. |
--oneline |
--pretty=oneline + --abbrev-commit |
조회 제한
조회 범위를 제한하는 옵션도 있다.
옵션 | 설명 |
---|---|
-(n) |
최근 N개 커밋만 조회 |
--since , --after |
명시한 날짜 이후 커밋만 검색 |
--until , --before |
명시한 날짜 이전 커밋만 검색 |
--author |
입력한 저자의 커밋만 보여준다 |
--commiter |
입력한 커미터의 커밋만 보여준다 |
fin.
Leave a comment