mingrammer / Git Tips
๐ Git ํ ๋ชจ์์ง (https://github.com/git-tips/tips ํ๊ตญ์ด ๋ฒ์ )
Stars: โญ 817
Labels
Git Tips
git tips์ ํ๊ตญ์ด ๋ฒ์ ๋ฌธ์์ ๋๋ค.
English | ไธญๆ | ะ ัััะบะธะน | Tiแบฟng Viแปt
ํ ํด
- git-tip - ์๋์ ๋์ด๋ ํ๋ค์ ์ฌ์ฉํ ์ ์๋ CLI ํด (๋์ปค ์ปจํ ์ด๋)
๋ชฉ์ฐจ
์ฐธ๊ณ ๋ก ๋ชจ๋ ๋ช ๋ น์ด๋ ๋ค์ ๋ฒ์ ์์ ํ ์คํธ ๋์์ต๋๋ค:
git version 2.7.4 (Apple Git-66)
.
- 20๊ฐ ๋ด์ธ์ ๋ช ๋ น์ด๋ก Git ์ฌ์ฉํ๊ธฐ
- Git๊ณผ ํจ๊ป ์ ๊ณต๋๋ ์ ์ฉํ ๊ฐ์ด๋๋ผ์ธ ๋ณด๊ธฐ
- ๋ด์ฉ์ผ๋ก ๋ณ๊ฒฝ์ฌํญ ๊ฒ์
- ์๊ฒฉ์ง ๋๊ธฐํ ๋ฐ ๋ก์ปฌ ๋ณ๊ฒฝ์ฌํญ ๋ฎ์ด์ฐ๊ธฐ
- ํน์ ์ปค๋ฐ๊น์ง์ ๋ชจ๋ ํ์ผ ๋์ดํ๊ธฐ
- ์ฒซ ๋ฒ์งธ ์ปค๋ฐ ์ด๊ธฐํ
- ์ถฉ๋๋ ๋ชจ๋ ํ์ผ ๋์ดํ๊ธฐ
- ํน์ ์ปค๋ฐ์์ ๋ณ๊ฒฝ๋ ๋ชจ๋ ํ์ผ ๋์ดํ๊ธฐ
- ๋ง์ง๋ง ์ปค๋ฐ ์ดํ๋ก ์คํ ์ด์ง๋์ง ์์ ๋ณ๊ฒฝ์ฌํญ ๋ณด๊ธฐ
- ์ปค๋ฐ์ ํ๊ธฐ ์ํด ์คํ ์ด์ง๋ ๋ณ๊ฒฝ์ฌํญ ๋ณด๊ธฐ
- ์คํ ์ด์ง๋ ๋ณ๊ฒฝ์ฌํญ๊ณผ ์คํ ์ด์ง๋์ง ์์ ๋ณ๊ฒฝ์ฌํญ ๋ชจ๋ ๋ณด๊ธฐ
- ์ด๋ฏธ ๋ง์คํฐ ๋ธ๋์น์ ๋จธ์ง๋ ๋ชจ๋ ๋ธ๋์น ๋์ดํ๊ธฐ
- ์ด์ ๋ธ๋์น๋ก ์ ํํ๊ธฐ
- ์ด๋ฏธ ๋ง์คํฐ ๋ธ๋์น์ ๋จธ์ง๋ ๋ชจ๋ ๋ธ๋์น๋ค ์ญ์ ํ๊ธฐ
- ๋ชจ๋ ๋ธ๋์น๋ค ๋ฐ ๊ทธ ๋ธ๋์น๋ค์ ์ ์คํธ๋ฆผ๊ณผ ๋ง์ง๋ง ์ปค๋ฐ ๋์ดํ๊ธฐ
- ์ ์คํธ๋ฆผ ๋ธ๋์น ์ค์ (ํธ๋ํน)
- ๋ก์ปฌ ๋ธ๋์น ์ญ์
- ์๊ฒฉ ๋ธ๋์น ์ญ์
- ๋ก์ปฌ ํ๊ทธ ์ญ์
- ์๊ฒฉ ํ๊ทธ ์ญ์
- ๋ก์ปฌ ๋ณ๊ฒฝ์ฌํญ์ ํค๋์ ๋ง์ง๋ง ๋ด์ฉ์ผ๋ก ๋๋๋ฆฌ๊ธฐ
- Revert: ์๋ก์ด ์ปค๋ฐ์ ์์ฑํ๋ฉด์ ์ปค๋ฐ ๋๋๋ฆฌ๊ธฐ
- Reset: ์ปค๋ฐ ์ ๊ฑฐ (ํ๋ผ์ด๋น ๋ธ๋์น์์๋ง ์ฌ์ฉํ๊ธธ ๊ถ๊ณ )
- ์ด์ ์ปค๋ฐ ๋ฉ์์ง ๋ณ๊ฒฝ
- ๋ธ๋์น์ ์ปค๋ฐ์ค ์ ์คํธ๋ฆผ์ ๋จธ์ง๋์ง ์์ ์ปค๋ฐ ํ์คํ ๋ฆฌ ๋ณด๊ธฐ
- Author ์์ ํ๊ธฐ
- ๊ธ๋ก๋ฒ ์ค์ ์์ ๋ณ๊ฒฝ๋ author๋ก author ์ฌ์ค์ ํ๊ธฐ
- ์๊ฒฉ์ง URL ๋ณ๊ฒฝํ๊ธฐ
- ๋ชจ๋ ์๊ฒฉ์ง ๋ ํผ๋ฐ์ค ๋ฆฌ์คํธ ๋์ดํ๊ธฐ
- ๋ชจ๋ ๋ก์ปฌ ๋ฐ ์๊ฒฉ์ง ๋ธ๋์น ๋์ดํ๊ธฐ
- ์๊ฒฉ์ง ๋ธ๋์น๋ง ๋์ดํ๊ธฐ
- ํ์ผ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฒด๊ฐ ์๋ ์ผ๋ถ๋ง ์คํ ์ด์งํ๊ธฐ
- git ๋ฐฐ์ ์๋์์ฑ ์ฌ์ฉํ๊ธฐ
- 2์ฃผ ์ ๋ถํฐ ํ์ฌ๊น์ง์ ๋ณ๊ฒฝ์ฌํญ ๋ณด๊ธฐ
- ๋ง์คํฐ๋ก๋ถํฐ ํฌํฌํ ์ดํ์ ์์ฑ๋ ๋ชจ๋ ์ปค๋ฐ ๋ณด๊ธฐ
- cherry-pick์ ์ฌ์ฉํด ๋ธ๋์น๊ฐ ์ปค๋ฐ ๊ฐ์ ธ์ค๊ธฐ
- ํด๋น ์ปค๋ฐ ํด์๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋ธ๋์น๋ค ๊ฒ์ํ๊ธฐ
- Git ๋ช ๋ น์ด ๋ณ์นญ ์ง์
- ์ปค๋ฐํ์ง ์์ ํธ๋ํน๋ ํ์ผ๋ค์ ์ํ ์ ์ฅํ๊ธฐ
- ์คํ ์ด์ง๋์ง ์์ ๋ณ๊ฒฝ์ฌํญ๋ค์ ํ์ฌ ์ํ๋ฅผ ํธ๋ํน๋ ํ์ผ๋ก ์ ์ฅํ๊ธฐ
- ํธ๋ํน๋์ง ์์ ํ์ผ๋ค๊น์ง ๋ชจ๋ ํฌํจํด ํ์ฌ ์ํ ์ ์ฅํ๊ธฐ
- ํ์ฌ ์ํ๋ฅผ ๋ฉ์์ง์ ํจ๊ป ์ ์ฅํ๊ธฐ
- ๋ชจ๋ ๋ฌด์๋ ํ์ผ, ํธ๋ํน๋์ง ์์ ํ์ผ, ํธ๋ํน๋ ํ์ผ๋ค์ ํ์ฌ ์ํ ์ ์ฅํ๊ธฐ
- ์ ์ฅ๋ ๋ชจ๋ ์คํ์ ๋ฆฌ์คํธ ๋์ดํ๊ธฐ
- ์คํ์ ๋ฆฌ์คํธ์์ ์ญ์ ํ์ง ์๊ณ ์คํ์ ์ ์ฉํ๊ธฐ
- ๋ง์ง๋ง์ผ๋ก ์ ์ฅ๋ ์คํ์ ์ํ๋ฅผ ์ ์ฉํ๊ณ ์คํ์ ๋ฆฌ์คํธ์์ ์ญ์ ํ๊ธฐ
- ์ ์ฅ๋ ๋ชจ๋ ์คํ์ ์ญ์ ํ๊ธฐ
- ์คํ์๋ก๋ถํฐ ๋จ์ผ ํ์ผ ๊ฐ์ ธ์ค๊ธฐ
- ํธ๋ํน๋ ํ์ผ๋ค ๋ชจ๋ ๋ณด๊ธฐ
- ํธ๋ํน๋์ง ์์ ๋ชจ๋ ํ์ผ ๋ณด๊ธฐ
- ๋ฌด์๋ ํ์ผ๋ค ๋ชจ๋ ๋ณด๊ธฐ
- ์ ์ฅ์์ ์๋ก์ด ์ํน ํธ๋ฆฌ ์์ฑํ๊ธฐ (git 2.5)
- HEAD๋ก๋ถํฐ ์๋ก์ด ์ํน ํธ๋ฆฌ ์์ฑํ๊ธฐ
- ํ์ผ์ ์ญ์ ํ์ง ์๊ณ ์ธํธ๋ํนํ๊ธฐ
- ํธ๋ํน๋์ง ์์ ํ์ผ/๋๋ ํ ๋ฆฌ๋ฅผ ์ค์ ๋ก ์ญ์ ํ๊ธฐ ์ ์ ์ด๋ค ํ์ผ/๋๋ ํ ๋ฆฌ๊ฐ ์ญ์ ๋๋์ง ํ ์คํธ ํด๋ณด๊ธฐ
- ํธ๋ํน๋์ง ์์ ํ์ผ๋ค ๊ฐ์ ๋ก ์ญ์ ํ๊ธฐ
- ํธ๋ํน๋์ง ์์ ๋๋ ํ ๋ฆฌ ๊ฐ์ ๋ก ์ญ์ ํ๊ธฐ
- ๋ชจ๋ ์๋ธ ๋ชจ๋ ์ ๋ฐ์ดํธํ๊ธฐ
- ํ์ฌ ๋ธ๋์น์์ ์์ง ๋ง์คํฐ์ ๋จธ์ง๋์ง ์์ ๋ชจ๋ ์ปค๋ฐ๋ค ๋ณด๊ธฐ
- ๋ธ๋์น๋ช ์์ ํ๊ธฐ
- 'feature' ๋ธ๋์น๋ฅผ ๋ง์คํฐ์ ๋ฆฌ๋ฒ ์ด์คํ ํ ๋ง์คํฐ์ ๋จธ์งํ๊ธฐ
- ๋ง์คํฐ ๋ธ๋์น ์์นด์ด๋ธ
- ์ปค๋ฐ ๋ฉ์์ง๋ ๋ณ๊ฒฝํ์ง ์๊ณ ์ด์ ์ปค๋ฐ ๋ณ๊ฒฝํ๊ธฐ
- ์๊ฒฉ์ง์์ ์ญ์ ๋ ์๊ฒฉ ๋ธ๋์น ๋ ํผ๋ฐ์ค ์ ๊ฑฐํ๊ธฐ
- ์ฒซ ๋ฆฌ๋น์ ์ ์ปค๋ฐ ํด์๊ฐ ๊ฐ์ ธ์ค๊ธฐ
- ๋ฒ์ ํธ๋ฆฌ ์๊ฐํ
- ํธ๋ํน๋ ํ์ํด๋๋ฅผ gh-pages ๋ธ๋์น๋ก ๋ฐฐํฌํ๊ธฐ
- subtree๋ฅผ ์ฌ์ฉํด ์ ์ฅ์์ ํ๋ก์ ํธ ์ถ๊ฐํ๊ธฐ
- subtree๋ฅผ ์ฌ์ฉํด ๊ด๋ จ๋ ํ๋ก์ ํธ์ ์ต์ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฅ์๋ก ๊ฐ์ ธ์ค๊ธฐ
- ๋ธ๋์น๋ฅผ ํ์คํ ๋ฆฌ์ ํจ๊ป ํ์ผ๋ก ์ถ์ถํ๊ธฐ
- ๋ฒ๋ค ๊ฐ์ ธ์ค๊ธฐ
- ํ์ฌ ๋ธ๋์น๋ช ๊ฐ์ ธ์ค๊ธฐ
- ์ปค๋ฐ์ ํ์ผ ๋ฌด์ํ๊ธฐ (์๋ฅผ ๋ค์ด, Changelog ํ์ผ)
- ๋ฆฌ๋ฒ ์ด์ค ์ ์ ๋ณ๊ฒฝ์ฌํญ ์คํ์ํ๊ธฐ
- ID๋ก ํ ๋ฆฌํ์คํธ๋ฅผ ๋ก์ปฌ ์ ์ฅ์๋ก ๊ฐ์ ธ์ค๊ธฐ
- ํ์ฌ ๋ธ๋์น์ ๊ฐ์ฅ ์ต๊ทผ ํ๊ทธ ๋ณด๊ธฐ
- diff ์๋ ๋จ์๋ก ๋ณด๊ธฐ
- diff ๋๊ตฌ๋ฅผ ์ฌ์ฉํด ๋ณ๊ฒฝ์ฌํญ ๋ณด๊ธฐ
- ํธ๋ํน๋ ํ์ผ์ ๋ณ๊ฒฝ์ฌํญ ๋ฌด์ํ๊ธฐ
- assume-unchanged ๋๋๋ฆฌ๊ธฐ
.gitignore
์ ๋ช ์๋ ํ์ผ๋ค ์ญ์ ํ๊ธฐ- ์ญ์ ๋ ํ์ผ ๋ณต๊ตฌํ๊ธฐ
- ํน์ ์ปค๋ฐ์ผ๋ก์ ํ์ผ๋ก ๋ณต๊ตฌํ๊ธฐ
- pull์ ๋จธ์งํ๋ ๋์ ํญ์ ๋ฆฌ๋ฒ ์ด์ค ํ๊ธฐ
- ๋ชจ๋ ๋ณ์นญ๊ณผ ์ค์ ๊ฐ๋ค ๋์ดํ๊ธฐ
- ๋์๋ฌธ์ ๊ตฌ๋ณ ํ์ฑํ
- ์ปค์คํ ์๋ํฐ ์ถ๊ฐํ๊ธฐ
- ์คํ ์๋ ์์ ํ์ฑํ
- ๋ณ๊ฒฝ์ฌํญ์ด ์ด๋ค ๋ฆด๋ฆฌ์ฆ์ ์ํ๋์ง ํ์ธํ๊ธฐ
- ๋ช ๋ น์ด ํ ์คํธ ํด๋ณด๊ธฐ (dry-run ํ๋๊ทธ๋ฅผ ์ง์ํ๋ ๋ชจ๋ ๋ช ๋ น์ด์์ ๊ฐ๋ฅ)
- ์ปค๋ฐ์ด ์ด์ ์ปค๋ฐ์ ์์ ๋ฒ์ ์์ ํ์ํ๊ธฐ
- fixup ์ปค๋ฐ์ ์ผ๋ฐ ์ปค๋ฐ์ผ๋ก ์ค์ฟผ์ํ๊ธฐ
- ์ปค๋ฐ์ ์คํ ์ด์ง๋ ํ์ผ๋ค ์คํตํ๊ธฐ
- ๋ํํ์ผ๋ก ์คํ ์ด์งํ๊ธฐ
- ๋ฌด์๋ ํ์ผ๋ค ๋์ดํ๊ธฐ
- ๋ฌด์๋ ํ์ผ๋ค ์ํ ์ถ๋ ฅ
- Branch2์๋ ์๊ณ Branch1์๋ง ์๋ ์ปค๋ฐ๋ค ๋์ดํ๊ธฐ
- ๋ง์ง๋ง n๊ฐ์ ์ปค๋ฐ ๋์ดํ๊ธฐ
- ์ด์ ์ ์ถฉ๋์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๊ธฐ๋กํ๊ณ ์ฌ์ฌ์ฉํ๊ธฐ
- ๋ชจ๋ ์ถฉ๋๋ ํ์ผ๋ค ์๋ํฐ๋ก ์ด๊ธฐ
- unpacked ์ค๋ธ์ ํธ์ ๊ฐฏ์์ ๋์คํฌ ์ฌ์ฉ๋ ๋ณด๊ธฐ
- ์ค๋ธ์ ํธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋๋ฌํ ์ ์๋ ์ค๋ธ์ ํธ๋ค ์ ๊ฑฐํ๊ธฐ
- gitweb์ผ๋ก ์ํน ๋๋ ํ ๋ฆฌ ํ์ํ๊ธฐ
- ์ปค๋ฐ ๋ก๊ทธ์์ GPG ์๊ทธ๋์ณ ๋ณด๊ธฐ
- ๊ธ๋ก๋ฒ ์ค์ ์์ ์ํธ๋ฆฌ ์ ๊ฑฐํ๊ธฐ
- ํ์คํ ๋ฆฌ๊ฐ ์๋ ์๋ก์ด ๋ธ๋์น๋ก ์ฒดํฌ์์ํ๊ธฐ
- ๋ค๋ฅธ ๋ธ๋์น์์ ํ์ผ๋ด์ฉ ๊ฐ์ ธ์ค๊ธฐ
- ๋ฃจํธ ์ปค๋ฐ๊ณผ ๋จธ์ง ์ปค๋ฐ๋ง ๋์ดํ๊ธฐ
- ๋ํํ ๋ฆฌ๋ฒ ์ด์ค๋ก ์ด์ ๋ ์ปค๋ฐ ์์ ํ๊ธฐ
- ์์ ์ค์ธ ๋ธ๋์น๋ค ๋ชจ๋ ๋์ดํ๊ธฐ
- ์ด์ง ํ์์ผ๋ก ์ข์/์์ข์ ์ปค๋ฐ ๊ฒ์ํ๊ธฐ
- pre-commit๊ณผ commit-msg ๊น ํํน ์ฐํํ๊ธฐ
- ํน์ ํ์ผ์ ๋ํ ์ปค๋ฐ๊ณผ ๋ณ๊ฒฝ์ฌํญ ๋์ดํ๊ธฐ (์ด๋ฆ์ด ๋ฐ๋ ํ์ผ๋ ์ถ์ )
- ๋จ์ผ ๋ธ๋์น ํด๋ก
- ์๋ก์ด ๋ธ๋์น ์์ฑ๊ณผ ๋์์ ์ค์์นญ
- ์ปค๋ฐ์ ํ์ผ ๋ชจ๋ ๋ณ๊ฒฝ ๋ฌด์
- Git ํฐ๋ฏธ๋ ์์ ์ถ๋ ฅ ๋นํ์ฑํ
- ํน์ ๋ช ๋ น์ด์ ๋ํ ์์ ์ค์ ์ง์ ํ๊ธฐ
- ๋ชจ๋ ๋ก์ปฌ ๋ธ๋์น๋ฅผ ์ต๊ทผ ์ปค๋ฐ ๋ ์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํด ๋์ดํ๊ธฐ
- ํธ๋ํน๋ ํ์ผ์์ ํจํด(์ ๊ท์์ด๋ ๋ฌธ์์ด)์ ๋งค์นญ๋๋ ๋ผ์ธ ๊ฒ์
- ์ ์ฅ์์ ์์ ์นดํผ ๋ฒ์ ํด๋ก ํ๊ธฐ
- ๋ชจ๋ ๋ธ๋์น์์ ์ฃผ์ด์ง ํ ์คํธ๋ก ์ปค๋ฐ ๋ก๊ทธ ๊ฒ์ํ๊ธฐ
- ๋ธ๋์น์ ์ฒซ ์ปค๋ฐ ๊ฐ์ ธ์ค๊ธฐ (๋ง์คํฐ ๋ธ๋์น๋ก๋ถํฐ ์์๋)
- ์คํ ์ด์ง๋ ํ์ผ๋ค ์ธ์คํ ์ด์งํ๊ธฐ
- ์๊ฒฉ ์ ์ฅ์์ ๊ฐ์ ํธ์ํ๊ธฐ
- ์ ์ฅ์๋ช ์ถ๊ฐํ๊ธฐ
- ์ฃผ์ด์ง ํ์ผ์ ๊ฐ ๋ผ์ธ๋ณ author, ์๊ฐ ๊ทธ๋ฆฌ๊ณ ์ต์ข ๋ฆฌ๋น์ ๋ช ๋ณด๊ธฐ
- Author์ ์ ๋ชฉ์ผ๋ก ์ปค๋ฐ ๊ทธ๋ฃนํํ๊ธฐ
- ๋ค๋ฅธ ์ฌ๋์ด ์์ ํ ๋ด์ฉ์ ๋ฎ์ด์ฐ์ง ์๊ณ ๊ฐ์ ํธ์ํ๊ธฐ
- ํน์ author๊ฐ ๊ธฐ์ฌํ ๋ผ์ธ์ ๋ณด๊ธฐ
- Revert: ๋จธ์ง ๋ณต๊ตฌํ๊ธฐ
- ํน์ ๋ธ๋์น์ ์ปค๋ฐ ์ ์ถ๋ ฅํ๊ธฐ
- ๋ณ์นญ: git undo
- ์ค๋ธ์ ํธ์ ๋ ธํธ(๋ฉ๋ชจ) ์ถ๊ฐํ๊ธฐ
- ๋ชจ๋ ๊น ๋ ธํธ ๋ณด๊ธฐ
- ๋ค๋ฅธ ์ ์ฅ์์ ์๋ ์ปค๋ฐ ์ ์ฉํ๊ธฐ
- ํ์น ๋ ํผ๋ฐ์ค ์ง์ ํ๊ธฐ
- ๋ ๋ธ๋์น์ ๊ณตํต ์กฐ์ ์ปค๋ฐ ์ฐพ๊ธฐ
- ํธ์๋์ง ์์ ์ปค๋ฐ๋ค ๋์ดํ๊ธฐ
- ๊ณต๋ฐฑ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ธํ ๋ชจ๋ ๋ณ๊ฒฝ์ฌํญ ์ถ๊ฐํ๊ธฐ
- ๊น ์ค์ [๋ก์ปฌ/๊ธ๋ก๋ฒ] ์์ ํ๊ธฐ
- ํน์ ๊ตฌ๊ฐ์์ blame ์ ๋ณด ๋ณด๊ธฐ
- Git์ ๋ ผ๋ฆฌ์ ๋ณ์ ๋ณด๊ธฐ
- ํจ์น ํ์ผ ๋ฏธ๋ฆฌ ํฌ๋งทํ ํ๊ธฐ
- ์ ์ฅ์๋ช ๊ฐ์ ธ์ค๊ธฐ
- ํน์ ๋ ์ง ๊ตฌ๊ฐ ์ฌ์ด์ ์ปค๋ฐ ๋ก๊ทธ ์ถ๋ ฅํ๊ธฐ
- ๋ก๊ทธ์์ author ์ ์ธํ๊ธฐ
- ๋ธ๋์น์ ์์ ์ฌํญ ์์ฝํ๊ธฐ
- ์๊ฒฉ ์ ์ฅ์์ ๋ชจ๋ ๋ ํผ๋ฐ์ค ๋์ดํ๊ธฐ
- ํธ๋ํน๋์ง ์์ ํ์ผ๋ค ๋ฐฑ์ ํ๊ธฐ
- ๋ชจ๋ git ๋ช ๋ น์ด ๋ณ์นญ ๋์ดํ๊ธฐ
- git ์ํ ๊ฐ๋ตํ๊ฒ ๋ณด๊ธฐ
- ํ๋ฃจ ์ ์ ์ปค๋ฐ์ผ๋ก ์ฒดํฌ์์ํ๊ธฐ
20๊ฐ ๋ด์ธ์ ๋ช ๋ น์ด๋ก Git ์ฌ์ฉํ๊ธฐ
git help everyday
Git๊ณผ ํจ๊ป ์ ๊ณต๋๋ ์ ์ฉํ ๊ฐ์ด๋๋ผ์ธ ๋ณด๊ธฐ
git help -g
๋ด์ฉ์ผ๋ก ๋ณ๊ฒฝ์ฌํญ ๊ฒ์
git log -S'<a term in the source>'
์๊ฒฉ์ง ๋๊ธฐํ ๋ฐ ๋ก์ปฌ ๋ณ๊ฒฝ์ฌํญ ๋ฎ์ด์ฐ๊ธฐ
git fetch origin && git reset --hard origin/master && git clean -f -d
ํน์ ์ปค๋ฐ๊น์ง์ ๋ชจ๋ ํ์ผ ๋์ดํ๊ธฐ
git ls-tree --name-only -r <commit-ish>
์ฒซ ๋ฒ์งธ ์ปค๋ฐ ์ด๊ธฐํ
git update-ref -d HEAD
์ถฉ๋๋ ๋ชจ๋ ํ์ผ ๋์ดํ๊ธฐ
git diff --name-only --diff-filter=U
ํน์ ์ปค๋ฐ์์ ๋ณ๊ฒฝ๋ ๋ชจ๋ ํ์ผ ๋์ดํ๊ธฐ
git diff-tree --no-commit-id --name-only -r <commit-ish>
๋ง์ง๋ง ์ปค๋ฐ ์ดํ๋ก ์คํ ์ด์ง๋์ง ์์ ๋ณ๊ฒฝ์ฌํญ ๋ณด๊ธฐ
git diff
์ปค๋ฐ์ ํ๊ธฐ ์ํด ์คํ ์ด์ง๋ ๋ณ๊ฒฝ์ฌํญ ๋ณด๊ธฐ
git diff --cached
๋ค๋ฅธ ๋ฐฉ๋ฒ:
git diff --staged
์คํ ์ด์ง๋ ๋ณ๊ฒฝ์ฌํญ๊ณผ ์คํ ์ด์ง๋์ง ์์ ๋ณ๊ฒฝ์ฌํญ ๋ชจ๋ ๋ณด๊ธฐ
git diff HEAD
์ด๋ฏธ ๋ง์คํฐ ๋ธ๋์น์ ๋จธ์ง๋ ๋ชจ๋ ๋ธ๋์น ๋์ดํ๊ธฐ
git branch --merged master
์ด์ ๋ธ๋์น๋ก ์ ํํ๊ธฐ
git checkout -
๋ค๋ฅธ ๋ฐฉ๋ฒ:
git checkout @{-1}
์ด๋ฏธ ๋ง์คํฐ ๋ธ๋์น์ ๋จธ์ง๋ ๋ชจ๋ ๋ธ๋์น๋ค ์ญ์ ํ๊ธฐ
git branch --merged master | grep -v '^\*' | xargs -n 1 git branch -d
๋ค๋ฅธ ๋ฐฉ๋ฒ:
git branch --merged master | grep -v '^\*\| master' | xargs -n 1 git branch -d # will not delete master if master is not checked out
๋ชจ๋ ๋ธ๋์น๋ค ๋ฐ ๊ทธ ๋ธ๋์น๋ค์ ์ ์คํธ๋ฆผ๊ณผ ๋ง์ง๋ง ์ปค๋ฐ ๋์ดํ๊ธฐ
git branch -vv
์ ์คํธ๋ฆผ ๋ธ๋์น ์ค์ (ํธ๋ํน)
git branch -u origin/mybranch
๋ก์ปฌ ๋ธ๋์น ์ญ์
git branch -d <local_branchname>
์๊ฒฉ ๋ธ๋์น ์ญ์
git push origin --delete <remote_branchname>
๋ค๋ฅธ ๋ฐฉ๋ฒ:
git push origin :<remote_branchname>
๋ก์ปฌ ํ๊ทธ ์ญ์
git tag -d <tag-name>
์๊ฒฉ ํ๊ทธ ์ญ์
git push origin :refs/tags/<tag-name>
๋ก์ปฌ ๋ณ๊ฒฝ์ฌํญ์ ํค๋์ ๋ง์ง๋ง ๋ด์ฉ์ผ๋ก ๋๋๋ฆฌ๊ธฐ
git checkout -- <file_name>
Revert: ์๋ก์ด ์ปค๋ฐ์ ์์ฑํ๋ฉด์ ์ปค๋ฐ ๋๋๋ฆฌ๊ธฐ
git revert <commit-ish>
Reset: ์ปค๋ฐ ์ ๊ฑฐ (ํ๋ผ์ด๋น ๋ธ๋์น์์๋ง ์ฌ์ฉํ๊ธธ ๊ถ๊ณ )
git reset <commit-ish>
์ด์ ์ปค๋ฐ ๋ฉ์์ง ๋ณ๊ฒฝ
git commit -v --amend
๋ธ๋์น์ ์ปค๋ฐ์ค ์ ์คํธ๋ฆผ์ ๋จธ์ง๋์ง ์์ ์ปค๋ฐ ํ์คํ ๋ฆฌ ๋ณด๊ธฐ
git cherry -v master
Author ์์ ํ๊ธฐ
git commit --amend --author='Author Name <[email protected]>'
๊ธ๋ก๋ฒ ์ค์ ์์ ๋ณ๊ฒฝ๋ author๋ก author ์ฌ์ค์ ํ๊ธฐ
git commit --amend --reset-author --no-edit
์๊ฒฉ์ง URL ๋ณ๊ฒฝํ๊ธฐ
git remote set-url origin <URL>
๋ชจ๋ ์๊ฒฉ์ง ๋ ํผ๋ฐ์ค ๋ฆฌ์คํธ ๋์ดํ๊ธฐ
git remote
๋ค๋ฅธ ๋ฐฉ๋ฒ:
git remote show
๋ชจ๋ ๋ก์ปฌ ๋ฐ ์๊ฒฉ์ง ๋ธ๋์น ๋์ดํ๊ธฐ
git branch -a
์๊ฒฉ์ง ๋ธ๋์น๋ง ๋์ดํ๊ธฐ
git branch -r
ํ์ผ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฒด๊ฐ ์๋ ์ผ๋ถ๋ง ์คํ ์ด์งํ๊ธฐ
git add -p
Git ๋ฐฐ์ ์๋์์ฑ ์ฌ์ฉํ๊ธฐ
curl http://git.io/vfhol > ~/.git-completion.bash && echo '[ -f ~/.git-completion.bash ] && . ~/.git-completion.bash' >> ~/.bashrc
2์ฃผ ์ ๋ถํฐ ํ์ฌ๊น์ง์ ๋ณ๊ฒฝ์ฌํญ ๋ณด๊ธฐ
git log --no-merges --raw --since='2 weeks ago'
๋ค๋ฅธ ๋ฐฉ๋ฒ:
git whatchanged --since='2 weeks ago'
๋ง์คํฐ๋ก๋ถํฐ ํฌํฌํ ์ดํ์ ์์ฑ๋ ๋ชจ๋ ์ปค๋ฐ ๋ณด๊ธฐ
git log --no-merges --stat --reverse master..
cherry-pick์ ์ฌ์ฉํด ๋ธ๋์น๊ฐ ์ปค๋ฐ ๊ฐ์ ธ์ค๊ธฐ
git checkout <branch-name> && git cherry-pick <commit-ish>
ํด๋น ์ปค๋ฐ ํด์๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋ธ๋์น๋ค ๊ฒ์ํ๊ธฐ
git branch -a --contains <commit-ish>
๋ค๋ฅธ ๋ฐฉ๋ฒ:
git branch --contains <commit-ish>
Git ๋ช ๋ น์ด ๋ณ์นญ ์ง์
git config --global alias.<handle> <command>
git config --global alias.st status
์ปค๋ฐํ์ง ์์ ํธ๋ํน๋ ํ์ผ๋ค์ ์ํ ์ ์ฅํ๊ธฐ
git stash
๋ค๋ฅธ ๋ฐฉ๋ฒ:
git stash save
์คํ ์ด์ง๋์ง ์์ ๋ณ๊ฒฝ์ฌํญ๋ค์ ํ์ฌ ์ํ๋ฅผ ํธ๋ํน๋ ํ์ผ๋ก ์ ์ฅํ๊ธฐ
git stash -k
๋ค๋ฅธ ๋ฐฉ๋ฒ:
git stash --keep-index
git stash save --keep-index
ํธ๋ํน๋์ง ์์ ํ์ผ๋ค๊น์ง ๋ชจ๋ ํฌํจํด ํ์ฌ ์ํ ์ ์ฅํ๊ธฐ
git stash -u
๋ค๋ฅธ ๋ฐฉ๋ฒ:
git stash save -u
git stash save --include-untracked
ํ์ฌ ์ํ๋ฅผ ๋ฉ์์ง์ ํจ๊ป ์ ์ฅํ๊ธฐ
git stash save <message>
๋ชจ๋ ๋ฌด์๋ ํ์ผ, ํธ๋ํน๋์ง ์์ ํ์ผ, ํธ๋ํน๋ ํ์ผ๋ค์ ํ์ฌ ์ํ ์ ์ฅํ๊ธฐ
git stash -a
๋ค๋ฅธ ๋ฐฉ๋ฒ:
git stash --all
git stash save --all
์ ์ฅ๋ ๋ชจ๋ ์คํ์ ๋ฆฌ์คํธ ๋์ดํ๊ธฐ
git stash list
์คํ์ ๋ฆฌ์คํธ์์ ์ญ์ ํ์ง ์๊ณ ์คํ์ ์ ์ฉํ๊ธฐ
git stash apply <[email protected]{n}>
๋ง์ง๋ง์ผ๋ก ์ ์ฅ๋ ์คํ์ ์ํ๋ฅผ ์ ์ฉํ๊ณ ์คํ์ ๋ฆฌ์คํธ์์ ์ญ์ ํ๊ธฐ
git stash pop
๋ค๋ฅธ ๋ฐฉ๋ฒ:
git stash apply [email protected]{0} && git stash drop [email protected]{0}
์ ์ฅ๋ ๋ชจ๋ ์คํ์ ์ญ์ ํ๊ธฐ
git stash clear
๋ค๋ฅธ ๋ฐฉ๋ฒ:
git stash drop <[email protected]{n}>
์คํ์๋ก๋ถํฐ ๋จ์ผ ํ์ผ ๊ฐ์ ธ์ค๊ธฐ
git checkout <[email protected]{n}> -- <file_path>
๋ค๋ฅธ ๋ฐฉ๋ฒ:
git checkout [email protected]{0} -- <file_path>
ํธ๋ํน๋ ํ์ผ๋ค ๋ชจ๋ ๋ณด๊ธฐ
git ls-files -t
ํธ๋ํน๋์ง ์์ ํ์ผ๋ค ๋ชจ๋ ๋ณด๊ธฐ
git ls-files --others
๋ฌด์๋ ํ์ผ๋ค ๋ชจ๋ ๋ณด๊ธฐ
git ls-files --others -i --exclude-standard
์ ์ฅ์์ ์๋ก์ด ์ํน ํธ๋ฆฌ ์์ฑํ๊ธฐ (git 2.5)
git worktree add -b <branch-name> <path> <start-point>
HEAD๋ก๋ถํฐ ์๋ก์ด ์ํน ํธ๋ฆฌ ์์ฑํ๊ธฐ
git worktree add --detach <path> HEAD
ํ์ผ์ ์ญ์ ํ์ง ์๊ณ ์ธํธ๋ํนํ๊ธฐ
git rm --cached <file_path>
๋ค๋ฅธ ๋ฐฉ๋ฒ:
git rm --cached -r <directory_path>
ํธ๋ํน๋์ง ์์ ํ์ผ/๋๋ ํ ๋ฆฌ๋ฅผ ์ค์ ๋ก ์ญ์ ํ๊ธฐ ์ ์ ์ด๋ค ํ์ผ/๋๋ ํ ๋ฆฌ๊ฐ ์ญ์ ๋๋์ง ํ ์คํธ ํด๋ณด๊ธฐ
git clean -n
ํธ๋ํน๋์ง ์์ ํ์ผ๋ค ๊ฐ์ ๋ก ์ญ์ ํ๊ธฐ
git clean -f
ํธ๋ํน๋์ง ์์ ๋๋ ํ ๋ฆฌ ๊ฐ์ ๋ก ์ญ์ ํ๊ธฐ
git clean -f -d
๋ค๋ฅธ ๋ฐฉ๋ฒ:
git clean -df
๋ชจ๋ ์๋ธ ๋ชจ๋ ์ ๋ฐ์ดํธํ๊ธฐ
git submodule foreach git pull
๋ค๋ฅธ ๋ฐฉ๋ฒ:
git submodule update --init --recursive
git submodule update --remote
ํ์ฌ ๋ธ๋์น์์ ์์ง ๋ง์คํฐ์ ๋จธ์ง๋์ง ์์ ๋ชจ๋ ์ปค๋ฐ๋ค ๋ณด๊ธฐ
git cherry -v master
๋ค๋ฅธ ๋ฐฉ๋ฒ:
git cherry -v master <branch-to-be-merged>
๋ธ๋์น๋ช ์์ ํ๊ธฐ
git branch -m <new-branch-name>
๋ค๋ฅธ ๋ฐฉ๋ฒ:
git branch -m [<old-branch-name>] <new-branch-name>
'feature' ๋ธ๋์น๋ฅผ ๋ง์คํฐ์ ๋ฆฌ๋ฒ ์ด์คํ ํ ๋ง์คํฐ์ ๋จธ์งํ๊ธฐ
git rebase master feature && git checkout master && git merge -
๋ง์คํฐ ๋ธ๋์น ์์นด์ด๋ธ
git archive master --format=zip --output=master.zip
์ปค๋ฐ ๋ฉ์์ง๋ ๋ณ๊ฒฝํ์ง ์๊ณ ์ด์ ์ปค๋ฐ ๋ณ๊ฒฝํ๊ธฐ
git add --all && git commit --amend --no-edit
์๊ฒฉ์ง์์ ์ญ์ ๋ ์๊ฒฉ ๋ธ๋์น ๋ ํผ๋ฐ์ค ์ ๊ฑฐํ๊ธฐ
git fetch -p
๋ค๋ฅธ ๋ฐฉ๋ฒ:
git remote prune origin
์ฒซ ๋ฆฌ๋น์ ์ ์ปค๋ฐ ํด์๊ฐ ๊ฐ์ ธ์ค๊ธฐ
git rev-list --reverse HEAD | head -1
๋ค๋ฅธ ๋ฐฉ๋ฒ:
git rev-list --max-parents=0 HEAD
git log --pretty=oneline | tail -1 | cut -c 1-40
git log --pretty=oneline --reverse | head -1 | cut -c 1-40
๋ฒ์ ํธ๋ฆฌ ์๊ฐํ
git log --pretty=oneline --graph --decorate --all
๋ค๋ฅธ ๋ฐฉ๋ฒ:
gitk --all
ํธ๋ํน๋ ํ์ํด๋๋ฅผ gh-pages ๋ธ๋์น๋ก ๋ฐฐํฌํ๊ธฐ
git subtree push --prefix subfolder_name origin gh-pages
subtree๋ฅผ ์ฌ์ฉํด ์ ์ฅ์์ ํ๋ก์ ํธ ์ถ๊ฐํ๊ธฐ
git subtree add --prefix=<directory_name>/<project_name> --squash [email protected]:<username>/<project_name>.git master
subtree๋ฅผ ์ฌ์ฉํด ๊ด๋ จ๋ ํ๋ก์ ํธ์ ์ต์ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฅ์๋ก ๊ฐ์ ธ์ค๊ธฐ
git subtree pull --prefix=<directory_name>/<project_name> --squash [email protected]:<username>/<project_name>.git master
๋ธ๋์น๋ฅผ ํ์คํ ๋ฆฌ์ ํจ๊ป ํ์ผ๋ก ์ถ์ถํ๊ธฐ
git bundle create <file> <branch-name>
๋ฒ๋ค ๊ฐ์ ธ์ค๊ธฐ
git clone repo.bundle <repo-dir> -b <branch-name>
ํ์ฌ ๋ธ๋์น๋ช ๊ฐ์ ธ์ค๊ธฐ
git rev-parse --abbrev-ref HEAD
์ปค๋ฐ์ ํ์ผ ๋ฌด์ํ๊ธฐ (์๋ฅผ ๋ค์ด, Changelog ํ์ผ)
git update-index --assume-unchanged Changelog; git commit -a; git update-index --no-assume-unchanged Changelog
๋ฆฌ๋ฒ ์ด์ค ์ ์ ๋ณ๊ฒฝ์ฌํญ ์คํ์ํ๊ธฐ
git rebase --autostash
ID๋ก ํ ๋ฆฌํ์คํธ๋ฅผ ๋ก์ปฌ ์ ์ฅ์๋ก ๊ฐ์ ธ์ค๊ธฐ
git fetch origin pull/<id>/head:<branch-name>
๋ค๋ฅธ ๋ฐฉ๋ฒ:
git pull origin pull/<id>/head:<branch-name>
ํ์ฌ ๋ธ๋์น์ ๊ฐ์ฅ ์ต๊ทผ ํ๊ทธ ๋ณด๊ธฐ
git describe --tags --abbrev=0
diff ์๋ ๋จ์๋ก ๋ณด๊ธฐ
git diff --word-diff
diff ๋๊ตฌ๋ฅผ ์ฌ์ฉํด ๋ณ๊ฒฝ์ฌํญ ๋ณด๊ธฐ
git difftool -t <commit1> <commit2> <path>
ํธ๋ํน๋ ํ์ผ์ ๋ณ๊ฒฝ์ฌํญ ๋ฌด์ํ๊ธฐ
git update-index --assume-unchanged <file_name>
assume-unchanged ๋๋๋ฆฌ๊ธฐ
git update-index --no-assume-unchanged <file_name>
.gitignore
์ ๋ช
์๋ ํ์ผ๋ค ์ญ์ ํ๊ธฐ
git clean -X -f
์ญ์ ๋ ํ์ผ ๋ณต๊ตฌํ๊ธฐ
git checkout <deleting_commit>^ -- <file_path>
ํน์ ์ปค๋ฐ์ผ๋ก์ ํ์ผ๋ก ๋ณต๊ตฌํ๊ธฐ
git checkout <commit-ish> -- <file_path>
pull์ ๋จธ์งํ๋ ๋์ ํญ์ ๋ฆฌ๋ฒ ์ด์ค ํ๊ธฐ
git config --global pull.rebase true
๋ค๋ฅธ ๋ฐฉ๋ฒ:
#git < 1.7.9
git config --global branch.autosetuprebase always
๋ชจ๋ ๋ณ์นญ๊ณผ ์ค์ ๊ฐ๋ค ๋์ดํ๊ธฐ
git config --list
๋์๋ฌธ์ ๊ตฌ๋ณ ํ์ฑํ
git config --global core.ignorecase false
์ปค์คํ ์๋ํฐ ์ถ๊ฐํ๊ธฐ
git config --global core.editor '$EDITOR'
์คํ ์๋ ์์ ํ์ฑํ
git config --global help.autocorrect 1
๋ณ๊ฒฝ์ฌํญ์ด ์ด๋ค ๋ฆด๋ฆฌ์ฆ์ ์ํ๋์ง ํ์ธํ๊ธฐ
git name-rev --name-only <SHA-1>
๋ช ๋ น์ด ํ ์คํธ ํด๋ณด๊ธฐ (dry-run ํ๋๊ทธ๋ฅผ ์ง์ํ๋ ๋ชจ๋ ๋ช ๋ น์ด์์ ๊ฐ๋ฅ)
git clean -fd --dry-run
์ปค๋ฐ์ด ์ด์ ์ปค๋ฐ์ ์์ ๋ฒ์ ์์ ํ์ํ๊ธฐ
git commit --fixup <SHA-1>
fixup ์ปค๋ฐ์ ์ผ๋ฐ ์ปค๋ฐ์ผ๋ก ์ค์ฟผ์ํ๊ธฐ
git rebase -i --autosquash
์ปค๋ฐ์ ์คํ ์ด์ง๋ ํ์ผ๋ค ์คํตํ๊ธฐ
git commit --only <file_path>
๋ํํ์ผ๋ก ์คํ ์ด์งํ๊ธฐ
git add -i
๋ฌด์๋ ํ์ผ๋ค ๋์ดํ๊ธฐ
git check-ignore *
๋ฌด์๋ ํ์ผ๋ค ์ํ ์ถ๋ ฅ
git status --ignored
Branch2์๋ ์๊ณ Branch1์๋ง ์๋ ์ปค๋ฐ๋ค ๋์ดํ๊ธฐ
git log Branch1 ^Branch2
๋ง์ง๋ง n๊ฐ์ ์ปค๋ฐ ๋์ดํ๊ธฐ
git log -<n>
๋ค๋ฅธ ๋ฐฉ๋ฒ:
git log -n <n>
์ด์ ์ ์ถฉ๋์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๊ธฐ๋กํ๊ณ ์ฌ์ฌ์ฉํ๊ธฐ
git config --global rerere.enabled 1
๋ชจ๋ ์ถฉ๋๋ ํ์ผ๋ค ์๋ํฐ๋ก ์ด๊ธฐ
git diff --name-only | uniq | xargs $EDITOR
unpacked ์ค๋ธ์ ํธ์ ๊ฐฏ์์ ๋์คํฌ ์ฌ์ฉ๋ ๋ณด๊ธฐ
git count-objects --human-readable
์ค๋ธ์ ํธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋๋ฌํ ์ ์๋ ์ค๋ธ์ ํธ๋ค ์ ๊ฑฐํ๊ธฐ
git gc --prune=now --aggressive
gitweb์ผ๋ก ์ํน ๋๋ ํ ๋ฆฌ ํ์ํ๊ธฐ
git instaweb [--local] [--httpd=<httpd>] [--port=<port>] [--browser=<browser>]
์ปค๋ฐ ๋ก๊ทธ์์ GPG ์๊ทธ๋์ณ ๋ณด๊ธฐ
git log --show-signature
๊ธ๋ก๋ฒ ์ค์ ์์ ์ํธ๋ฆฌ ์ ๊ฑฐํ๊ธฐ
git config --global --unset <entry-name>
ํ์คํ ๋ฆฌ๊ฐ ์๋ ์๋ก์ด ๋ธ๋์น๋ก ์ฒดํฌ์์ํ๊ธฐ
git checkout --orphan <branch_name>
๋ค๋ฅธ ๋ธ๋์น์์ ํ์ผ๋ด์ฉ ๊ฐ์ ธ์ค๊ธฐ
git show <branch_name>:<file_name>
๋ฃจํธ ์ปค๋ฐ๊ณผ ๋จธ์ง ์ปค๋ฐ๋ง ๋์ดํ๊ธฐ
git log --first-parent
๋ํํ ๋ฆฌ๋ฒ ์ด์ค๋ก ์ด์ ๋ ์ปค๋ฐ ์์ ํ๊ธฐ
git rebase --interactive HEAD~2
์์ ์ค์ธ ๋ธ๋์น๋ค ๋ชจ๋ ๋์ดํ๊ธฐ
git checkout master && git branch --no-merged
์ด์ง ํ์์ผ๋ก ์ข์/์์ข์ ์ปค๋ฐ ๊ฒ์ํ๊ธฐ
git bisect start # Search start
git bisect bad # Set point to bad commit
git bisect good v2.6.13-rc2 # Set point to good commit|tag
git bisect bad # Say current state is bad
git bisect good # Say current state is good
git bisect reset # Finish search
pre-commit๊ณผ commit-msg ๊น ํํน ์ฐํํ๊ธฐ
git commit --no-verify
ํน์ ํ์ผ์ ๋ํ ์ปค๋ฐ๊ณผ ๋ณ๊ฒฝ์ฌํญ ๋์ดํ๊ธฐ (์ด๋ฆ์ด ๋ฐ๋ ํ์ผ๋ ์ถ์ )
git log --follow -p -- <file_path>
๋จ์ผ ๋ธ๋์น ํด๋ก
git clone -b <branch-name> --single-branch https://github.com/user/repo.git
์๋ก์ด ๋ธ๋์น ์์ฑ๊ณผ ๋์์ ์ค์์นญ
git checkout -b <branch-name>
๋ค๋ฅธ ๋ฐฉ๋ฒ:
git branch <branch-name> && git checkout <branch-name>
์ปค๋ฐ์ ํ์ผ ๋ชจ๋ ๋ณ๊ฒฝ ๋ฌด์
git config core.fileMode false
Git ํฐ๋ฏธ๋ ์์ ์ถ๋ ฅ ๋นํ์ฑํ
git config --global color.ui false
ํน์ ๋ช ๋ น์ด์ ๋ํ ์์ ์ค์ ์ง์ ํ๊ธฐ
git config --global <specific command e.g branch, diff> <true, false or always>
๋ชจ๋ ๋ก์ปฌ ๋ธ๋์น๋ฅผ ์ต๊ทผ ์ปค๋ฐ ๋ ์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํด ๋์ดํ๊ธฐ
git for-each-ref --sort=-committerdate --format='%(refname:short)' refs/heads/
ํธ๋ํน๋ ํ์ผ์์ ํจํด(์ ๊ท์์ด๋ ๋ฌธ์์ด)์ ๋งค์นญ๋๋ ๋ผ์ธ ๊ฒ์
git grep --heading --line-number 'foo bar'
์ ์ฅ์์ ์์ ์นดํผ ๋ฒ์ ํด๋ก ํ๊ธฐ
git clone https://github.com/user/repo.git --depth 1
๋ชจ๋ ๋ธ๋์น์์ ์ฃผ์ด์ง ํ ์คํธ๋ก ์ปค๋ฐ ๋ก๊ทธ ๊ฒ์ํ๊ธฐ
git log --all --grep='<given-text>'
๋ธ๋์น์ ์ฒซ ์ปค๋ฐ ๊ฐ์ ธ์ค๊ธฐ (๋ง์คํฐ ๋ธ๋์น๋ก๋ถํฐ ์์๋)
git log master..<branch-name> --oneline | tail -1
์คํ ์ด์ง๋ ํ์ผ๋ค ์ธ์คํ ์ด์งํ๊ธฐ
git reset HEAD <file-name>
์๊ฒฉ ์ ์ฅ์์ ๊ฐ์ ํธ์ํ๊ธฐ
git push -f <remote-name> <branch-name>
์ ์ฅ์๋ช ์ถ๊ฐํ๊ธฐ
git remote add <remote-nickname> <remote-url>
์ฃผ์ด์ง ํ์ผ์ ๊ฐ ๋ผ์ธ๋ณ author, ์๊ฐ ๊ทธ๋ฆฌ๊ณ ์ต์ข ๋ฆฌ๋น์ ๋ช ๋ณด๊ธฐ
git blame <file-name>
Author์ ์ ๋ชฉ์ผ๋ก ์ปค๋ฐ ๊ทธ๋ฃนํํ๊ธฐ
git shortlog
๋ค๋ฅธ ์ฌ๋์ด ์์ ํ ๋ด์ฉ์ ๋ฎ์ด์ฐ์ง ์๊ณ ๊ฐ์ ํธ์ํ๊ธฐ
git push --force-with-lease <remote-name> <branch-name>
ํน์ author๊ฐ ๊ธฐ์ฌํ ๋ผ์ธ์ ๋ณด๊ธฐ
git log --author='_Your_Name_Here_' --pretty=tformat: --numstat | gawk '{ add += <!-- @doxie.inject start -->; subs += <!-- @doxie.inject end -->; loc += <!-- @doxie.inject start --> - <!-- @doxie.inject end --> } END { printf "added lines: %s removed lines: %s total lines: %s
", add, subs, loc }' -
๋ค๋ฅธ ๋ฐฉ๋ฒ:
git log --author='_Your_Name_Here_' --pretty=tformat: --numstat | awk '{ add += <!-- @doxie.inject start -->; subs += <!-- @doxie.inject end -->; loc += <!-- @doxie.inject start --> - <!-- @doxie.inject end --> } END { printf "added lines: %s, removed lines: %s, total lines: %s
", add, subs, loc }' - # on Mac OSX
Revert: ๋จธ์ง ๋ณต๊ตฌํ๊ธฐ
git revert -m 1 <commit-ish>
ํน์ ๋ธ๋์น์ ์ปค๋ฐ ์ ์ถ๋ ฅํ๊ธฐ
git rev-list --count <branch-name>
๋ณ์นญ: git undo
git config --global alias.undo '!f() { git reset --hard $(git rev-parse --abbrev-ref HEAD)@{${1-1}}; }; f'
์ค๋ธ์ ํธ์ ๋ ธํธ(๋ฉ๋ชจ) ์ถ๊ฐํ๊ธฐ
git notes add -m 'Note on the previous commit....'
๋ชจ๋ ๊น ๋ ธํธ ๋ณด๊ธฐ
git log --show-notes='*'
๋ค๋ฅธ ์ ์ฅ์์ ์๋ ์ปค๋ฐ ์ ์ฉํ๊ธฐ
git --git-dir=<source-dir>/.git format-patch -k -1 --stdout <SHA1> | git am -3 -k
ํ์น ๋ ํผ๋ฐ์ค ์ง์ ํ๊ธฐ
git fetch origin master:refs/remotes/origin/mymaster
๋ ๋ธ๋์น์ ๊ณตํต ์กฐ์ ์ปค๋ฐ ์ฐพ๊ธฐ
diff -u <(git rev-list --first-parent BranchA) <(git rev-list --first-parent BranchB) | sed -ne 's/^ //p' | head -1
ํธ์๋์ง ์์ ์ปค๋ฐ๋ค ๋์ดํ๊ธฐ
git log --branches --not --remotes
๋ค๋ฅธ ๋ฐฉ๋ฒ:
git log @{u}..
git cherry -v
๊ณต๋ฐฑ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ธํ ๋ชจ๋ ๋ณ๊ฒฝ์ฌํญ ์ถ๊ฐํ๊ธฐ
git diff --ignore-all-space | git apply --cached
๊น ์ค์ [๋ก์ปฌ/๊ธ๋ก๋ฒ] ์์ ํ๊ธฐ
git config [--global] --edit
ํน์ ๊ตฌ๊ฐ์์ blame ์ ๋ณด ๋ณด๊ธฐ
git blame -L <start>,<end>
Git์ ๋ ผ๋ฆฌ์ ๋ณ์ ๋ณด๊ธฐ
git var -l | <variable>
ํจ์น ํ์ผ ๋ฏธ๋ฆฌ ํฌ๋งทํ ํ๊ธฐ
git format-patch -M upstream..topic
์ ์ฅ์๋ช ๊ฐ์ ธ์ค๊ธฐ
git rev-parse --show-toplevel
ํน์ ๋ ์ง ๊ตฌ๊ฐ ์ฌ์ด์ ์ปค๋ฐ ๋ก๊ทธ ์ถ๋ ฅํ๊ธฐ
git log --since='FEB 1 2017' --until='FEB 14 2017'
๋ก๊ทธ์์ author ์ ์ธํ๊ธฐ
git log --perl-regexp --author='^((?!excluded-author-regex).*)
๋ธ๋์น์ ์์ ์ฌํญ ์์ฝํ๊ธฐ
git request-pull v1.0 https://git.ko.xz/project master:for-linus
์๊ฒฉ ์ ์ฅ์์ ๋ชจ๋ ๋ ํผ๋ฐ์ค ๋์ดํ๊ธฐ
git ls-remote git://git.kernel.org/pub/scm/git/git.git
ํธ๋ํน๋์ง ์์ ํ์ผ๋ค ๋ฐฑ์ ํ๊ธฐ
git ls-files --others -i --exclude-standard | xargs zip untracked.zip
๋ชจ๋ git ๋ช ๋ น์ด ๋ณ์นญ ๋์ดํ๊ธฐ
git config -l | grep alias | sed 's/^alias\.//g'
๋ค๋ฅธ ๋ฐฉ๋ฒ:
git config -l | grep alias | cut -d '.' -f 2
git ์ํ ๊ฐ๋ตํ๊ฒ ๋ณด๊ธฐ
git status --short --branch
ํ๋ฃจ ์ ์ ์ปค๋ฐ์ผ๋ก ์ฒดํฌ์์ํ๊ธฐ
git checkout [email protected]{yesterday}
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].