Git과 GitHub에서 꽤 유용하지만 숨겨져 있는 기능들에 대해 다룹니다. 이 치트 시트는 Zach Holman이 Aloha Ruby Conference 2012에서 발표한 Git과 GitHub의 비밀들(슬라이드)과 WDCNZ 2013에서 발표한 Git과 GitHub에 대한 더 많은 비밀들(슬라이드)에서 영감을 받아 작성되었습니다.
단축주소: http://git.io/sheet
Read this in other languages: English, 한국어, 日本語, 简体中文, 正體中文.
- GitHub
- Ignore Whitespace
- Adjust Tab Space
- Commit History by Author
- Cloning a Repository
- Branch
- Gists
- Git.io
- Keyboard Shortcuts
- Line Highlighting in Repositories
- Closing Issues via Commit Messages
- Cross-Link Issues
- Locking Conversations
- CI Status on Pull Requests
- Filters
- Syntax Highlighting in Markdown Files
- Emojis
- Images/GIFs
- Quick Quoting
- Pasting Clipboard Image to Comments
- Quick Licensing
- Task Lists
- Relative Links
- Metadata and Plugin Support for GitHub Pages
- Viewing YAML Metadata in your Documents
- Rendering Tabular Data
- Rendering PDF
- Revert a Pull Request
- Diffs
- Hub
- Contribution Guidelines
- Octicons
- GitHub Resources
- Git
- Remove All Deleted Files from the Working Tree
- Previous Branch
- Stripspace
- SSH keys
- Checking out Pull Requests
- Empty Commits
- Styled Git Status
- Styled Git Log
- Git Query
- Git Grep
- Merged Branches
- Fixup and Autosquash
- Web Server for Browsing Local Repositories
- Git Configurations
- Git Resources
?w=1
를 diff URL에 추가하면 변경된 코드만 볼 수 있도록, 공백만 바뀐 수정을 제거할 수 있습니다.
diff나 파일 URL에 ?ts=4
를 덧붙이면 탭 문자의 크기를 기본값인 공백 8개 대신 4개로 보여줍니다. ts
뒤의 숫자는 설정에 맞게 변경 하실 수 있습니다. gist나 raw 파일 보기에는 적용 되지 않습니다만, 크롬 확장 프로그램이나 오페라 확장 프로그램으로 자동화 할 수 있습니다.
여기에 있는 Go 소스 파일은 ?ts=4
를 붙이기 전에는 이렇습니다.
그리고 ?ts=4
를 붙인 다음에는 이렇게 됩니다.
특정 커미터가 한 모든 커밋을 보고 싶다면 URL에 ?author={user}
를 추가하세요.
https://github.com/rails/rails/commits/master?author=dhh
저장소를 클론할 때, 맨 뒤의 .git
은 생략할 수 있습니다.
$ git clone https://github.com/tiimgreen/github-cheat-sheet
저장소의 브랜치 페이지는, 커밋 버튼의 뒤에 있습니다.
https://github.com/{user}/{repo}/branches
... 메인 브랜치에 머지되지 않은 모든 브랜치의 리스트를 볼 수 있습니다.
여기에서 버튼 클릭으로 비교 페이지에 접속하거나 브랜치를 삭제할 수 있습니다.
GitHub에서 브랜치 비교를 하시려면, URL을 이런 식으로 바꾸세요.
https://github.com/{user}/{repo}/compare/{range}
{range}
는 master...4-1-stable
과 같이 적습니다.
예를 들어
https://github.com/rails/rails/compare/master...4-1-stable
{range}
는 이렇게 적을 수도 있습니다.
https://github.com/rails/rails/compare/master@{1.day.ago}...master
https://github.com/rails/rails/compare/master@{2014-10-04}...master
날짜는 YYYY-MM-DD
형식으로 적습니다
브랜치는 diff
나 patch
뷰로도 확인할 수 있습니다.
https://github.com/rails/rails/compare/master...4-1-stable.diff
https://github.com/rails/rails/compare/master...4-1-stable.patch
포크된 저장소 간의 브랜치를 비교하려면 URL을 이렇게 변경하세요.
https://github.com/{user}/{repo}/compare/{foreign-user}:{branch}...{own-branch}
예를 들면
https://github.com/rails/rails/compare/byroot:idempotent-counter-caches...master
Gist는 본격적인 저장소를 만들지 않고, 작은 코드 조각과 일할 수 있는 쉬운 방법입니다.
이렇게 Gist URL 뒤에 .pibb
를 넣으면 다른 사이트에 첨부할 수 있는 HTML 온리 버전을 만들 수 있습니다.
Gist는 저장소처럼 취급할 수 있고 클론도 됩니다.
$ git clone https://gist.github.com/tiimgreen/10545817
이는 Gists에서도 수정하고 업데이트를 푸시할 수 있다는 의미입니다.
$ git commit
$ git push
Username for 'https://gist.github.com':
Password for 'https://tiimgreen@gist.github.com':
하지만, Gists는 디렉터리를 지원하지 않습니다. 모든 파일은 저장소의 루트에 넣을 필요가 있습니다. Gist를 만드는 법에 대해 더 읽어보세요.
Git.io는 GitHub를 위한 간단한 URL 단축기입니다.
Curl으로 순수 HTTP를 통해 사용하실 수도 있습니다.
$ curl -i http://git.io -F "url=https://github.com/..."
HTTP/1.1 201 Created
Location: http://git.io/abc123
$ curl -i http://git.io/abc123
HTTP/1.1 302 Found
Location: https://github.com/...
저장소 페이지에서 단축키를 사용하면 쉽게 이동할 수 있습니다.
t
를 누르면 파일 탐색 페이지로 이동합니다.w
를 누르면 브랜치 선택 페이지로 이동합니다.s
를 누르면 현재 저장소의 검색창으로 포커스가 이동합니다. 백스페이스를 누르면 채워져 있는 "This repository"를 지워 GitHub 전체에서 검색할 수 있게 됩니다.l
을 누르면 이슈의 라벨을 수정할 수 있습니다.- 파일을 보고 있을 때 (예를 들어
https://github.com/tiimgreen/github-cheat-sheet/blob/master/README.md
)y
를 누르면 URL을 지금 보고 있는 페이지를 사실상 고정하도록 합니다. 코드가 바뀐다고 해도 이번에 본 내용을 다시 볼 수 있습니다.
지금 페이지에서 쓸 수 있는 모든 단축키를 보시려면 ?
를 누르세요.
코드 파일 URL의 끝에 #L52
를 추가하거나 줄 번호를 클릭하면 그 줄 번호를 하이라이트합니다.
#L53-L60
처럼 범위 지정도 가능합니다. 범위를 지정하려면 shift
키를 누른 채 두 라인을 클릭하면 됩니다.
https://github.com/rails/rails/blob/master/activemodel/lib/active_model.rb#L53-L60
어떤 커밋이 이슈를 고쳤다면, fix/fixes/fixed
, close/closes/closed
, resolve/resolves/resolved
를 키워드로 해당 이슈가 마스터 브랜치에 커밋 될 때 닫을 수 있습니다.
$ git commit -m "Fix screwup, fixes #12"
이렇게 하면 이슈를 닫고 클로징 커밋으로 참조하게 합니다.
같은 저장소의 다른 이슈를 링크하기 원한다면, #
뒤에 이슈 번호만 입력하시면 자동으로 링크됩니다.
다른 저장소의 이슈를 링크하고 싶다면 {user}/{repo}#이슈_번호
로 할 수 있습니다. (예 tiimgreen/toc#12
)
풀 리퀘스트와 이슈는 저장소의 주인이나 협업자가 잠글 수 있습니다.
이는 프로젝트의 협업자가 아닌 사람은 더 이상 댓글을 달 수 없게 된다는 말입니다.
정확히 설정되었다면, 풀 리퀘스트를 받거나 풀 리퀘스트에 새로운 커밋을 할 때마다, Travis CI가 풀 리퀘스트를 빌드 할 것입니다. Travis CI 시작하기를 좀 더 읽어보세요.
이슈, 풀 리퀘스트 둘 다 유저 인터페이스에서 필터링이 가능합니다.
레일스 저장소 https://github.com/rails/rails/issues에서, "activerecord" 라벨을 선택하여 다음 필터를 만들 수 있습니다.
is:issue label:activerecord
하지만, activerecord 라벨이 없는 모든 이슈를 찾을 수도 있습니다.
is:issue -label:activerecord
덧붙여, 풀 리퀘스트에도 동작합니다.
is:pr -label:activerecord
GitHub는 열리거나 닫힌 이슈와 풀 리퀘스트를 위한 탭이 있습니다만 머지된 풀 리퀘스트도 볼 수 있습니다. 다음 필터를 입력하기만 하면 됩니다.
is:merged
마지막으로 이제 상태 API의 상태에 의한 필터도 가능해졌습니다.
성공 상태의 풀 리퀘스트는 이렇게 검색합니다.
status:success
마크다운에서 예를 들어, 루비 코드를 신텍스 하이라이트 하려면 이렇게 합니다.
```ruby
require 'tabbit'
table = Tabbit.new('Name', 'Email')
table.add_row('Tim Green', 'tiimgreen@gmail.com')
puts table.to_s
```
이렇게 보입니다.
require 'tabbit'
table = Tabbit.new('Name', 'Email')
table.add_row('Tim Green', 'tiimgreen@gmail.com')
puts table.to_s
GitHub는 Linguist를 사용해 언어를 감지하고 신택스를 하이라이트합니다. 언어 YAML 파일을 정독하시면 어떤 키워드가 유효한지 확인하실 수 있습니다.
GitHub Flavored 마크다운에 대해 더 읽어 보세요.
에모지는 풀 리퀘스트, 이슈, 커밋 메시지, 저장소 설명 등에 :에모지의_이름:
으로 넣을 수 있습니다.
GitHub에서 사용 가능한 에모지의 전 목록은 emoji-cheat-sheet.com나 scotch-io/All-GitHub-Emoji-Icons에서 확인하실 수 있습니다. 편리한 에모지 검색 엔진은 emoji.muan.co에 있습니다.
GitHub에서 많이 사용하는 에모지 탑 5위는 이렇습니다.
:shipit:
:sparkles:
:-1:
:+1:
:clap:
댓글이나 README 등에 이미지와 GIF를 넣을 수 있습니다.
![Alt Text](http://www.sheawong.com/wp-content/uploads/2013/08/keephatin.gif)
저장소에 있는 이미지는 직접 불러서 사용할 수 있습니다.
![Alt Text](https://github.com/{user}/{repo}/raw/master/path/to/image.gif)
모든 이미지는 GitHub에서 캐시합니다. 그래서 호스트가 죽어도 이미지는 여전히 남습니다.
이미지를 위키 페이지에 넣는 방법은 여럿 있습니다. 위에 보이는 일반 마크다운 문법도 있지만, 이미지에 높이와 넓이를 지정할 수 있는 문법도 있습니다.
[[ http://www.sheawong.com/wp-content/uploads/2013/08/keephatin.gif | height = 100px ]]
이렇게 보입니다.
스레드에 답글을 달 때 전에 누가 말한 어떤 내용을 인용하고 싶다면, 텍스트를 하이라이트하고 r
을 누르세요. 이렇게 하면 내용을 텍스트 박스에 인용 포맷으로 복사해 줍니다.
(크롬에서만 동작합니다)
스크린샷을 찍고 클립보드에 복사한 경우 (mac: cmd-ctrl-shift-4
), 간단히 이미지를 댓글 영역에 붙여넣을(cmd-v / ctrl-v
) 수 있고 이는 자동으로 GitHub에 업로드 됩니다.
issue attachments에 대해 더 읽어 보세요.
저장소를 만들 때, GitHub는 만들어진 저작권을 추가할 수 있는 옵션을 제공합니다.
이미 있는 저장소에도 웹 인터페이스에서 새 파일을 만들어 추가할 수 있습니다.
이름에 LICENSE
를 입력하면 옵션으로 템플릿을 사용할 수 있습니다.
.gitignore
에도 똑같이 적용됩니다.
이슈와 풀 리퀘스트에서 아래의 문법으로 체크박스를 넣을 수 있습니다.(스페이스에 주의하세요.)
- [ ] Be awesome
- [ ] Prepare dinner
- [ ] Research recipe
- [ ] Buy ingredients
- [ ] Cook recipe
- [ ] Sleep
체크박스를 클릭하면, 순수 마크다운에서 갱신이 이루어집니다.
- [x] Be awesome
- [ ] Prepare dinner
- [x] Research recipe
- [x] Buy ingredients
- [ ] Cook recipe
- [ ] Sleep
이제 마크다운 문서에서 읽기 전용 체크리스트를 넣을 수 있습니다.
- [ ] Mercury
- [x] Venus
- [x] Earth
- [x] Moon
- [x] Mars
- [ ] Deimos
- [ ] Phobos
- Mercury
- Venus
- Earth
- Moon
- Mars
- Deimos
- Phobos
마크다운 문서에서의 할 일 목록에 대해 더 읽어 보세요.
상대 경로 링크는 마크다운 파일이 내부 콘텐츠로 링크될 때 추천합니다.
[Link to a header](#awesome-section)
[Link to a file](docs/readme)
절대 경로 링크는 URL이 변경 될 때마다 변경해야 합니다. (예를 들어 저장소 이름 변경, 아이디 변경, 프로젝트 포크) 상대 경로 링크를 사용하면 문서를 쉽게 스스로 독립적으로 만들 수 있습니다.
지킬로 작성된 페이지와 포스트에서, 저장소 정보는 예를 들어 {{ site.github.project_title }}
처럼 site.github
이름 공간으로 사용하고 표시할 수 있습니다.
Jemoji와 jekyll-mentions 플러그인은 GitHub.com에서처럼 emoji와 @mentions를 지킬 포스트와 페이지에서 사용하게 합니다.
저장소 메타 데이터와 GitHub 페이지의 플러그인 지원에 대해 더 읽어 보세요.
Jekyll이나 GitHub Pages 같은 많은 블로그에서 포스트의 처음에 YAML 포멧의 메타데이터를 필요로 합니다. GitHub는 이 메타 정보를 읽기 편하게 테이블로 표시해 줍니다.
문서에서 YAML 메타데이터 보기에 대해 더 읽어 보세요.
GitHub는 .csv
(comma-separated)와 .tsv
(tab-separated) 파일에 대해 표(tabular) 데이터 보기를 지원합니다.
GitHub에서 PDF를 렌더할 수 있습니다.
풀 리퀘스트가 머지된 후에, 아무 도움이 안되거나 머지가 잘못된 결정이었다는 걸 눈치 챌 때가 있습니다.
풀 리퀘스트 페이지의 커밋의 오른쪽에 있는 Revert 버튼을 클릭하면 이 풀 리퀘스트를 되돌리는 풀 리퀘스트를 만들어 되돌릴 수 있습니다.
GitHub에서 지원하는 산문(prose) 파일(예를 들어 Markdown)이 있는 커밋과 풀 리퀘스트에서는 source와 rendered 뷰 기능을 사용할 수 있습니다.
"rendered" 버튼을 클릭하시면 렌더된 문서에서 변경을 확인하실 수 있습니다. 렌더된 산문(prose) 뷰는 문장을 추가, 삭제, 변경했을 때 유용합니다.
렌더된 산문(prose) diff에 대해 더 읽어 보세요.
지오데이터가 포함된 커밋이나 풀 리퀘스트를 볼 때마다 GitHub는 무엇이 변경 되었는지 시각적으로 보여줍니다.
diff의 닫아둔 곳의 펼침 버튼을 클릭하면, 문맥을 더 볼 수 있습니다. 전체 파일을 표시할 때까지 계속 펼칠 수 있으며, GitHub에서 diff가 표시되는 장소라면 어디서든 사용가능합니다.
URL 뒤에 .diff
나 .patch
를 붙이면 풀 리퀘스트의 diff를 얻을 수 있습니다.
예를 들면
https://github.com/tiimgreen/github-cheat-sheet/pull/15
https://github.com/tiimgreen/github-cheat-sheet/pull/15.diff
https://github.com/tiimgreen/github-cheat-sheet/pull/15.patch
.diff
확장자는 이런 내용의 평범한(plain) 텍스트를 줍니다.
diff --git a/README.md b/README.md
index 88fcf69..8614873 100644
--- a/README.md
+++ b/README.md
@@ -28,6 +28,7 @@ All the hidden and not hidden features of Git and GitHub. This cheat sheet was i
- [Merged Branches](#merged-branches)
- [Quick Licensing](#quick-licensing)
- [TODO Lists](#todo-lists)
+- [Relative Links](#relative-links)
- [.gitconfig Recommendations](#gitconfig-recommendations)
- [Aliases](#aliases)
- [Auto-correct](#auto-correct)
@@ -381,6 +382,19 @@ When they are clicked, they will be updated in the pure Markdown:
- [ ] Sleep
(...)
GitHub는 PNG, JPG, GIF, PSD를 포함한 여러 일반적인 이미지 형식을 표시할 수 있습니다. 추가적으로 이미지 형식의 diff를 표시하는 여러 방법을 제공합니다.
[](https://github.com/blog/1845-psd-viewing-diffing
Hub는 GitHub를 좀 더 쉽게 사용할 수 있도록 추가 기능 및 명령을 제공하는 커맨드 라인 Git 래퍼입니다.
이렇게 할 수 있습니다.
$ hub clone tiimgreen/toc
GitHub는 프로젝트에 기여하는 사용자를 위한 세 가지 각기 다른 파일을 지원합니다.
이 파일은 저장소의 제일 위나 그 아래의 .github
디렉터리에 위치할 수 있습니다.
저장소의 제일 위나 그 아래의 .github
디렉터리에 CONTRIBUTING
이나 CONTRIBUTING.md
파일을 넣어두면 기여자가 이슈를 만들거나 풀 리퀘스트를 만들 때 링크로 보여줍니다.
프로젝트의 새로운 이슈에 사용될 템플릿을 지정할 수 있습니다. 사용자가 새 이슈를 생성하면 이슈 창이 이 파일의 내용으로 채워집니다. 저장소의 제일 위나 그 아래의 .github
디렉터리에 ISSUE_TEMPLATE
이나 ISSUE_TEMPLATE.md
파일을 넣어 두세요.
프로젝트의 새로운 풀 리퀘스트에 사용될 템플릿을 지정할 수 있습니다. 사용자가 새 풀 리퀘스트를 생성하면 텍스트 영역이 이 파일의 내용으로 채워집니다. 저장소의 제일 위나 .github
디렉터리에 PULL_REQUEST_TEMPLATE
이나 PULL_REQUEST_TEMPLATE.md
파일을 넣어 두세요.
GitHub 아이콘(옥티콘)이 이제 오픈소스가 되었습니다.
Title | Link |
---|---|
GitHub Explore | https://github.com/explore |
GitHub Blog | https://github.com/blog |
GitHub Help | https://help.github.com/ |
GitHub Training | https://training.github.com/ |
GitHub Developer | https://developer.github.com/ |
GitHub Education (Free Micro Account and other stuff for students) | https://education.github.com/ |
Title | Link |
---|---|
How GitHub Uses GitHub to Build GitHub | https://www.youtube.com/watch?v=qyz3jkOBbQY |
Introduction to Git with Scott Chacon of GitHub | https://www.youtube.com/watch?v=ZDR433b0HJY |
How GitHub No Longer Works | https://www.youtube.com/watch?v=gXD1ITW7iZI |
Git and GitHub Secrets | https://www.youtube.com/watch?v=Foz9yvMkvlA |
More Git and GitHub Secrets | https://www.youtube.com/watch?v=p50xsL-iVgU |
/bin/rm
을 사용해 대량의 파일을 지울 때, 하나씩 제거할 필요 없이 밑의 명령어를 사용해 작업 디렉터리와 인덱스에서 지울 수 있습니다.
$ git rm $(git ls-files -d)
예를 들어
$ git status
On branch master
Changes not staged for commit:
deleted: a
deleted: c
$ git rm $(git ls-files -d)
rm 'a'
rm 'c'
$ git status
On branch master
Changes to be committed:
deleted: a
deleted: c
Git에서 이전 브랜치로 돌아가는 건 이렇게 할 수 있습니다.
$ git checkout -
# Switched to branch 'master'
$ git checkout -
# Switched to branch 'next'
$ git checkout -
# Switched to branch 'master'
Git Stripspace는 이런 일을 합니다.
- 줄 끝의 공백을 제거
- 빈줄을 줄임
- 파일 끝에 빈 줄을 추가
커맨드를 실행 할 때 파일을 반드시 이런식으로 넘겨줘야 합니다.
$ git stripspace < README.md
Git stripspace
커맨드에 대해 더 읽어 보세요.
아래 주소를 방문하면 공개 ssh 키의 목록을 일반 텍스트 형식으로 볼 수 있습니다.
https://github.com/{user}.keys
예: https://github.com/tiimgreen.keys
풀 리퀘스트는 GitHub 저장소에서 사용하는 특별한 브랜치로 여러 방법으로 로컬로 가져올 수 있습니다.
빠르게 diff
나 merge
를 하기 위해 특정 풀 리퀘스트를 임시로 FETCH_HEAD
로
가져오려면 이렇게 합니다.
$ git fetch origin refs/pull/[PR-Number]/head
모든 풀 리퀘스트 브랜치를 refspec에 의한 로컬 리모트 브랜치로 받을 수도 있습니다.
$ git fetch origin '+refs/pull/*/head:refs/remotes/origin/pr/*'
밑의 줄들을 저장소의 .git/config
에 추가하여, 리모트의 풀 리퀘스트를 자동으로
가져오게도 할 수 있습니다.
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git@github.com:tiimgreen/github-cheat-sheet.git
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git@github.com:tiimgreen/github-cheat-sheet.git
fetch = +refs/pull/*/head:refs/remotes/origin/pr/*
포크 기반의 풀 리퀘스트 기여를 위해, 풀 리퀘스트의 리모트 브랜치를 checkout
해
로컬 브랜치를 만드는 것은 유용합니다.
$ git checkout pr/42 pr-42
여러 저장소를 다루어야 한다면, 전역 Git 설정에서 풀 리퀘스트를 받을(fetching) 수 있도록 설정 할 수도 있습니다.
git config --global --add remote.origin.fetch "+refs/pull/*/head:refs/remotes/origin/pr/*"
이렇게 하면 모든 저장소에서 짧은 명령어를 사용 할 수 있습니다.
git fetch origin
git checkout pr/42
풀 리퀘스트를 로컬로 체크아웃 하는 방법에 대해 더 읽어 보세요.
--allow-empty
를 추가하시면 코드의 변경 없이 커밋을 넣을 수 있습니다.
$ git commit -m "Big-ass commit" --allow-empty
있을 법한 사용법에는 이런 것들이 있습니다.
- 한 뭉치의 일을 시작하기 전에 주석으로 사용
- 코드와 관련없는 프로젝트 수정을 할때 주석으로 사용
- 저장소를 사용하는 사람과의 대화
- 저장소의 첫 커밋으로 사용
git commit -m "Initial commit" --allow-empty
$ git status
-sb
를 추가하면
$ git status -sb
이렇게 바뀝니다.
이 명령을 실행하면
$ git log --all --graph --pretty=format:'%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
이렇게 보입니다.
Palesz 님 고맙습니다.
NOTE: 이 명령을 알리아스(단축 명령)로 넣을 수 있습니다. 여기의 소개를 보세요.
Git 쿼리는 모든 이전 커밋 메시지에서 검색해 가장 최근의 쿼리에 맞는 커밋을 찾아줍니다.
$ git show :/query
query
에는 검색하고 싶은 말을 (대소문자를 구분해) 넣으세요. 주어진 검색어가 있는 가장 마지막 커밋을 표시하고 변경된 라인을 보여줍니다.
$ git show :/typo
나오려면 q
를 누르세요.
Git Grep은 패턴과 일치하는 줄의 목록을 반환합니다.
다음 명령을 실행해 보세요.
$ git grep aliases
aliases 문자열이 포함된 모든 파일을 보여줍니다.
나오려면 q
를 누르세요.
여러 플래그를 이용해서 좀 더 복잡한 검색을 할 수 있습니다. 예를 들면,
-e
다음 파라미터는 패턴 (e.g. regex)--and
,--or
,--not
으로 여러 패턴을 조합
이렇게 사용할 수 있습니다.
$ git grep -e pattern --and -e anotherpattern
$ git branch --merged
이 명령어는 현재 브랜치에 머지된 모든 브랜치의 목록을 보여줍니다.
거꾸로
$ git branch --no-merged
이 명령어는 현재 브랜치에 머지되지 않은 브랜치의 목록을 보여줍니다.
이전(HEAD의 한 개 이상 전의) 커밋에 잘못된 부분이 있다면, 예를 들어 abcde
라면,
문제를 수정하고 밑의 커맨드를 입력해 고칠 수 있습니다.
$ git commit --fixup=abcde
$ git rebase abcde^ --autosquash -i
Git commit
커맨드에 대해 더 읽어 보세요.
Git rebase
커맨드에 대해 더 읽어 보세요.
Git instaweb
커맨드을 사용하면, 즉석에서 gitweb
안에서 작업중인 저장소를 둘러 볼
수 있습니다. 이 커맨드는 gitweb
과 로컬 저장소를 브라우징 하기 위한 웹 서버를 설정하는 스크립트입니다.
$ git instaweb
Opens:
Git instaweb
커맨드에 대해 더 읽어 보세요.
.gitconfig
는 모든 설정이 들어있는 파일입니다.
알리아스는 커스텀 Git 명령어를 등록할 수 있는 헬퍼입니다. 예를 들어 git a
로 git add --all
를 실행하게 할 수 있습니다.
알리아스를 추가하려면 ~/.gitconfig
를 찾아 다음 포맷으로 입력하거나
[alias]
co = checkout
cm = commit
p = push
# Show verbose output about tags, branches or remotes
tags = tag -l
branches = branch -a
remotes = remote -v
커맨드 라인에서 다음 명령을 입력합니다.
$ git config --global alias.new_alias git_function
예를 들면
$ git config --global alias.cm commit
여러 함수를 알리아스하려면 따옴표를 이용하세요.
$ git config --global alias.ac 'add -A . && commit'
여기 몇 가지 유용한 알리아스가 있습니다.
Alias | Current Command | What to Type |
---|---|---|
git cm |
git commit |
git config --global alias.cm commit |
git co |
git checkout |
git config --global alias.co checkout |
git ac |
git add . -A git commit |
git config --global alias.ac '!git add -A && git commit' |
git st |
git status -sb |
git config --global alias.st 'status -sb' |
git tags |
git tag -l |
git config --global alias.tags 'tag -l' |
git branches |
git branch -a |
git config --global alias.branches 'branch -a' |
git cleanup |
`git branch --merged | grep -v '*' |
git remotes |
git remote -v |
git config --global alias.remotes 'remote -v' |
git lg |
git log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit -- |
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --" |
일부 알리아스는 @mathiasbynens 님의 dotfiles에서 가져왔습니다.(https://github.com/mathiasbynens/dotfiles/blob/master/.gitconfig)
현재 git comit
를 치면 이런 결과를 보실 수 있습니다.
$ git comit -m "Message"
# git: 'comit' is not a git command. See 'git --help'.
# Did you mean this?
# commit
comit
을 쳤을 때 commit
을 부르려면, 자동 교정을 켜두세요.
$ git config --global help.autocorrect 1
이제 이런 결과를 보실 수 있습니다.
$ git comit -m "Message"
# WARNING: You called a Git command named 'comit', which does not exist.
# Continuing under the assumption that you meant 'commit'
# in 0.1 seconds automatically...
Git 커맨드 라인에 색을 넣으려면 이렇게 하세요.
$ git config --global color.ui 1
Title | Link |
---|---|
Official Git Site | http://git-scm.com/ |
Official Git Video Tutorials | http://git-scm.com/videos |
Code School Try Git | http://try.github.com/ |
Introductory Reference & Tutorial for Git | http://gitref.org/ |
Official Git Tutorial | http://git-scm.com/docs/gittutorial |
Everyday Git | http://git-scm.com/docs/everyday |
Git Immersion | http://gitimmersion.com/ |
Ry's Git Tutorial | http://rypress.com/tutorials/git/index.html |
Git for Computer Scientists | http://eagain.net/articles/git-for-computer-scientists/ |
Git Magic | http://www-cs-students.stanford.edu/~blynn/gitmagic/ |
GitHub Training Kit | https://training.github.com/kit/ |
Git Visualization Playground | http://onlywei.github.io/explain-git-with-d3/#freeplay |
Learn Git Branching | http://pcottle.github.io/learnGitBranching/ |
A collection of useful .gitignore templates | https://github.com/github/gitignore |
Title | Link |
---|---|
Pragmatic Version Control Using Git | http://www.pragprog.com/titles/tsgit/pragmatic-version-control-using-git |
Pro Git | http://git-scm.com/book |
Git Internals PluralSight | https://github.com/pluralsight/git-internals-pdf |
Git in the Trenches | http://cbx33.github.com/gitt/ |
Version Control with Git | http://www.amazon.com/Version-Control-Git-collaborative-development/dp/1449316387 |
Pragmatic Guide to Git | http://www.pragprog.com/titles/pg_git/pragmatic-guide-to-git |
Git: Version Control for Everyone | http://www.packtpub.com/git-version-control-for-everyone/book |
Title | Link |
---|---|
Linus Torvalds on Git | https://www.youtube.com/watch?v=4XpnKHJAok8 |
Introduction to Git with Scott Chacon | https://www.youtube.com/watch?v=ZDR433b0HJY |
Git From the Bits Up | https://www.youtube.com/watch?v=MYP56QJpDr4 |
Graphs, Hashes, and Compression, Oh My! | https://www.youtube.com/watch?v=ig5E8CcdM9g |
GitHub Training & Guides | https://www.youtube.com/watch?list=PLg7s6cbtAD15G8lNyoaYDuKZSKyJrgwB-&v=FyfwLX4HAxM |
Title | Link |
---|---|
GitHub Flow | http://scottchacon.com/2011/08/31/github-flow.html |