Skip to content

Latest commit

 

History

History
1112 lines (734 loc) · 42.1 KB

README.ko.md

File metadata and controls

1112 lines (734 loc) · 42.1 KB

GitHub 치트 시트 Awesome

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

?w=1를 diff URL에 추가하면 변경된 코드만 볼 수 있도록, 공백만 바뀐 수정을 제거할 수 있습니다.

Diff without whitespace

GitHub의 비밀을 더 읽어 보세요.

Adjust Tab Space

diff나 파일 URL에 ?ts=4를 덧붙이면 탭 문자의 크기를 기본값인 공백 8개 대신 4개로 보여줍니다. ts 뒤의 숫자는 설정에 맞게 변경 하실 수 있습니다. gist나 raw 파일 보기에는 적용 되지 않습니다만, 크롬 확장 프로그램이나 오페라 확장 프로그램으로 자동화 할 수 있습니다.

여기에 있는 Go 소스 파일은 ?ts=4를 붙이기 전에는 이렇습니다.

Before, tab space example

그리고 ?ts=4를 붙인 다음에는 이렇게 됩니다.

After, tab space example

Commit History by Author

특정 커미터가 한 모든 커밋을 보고 싶다면 URL에 ?author={user}를 추가하세요.

https://github.com/rails/rails/commits/master?author=dhh

DHH commit history

커밋 뷰간의 차이에 대해 더 읽어보세요.

Cloning a Repository

저장소를 클론할 때, 맨 뒤의 .git은 생략할 수 있습니다.

$ git clone https://github.com/tiimgreen/github-cheat-sheet

Git clone 명령에 대해 더 읽어 보세요.

Branch

Compare all Branches to Another Branch

저장소의 브랜치 페이지는, 커밋 버튼의 뒤에 있습니다.

https://github.com/{user}/{repo}/branches

... 메인 브랜치에 머지되지 않은 모든 브랜치의 리스트를 볼 수 있습니다.

여기에서 버튼 클릭으로 비교 페이지에 접속하거나 브랜치를 삭제할 수 있습니다.

Compare branches not merged into master in rails/rails repo - https://github.com/rails/rails/branches

Comparing 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

Rails branch compare example

{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 형식으로 적습니다

Another compare example

브랜치는 diffpatch 뷰로도 확인할 수 있습니다.

https://github.com/rails/rails/compare/master...4-1-stable.diff
https://github.com/rails/rails/compare/master...4-1-stable.patch

시간으로 커밋을 비교하는 법에 대해 더 읽어 보세요.

Compare branches across forked repositories

포크된 저장소 간의 브랜치를 비교하려면 URL을 이렇게 변경하세요.

https://github.com/{user}/{repo}/compare/{foreign-user}:{branch}...{own-branch}

예를 들면

https://github.com/rails/rails/compare/byroot:idempotent-counter-caches...master

Forked branch compare

Gists

Gist는 본격적인 저장소를 만들지 않고, 작은 코드 조각과 일할 수 있는 쉬운 방법입니다.

Gist

이렇게 Gist URL 뒤에 .pibb를 넣으면 다른 사이트에 첨부할 수 있는 HTML 온리 버전을 만들 수 있습니다.

Gist는 저장소처럼 취급할 수 있고 클론도 됩니다.

$ git clone https://gist.github.com/tiimgreen/10545817

Gists

이는 Gists에서도 수정하고 업데이트를 푸시할 수 있다는 의미입니다.

$ git commit
$ git push
Username for 'https://gist.github.com':
Password for 'https://tiimgreen@gist.github.com':

하지만, Gists는 디렉터리를 지원하지 않습니다. 모든 파일은 저장소의 루트에 넣을 필요가 있습니다. Gist를 만드는 법에 대해 더 읽어보세요.

Git.io

Git.io는 GitHub를 위한 간단한 URL 단축기입니다.

Git.io

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/...

Git.io에 대해 더 읽어 보세요.

Keyboard Shortcuts

저장소 페이지에서 단축키를 사용하면 쉽게 이동할 수 있습니다.

  • t를 누르면 파일 탐색 페이지로 이동합니다.
  • w를 누르면 브랜치 선택 페이지로 이동합니다.
  • s를 누르면 현재 저장소의 검색창으로 포커스가 이동합니다. 백스페이스를 누르면 채워져 있는 "This repository"를 지워 GitHub 전체에서 검색할 수 있게 됩니다.
  • l을 누르면 이슈의 라벨을 수정할 수 있습니다.
  • 파일을 보고 있을 때 (예를 들어 https://github.com/tiimgreen/github-cheat-sheet/blob/master/README.md) y를 누르면 URL을 지금 보고 있는 페이지를 사실상 고정하도록 합니다. 코드가 바뀐다고 해도 이번에 본 내용을 다시 볼 수 있습니다.

지금 페이지에서 쓸 수 있는 모든 단축키를 보시려면 ?를 누르세요.

Keyboard shortcuts

사용할 수 있는 검색 문법에 대해 더 읽어 보세요.

Line Highlighting in Repos

코드 파일 URL의 끝에 #L52를 추가하거나 줄 번호를 클릭하면 그 줄 번호를 하이라이트합니다.

#L53-L60처럼 범위 지정도 가능합니다. 범위를 지정하려면 shift키를 누른 채 두 라인을 클릭하면 됩니다.

https://github.com/rails/rails/blob/master/activemodel/lib/active_model.rb#L53-L60

Line Highlighting

Closing Issues with Commits

어떤 커밋이 이슈를 고쳤다면, fix/fixes/fixed, close/closes/closed, resolve/resolves/resolved를 키워드로 해당 이슈가 마스터 브랜치에 커밋 될 때 닫을 수 있습니다.

$ git commit -m "Fix screwup, fixes #12"

이렇게 하면 이슈를 닫고 클로징 커밋으로 참조하게 합니다.

Closing Repo

커밋 메시지로 이슈 닫기에 대해 더 읽어 보세요.

Cross-Link Issues

같은 저장소의 다른 이슈를 링크하기 원한다면, # 뒤에 이슈 번호만 입력하시면 자동으로 링크됩니다.

다른 저장소의 이슈를 링크하고 싶다면 {user}/{repo}#이슈_번호로 할 수 있습니다. (예 tiimgreen/toc#12)

Cross-Link Issues

Locking Conversations

풀 리퀘스트와 이슈는 저장소의 주인이나 협업자가 잠글 수 있습니다.

Lock conversation

이는 프로젝트의 협업자가 아닌 사람은 더 이상 댓글을 달 수 없게 된다는 말입니다.

Comments locked

대화 잠그기에 대해 더 읽어 보세요.

CI Status on Pull Requests

정확히 설정되었다면, 풀 리퀘스트를 받거나 풀 리퀘스트에 새로운 커밋을 할 때마다, Travis CI가 풀 리퀘스트를 빌드 할 것입니다. Travis CI 시작하기를 좀 더 읽어보세요.

Travis CI status

커밋 상태 API에 대해 좀 더 읽어보세요.

Filters

이슈, 풀 리퀘스트 둘 다 유저 인터페이스에서 필터링이 가능합니다.

레일스 저장소 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

상태 API 검색에 대해 좀 더 읽어보세요.

Syntax Highlighting in Markdown Files

마크다운에서 예를 들어, 루비 코드를 신텍스 하이라이트 하려면 이렇게 합니다.

```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 마크다운에 대해 더 읽어 보세요.

Emojis

에모지는 풀 리퀘스트, 이슈, 커밋 메시지, 저장소 설명 등에 :에모지의_이름:으로 넣을 수 있습니다.

GitHub에서 사용 가능한 에모지의 전 목록은 emoji-cheat-sheet.comscotch-io/All-GitHub-Emoji-Icons에서 확인하실 수 있습니다. 편리한 에모지 검색 엔진은 emoji.muan.co에 있습니다.

GitHub에서 많이 사용하는 에모지 탑 5위는 이렇습니다.

  1. :shipit:
  2. :sparkles:
  3. :-1:
  4. :+1:
  5. :clap:

Images/GIFs

댓글이나 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)

Peter don't care

모든 이미지는 GitHub에서 캐시합니다. 그래서 호스트가 죽어도 이미지는 여전히 남습니다.

Embedding Images in GitHub Wiki

이미지를 위키 페이지에 넣는 방법은 여럿 있습니다. 위에 보이는 일반 마크다운 문법도 있지만, 이미지에 높이와 넓이를 지정할 수 있는 문법도 있습니다.

[[ http://www.sheawong.com/wp-content/uploads/2013/08/keephatin.gif | height = 100px ]]

이렇게 보입니다.

Just a screenshot

Quick Quoting

스레드에 답글을 달 때 전에 누가 말한 어떤 내용을 인용하고 싶다면, 텍스트를 하이라이트하고 r을 누르세요. 이렇게 하면 내용을 텍스트 박스에 인용 포맷으로 복사해 줍니다.

Quick Quote

빠른 인용에 대해 더 읽어 보세요.

Pasting Clipboard Image to Comments

(크롬에서만 동작합니다)

스크린샷을 찍고 클립보드에 복사한 경우 (mac: cmd-ctrl-shift-4), 간단히 이미지를 댓글 영역에 붙여넣을(cmd-v / ctrl-v) 수 있고 이는 자동으로 GitHub에 업로드 됩니다.

Pasting Clipboard Image to Comments

issue attachments에 대해 더 읽어 보세요.

Quick Licensing

저장소를 만들 때, GitHub는 만들어진 저작권을 추가할 수 있는 옵션을 제공합니다.

License

이미 있는 저장소에도 웹 인터페이스에서 새 파일을 만들어 추가할 수 있습니다. 이름에 LICENSE를 입력하면 옵션으로 템플릿을 사용할 수 있습니다.

License

.gitignore에도 똑같이 적용됩니다.

오픈 소스 저작권에 대해 더 읽어 보세요.

Task Lists

이슈와 풀 리퀘스트에서 아래의 문법으로 체크박스를 넣을 수 있습니다.(스페이스에 주의하세요.)

- [ ] Be awesome
- [ ] Prepare dinner
  - [ ] Research recipe
  - [ ] Buy ingredients
  - [ ] Cook recipe
- [ ] Sleep

Task List

체크박스를 클릭하면, 순수 마크다운에서 갱신이 이루어집니다.

- [x] Be awesome
- [ ] Prepare dinner
  - [x] Research recipe
  - [x] Buy ingredients
  - [ ] Cook recipe
- [ ] Sleep

할 일 목록에 대해 더 읽어 보세요.

Task Lists in Markdown Documents

이제 마크다운 문서에서 읽기 전용 체크리스트를 넣을 수 있습니다.

- [ ] Mercury
- [x] Venus
- [x] Earth
  - [x] Moon
- [x] Mars
  - [ ] Deimos
  - [ ] Phobos
  • Mercury
  • Venus
  • Earth
    • Moon
  • Mars
    • Deimos
    • Phobos

마크다운 문서에서의 할 일 목록에 대해 더 읽어 보세요.

Relative Links

상대 경로 링크는 마크다운 파일이 내부 콘텐츠로 링크될 때 추천합니다.

[Link to a header](#awesome-section)
[Link to a file](docs/readme)

절대 경로 링크는 URL이 변경 될 때마다 변경해야 합니다. (예를 들어 저장소 이름 변경, 아이디 변경, 프로젝트 포크) 상대 경로 링크를 사용하면 문서를 쉽게 스스로 독립적으로 만들 수 있습니다.

상대 경로 링크에 대해 더 읽어 보세요.

Metadata and Plugin Support for GitHub Pages

지킬로 작성된 페이지와 포스트에서, 저장소 정보는 예를 들어 {{ site.github.project_title }}처럼 site.github 이름 공간으로 사용하고 표시할 수 있습니다.

Jemoji와 jekyll-mentions 플러그인은 GitHub.com에서처럼 emoji@mentions를 지킬 포스트와 페이지에서 사용하게 합니다.

저장소 메타 데이터와 GitHub 페이지의 플러그인 지원에 대해 더 읽어 보세요.

Viewing YAML Metadata in your Documents

Jekyll이나 GitHub Pages 같은 많은 블로그에서 포스트의 처음에 YAML 포멧의 메타데이터를 필요로 합니다. GitHub는 이 메타 정보를 읽기 편하게 테이블로 표시해 줍니다.

YAML metadata

문서에서 YAML 메타데이터 보기에 대해 더 읽어 보세요.

Rendering Tabular Data

GitHub는 .csv(comma-separated)와 .tsv(tab-separated) 파일에 대해 표(tabular) 데이터 보기를 지원합니다.

Tabular data

표 데이터 표시에 대해 더 읽어 보세요.

Rendering PDF

GitHub에서 PDF를 렌더할 수 있습니다.

PDF

PDF 렌더링에 대해 더 읽어 보세요.

Revert a Pull Request

풀 리퀘스트가 머지된 후에, 아무 도움이 안되거나 머지가 잘못된 결정이었다는 걸 눈치 챌 때가 있습니다.

풀 리퀘스트 페이지의 커밋의 오른쪽에 있는 Revert 버튼을 클릭하면 이 풀 리퀘스트를 되돌리는 풀 리퀘스트를 만들어 되돌릴 수 있습니다.

Revert button

풀 리퀘스트 되돌리기에 대해 더 읽어 보세요.

Diffs

Rendered Prose Diffs

GitHub에서 지원하는 산문(prose) 파일(예를 들어 Markdown)이 있는 커밋과 풀 리퀘스트에서는 sourcerendered 뷰 기능을 사용할 수 있습니다.

Source / Rendered view

"rendered" 버튼을 클릭하시면 렌더된 문서에서 변경을 확인하실 수 있습니다. 렌더된 산문(prose) 뷰는 문장을 추가, 삭제, 변경했을 때 유용합니다.

Rendered Prose Diffs

렌더된 산문(prose) diff에 대해 더 읽어 보세요.

Diffable Maps

지오데이터가 포함된 커밋이나 풀 리퀘스트를 볼 때마다 GitHub는 무엇이 변경 되었는지 시각적으로 보여줍니다.

Diffable Maps

diff 가능한 맵에 대해 더 읽어 보세요.

Expanding Context in Diffs

diff의 닫아둔 곳의 펼침 버튼을 클릭하면, 문맥을 더 볼 수 있습니다. 전체 파일을 표시할 때까지 계속 펼칠 수 있으며, GitHub에서 diff가 표시되는 장소라면 어디서든 사용가능합니다.

Expanding Context in Diffs

diff에서의 문맥 확장에 대해 더 읽어 보세요.

Diff or Patch of Pull Request

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

(...)

Rendering and diffing images

GitHub는 PNG, JPG, GIF, PSD를 포함한 여러 일반적인 이미지 형식을 표시할 수 있습니다. 추가적으로 이미지 형식의 diff를 표시하는 여러 방법을 제공합니다.

[Diffable PSD](https://github.com/blog/1845-psd-viewing-diffing

이미지 diff에 대해 더 읽어 보세요.

Hub

Hub는 GitHub를 좀 더 쉽게 사용할 수 있도록 추가 기능 및 명령을 제공하는 커맨드 라인 Git 래퍼입니다.

이렇게 할 수 있습니다.

$ hub clone tiimgreen/toc

Hub가 제공하는 더 멋진 기능들을 확인해 보세요.

Contribution Guidelines

GitHub는 프로젝트에 기여하는 사용자를 위한 세 가지 각기 다른 파일을 지원합니다. 이 파일은 저장소의 제일 위나 그 아래의 .github 디렉터리에 위치할 수 있습니다.

CONTRIBUTING File

저장소의 제일 위나 그 아래의 .github 디렉터리에 CONTRIBUTING이나 CONTRIBUTING.md 파일을 넣어두면 기여자가 이슈를 만들거나 풀 리퀘스트를 만들 때 링크로 보여줍니다.

Contributing Guidelines

기여하기에 대해 더 읽어 보세요.

ISSUE_TEMPLATE file

프로젝트의 새로운 이슈에 사용될 템플릿을 지정할 수 있습니다. 사용자가 새 이슈를 생성하면 이슈 창이 이 파일의 내용으로 채워집니다. 저장소의 제일 위나 그 아래의 .github 디렉터리에 ISSUE_TEMPLATE이나 ISSUE_TEMPLATE.md 파일을 넣어 두세요.

이슈 템플릿에 대해 더 읽어 보세요.

이슈 템플릿 파일 생성기

GitHub Issue template

PULL_REQUEST_TEMPLATE file

프로젝트의 새로운 풀 리퀘스트에 사용될 템플릿을 지정할 수 있습니다. 사용자가 새 풀 리퀘스트를 생성하면 텍스트 영역이 이 파일의 내용으로 채워집니다. 저장소의 제일 위나 .github 디렉터리에 PULL_REQUEST_TEMPLATE이나 PULL_REQUEST_TEMPLATE.md 파일을 넣어 두세요.

풀 리퀘스트 템플릿에 대해 더 읽어 보세요.

풀 리퀘스트 템플릿 파일 생성기

Octicons

GitHub 아이콘(옥티콘)이 이제 오픈소스가 되었습니다.

Octicons

GitHub 옥티콘에 대해 더 읽어보세요.

GitHub Resources

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/

GitHub Talks

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

Git

Remove All Deleted Files from the Working Tree

/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

Previous Branch

Git에서 이전 브랜치로 돌아가는 건 이렇게 할 수 있습니다.

$ git checkout -
# Switched to branch 'master'

$ git checkout -
# Switched to branch 'next'

$ git checkout -
# Switched to branch 'master'

Git 브랜치에 대해 더 읽어 보세요.

Stripspace

Git Stripspace는 이런 일을 합니다.

  • 줄 끝의 공백을 제거
  • 빈줄을 줄임
  • 파일 끝에 빈 줄을 추가

커맨드를 실행 할 때 파일을 반드시 이런식으로 넘겨줘야 합니다.

$ git stripspace < README.md

Git stripspace 커맨드에 대해 더 읽어 보세요.

SSH keys

아래 주소를 방문하면 공개 ssh 키의 목록을 일반 텍스트 형식으로 볼 수 있습니다.

https://github.com/{user}.keys

예: https://github.com/tiimgreen.keys

공개 ssh 키 접근에 대해 더 읽어 보세요.

Checking out Pull Requests

풀 리퀘스트는 GitHub 저장소에서 사용하는 특별한 브랜치로 여러 방법으로 로컬로 가져올 수 있습니다.

빠르게 diffmerge를 하기 위해 특정 풀 리퀘스트를 임시로 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

풀 리퀘스트를 로컬로 체크아웃 하는 방법에 대해 더 읽어 보세요.

Empty Commits

--allow-empty를 추가하시면 코드의 변경 없이 커밋을 넣을 수 있습니다.

$ git commit -m "Big-ass commit" --allow-empty

있을 법한 사용법에는 이런 것들이 있습니다.

  • 한 뭉치의 일을 시작하기 전에 주석으로 사용
  • 코드와 관련없는 프로젝트 수정을 할때 주석으로 사용
  • 저장소를 사용하는 사람과의 대화
  • 저장소의 첫 커밋으로 사용 git commit -m "Initial commit" --allow-empty

Styled Git Status

$ git status

git status

-sb를 추가하면

$ git status -sb

이렇게 바뀝니다.

git status -sb

Git status 커맨드에 대해 더 읽어 보세요.

Styled Git Log

이 명령을 실행하면

$ 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

이렇게 보입니다.

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 log 커맨드에 대해 더 읽어 보세요.

Git Query

Git 쿼리는 모든 이전 커밋 메시지에서 검색해 가장 최근의 쿼리에 맞는 커밋을 찾아줍니다.

$ git show :/query

query에는 검색하고 싶은 말을 (대소문자를 구분해) 넣으세요. 주어진 검색어가 있는 가장 마지막 커밋을 표시하고 변경된 라인을 보여줍니다.

$ git show :/typo

git show :/query

나오려면 q를 누르세요.

Git Grep

Git Grep은 패턴과 일치하는 줄의 목록을 반환합니다.

다음 명령을 실행해 보세요.

$ git grep aliases

aliases 문자열이 포함된 모든 파일을 보여줍니다.

git grep aliases

나오려면 q를 누르세요.

여러 플래그를 이용해서 좀 더 복잡한 검색을 할 수 있습니다. 예를 들면,

  • -e 다음 파라미터는 패턴 (e.g. regex)
  • --and, --or, --not으로 여러 패턴을 조합

이렇게 사용할 수 있습니다.

 $ git grep -e pattern --and -e anotherpattern

Git grep 커맨드에 대해 더 읽어 보세요.

Merged Branches

$ git branch --merged

이 명령어는 현재 브랜치에 머지된 모든 브랜치의 목록을 보여줍니다.

거꾸로

$ git branch --no-merged

이 명령어는 현재 브랜치에 머지되지 않은 브랜치의 목록을 보여줍니다.

Git branch 커맨드에 대해 더 읽어 보세요.

Fixup and Autosquash

이전(HEAD의 한 개 이상 전의) 커밋에 잘못된 부분이 있다면, 예를 들어 abcde라면, 문제를 수정하고 밑의 커맨드를 입력해 고칠 수 있습니다.

$ git commit --fixup=abcde
$ git rebase abcde^ --autosquash -i

Git commit 커맨드에 대해 더 읽어 보세요. Git rebase 커맨드에 대해 더 읽어 보세요.

Web Server for Browsing Local Repositories

Git instaweb 커맨드을 사용하면, 즉석에서 gitweb 안에서 작업중인 저장소를 둘러 볼 수 있습니다. 이 커맨드는 gitweb과 로컬 저장소를 브라우징 하기 위한 웹 서버를 설정하는 스크립트입니다.

$ git instaweb

Opens:

Git instaweb

Git instaweb 커맨드에 대해 더 읽어 보세요.

Git Configurations

.gitconfig는 모든 설정이 들어있는 파일입니다.

Aliases

알리아스는 커스텀 Git 명령어를 등록할 수 있는 헬퍼입니다. 예를 들어 git agit 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)

Auto-correct

현재 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...

Color

Git 커맨드 라인에 색을 넣으려면 이렇게 하세요.

$ git config --global color.ui 1

Git config 커맨드에 대해 더 읽어 보세요.

Git Resources

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

Git Books

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

Git Videos

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

Git Articles

Title Link
GitHub Flow http://scottchacon.com/2011/08/31/github-flow.html