ํฐ์คํ ๋ฆฌ ๋ทฐ
Git ์ค์ ํ๊ธฐ
- ๊น ์ค์ ํ๋ ๋ฐฉ๋ฒ git config
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
๊น ์ค์ ๋ฒ์ 3๊ฐ์ง
1. ์์คํ - ๋ชจ๋ ์ฌ์ฉ์, ์ ์ฅ์์ ์ ์ฉ๋๋ ๋ฒ์(/etc/gitconfig)
2. ์ ์ญ(global) - ์ฌ์ฉ์์๊ฒ๋ง ์ค์ ๋๋ ๋ฒ์(~/.gitconfig)
3. ์ง์ญ(local) - ํ์ฌ ์์ ์ค์ธ ๋๋ ํ ๋ฆฌ (.git/config)
ํ์์์
1. ์์คํ
2. ์ ์ญ
3. ์ง์ญ
์ค๋ณต๋ ๊ฒฝ์ฐ ์ง์ญ์ ์ค์ ๋ ์ค์ ๊ฐ์ ๋ถ๋ฌ์ด.
ํด๋ผ์ด์ธํธ ์ค์
$ man git-config
git ๋ฒ์ ๋ง๋ค ์ต์ ์ด ๋ค๋ฅธ๋ฐ, ์ค์นํ ๋ฒ์ ์์ ์ฌ์ฉํ ์ ์๋ ๋ชจ๋ ์ต์ ์ ๋ณด์ฌ์ค.
git commit ํ ๋ ๋ฉ์ธ์ง ํ ํ๋ฆฟ ๋์ฐ๋ ๋ฐฉ๋ฒ
1. ~/.gitmessage.txt ํ์ผ ๋ด๋ถ ์ค์
Subject line (try to keep under 50 characters)
Multi-line description of commit,
feel free to be detailed.
[Ticket: X]
// ์ ๋ชฉ 50์ ์ดํ,
// ์์ธํ ์์ ๋ด์ฉ์ ํ์นธ ๊ณต๋ฐฑ ์ดํ ์์
// ์ด์ ๋ฒํธ ์ ๋๋ก ์ ๋
2. commit ํ ํ๋ฆฟ ์ค์
$ git config --global commit.template ~/.gitmessage.txt
$ git commit
์๋ช Tag ๋ฑ๋ก
Annotated Tag ์๋ช ํ ๋ ํ์ํ gpgํค๋ฅผ ์ค์ ํด๋ ์ ์๋ค
git config --global user.signingkey <gpg-key-id>
git tag -s <tag-name>
git tag ์คํํ ๋ ํค๋ฅผ ์๋ตํ๊ณ ์๋ช ๊ฐ๋ฅ
+ gpg ํค ์์ฑ์
gpg --list-keys
gpg --gen-key
ํ์ธ๋ ์ฌ๋์๊ฒ์๋ง ์ปค๋ฐ์ ๋ฐ์ผ๋ ค๋ฉด GPG ํค๋ฅผ ์ด์ฉํจ
git show ๋ช ๋ น์ผ๋ก GPG ์๋ช ํ์ธ
git show <tag-name>
Git Ignore
๋ก์ปฌ: git addํ ๋ ํ์ผ ์ ์ธ์ํค๋ ๋ฐฉ๋ฒ์ผ๋ก .gitignore ํ์ผ์ ํจํด ์ ์ผ๋ฉด๋จ.
์ ์ญ: ํด๋น ๋๋ ํ ๋ฆฌ ์ธ, ๋ค๋ฅธ ๋๋ ํ ๋ฆฌ์์๋ ์ ์ธํ๋ ค๋ฉด ~/.gitignore_global ํ์ผ์
*~
.*.swp
.DS_Store
์ด๋ฐ ์ ์ธ ํ๊ณ ์ถ์ ๊ฒ๋ค์ ์์ฑํ ๋ค,
git config --global core.excludesfile ~/.gitignore_global ํ๋ฉด ๋จ
ํฐ๋ฏธ๋ ์ปฌ๋ฌ ์ปค์คํ ํ๊ธฐ
color.branch
color.diff
color.interactive
color.status
์ต์ ์ ๊ฐ๊ฐ ์ปฌ๋ฌ๋ฅผ ์ ์ฉํ ์ ์์.
์์
$ git config --global color.diff.meta "blue black bold"
: diff ๋ช ๋ น์์ meta ์ ๋ณด์ foreground๋ blue, backgound๋ black ํ ์คํธ๋ bold๋ก ์ค์
Formatting and Whitespace
OS ๋ณ ์ค๋ฐ๊ฟ
Linux๋ LF๋ฌธ์๋ง ์ฌ์ฉ
์๋์ฐ๋ CRLF ์ฌ์ฉ
ํต์ผํด์ฃผ๊ธฐ ์ํด ์๋ ์ฝ๋๋ฅผ ์ฌ์ฉ. (์๋์ฐ์์)
$ git config --global core.autocrlf true
Git์์ ์ปค๋ฐํ ๋ ์๋์ผ๋ก CRLF -> LF๋ก ๋ณํ,
Checkoutํ ๋ LF -> CRLF ๋ก ๋ณํ ํด์ฃผ๋ ์ฝ๋
๋ฆฌ๋ ์ค์์๋ Checkoutํ ๋ LF -> CRLF ํ ํ์์์
$ git config --global core.autocrlf input
๊ทธ๋์ ์ปค๋ฐํ ๋๋ง ๋ณํํด์ฃผ๋ CRLF -> LF ํด์ฃผ๋ ์ฝ๋ ์ฌ์ฉ. (์ฐ์ฐํ ๋ค์ด๊ฐ CRLF๋ฅผ ๋ณํํด์ค ์ ์๋ค)
์๋ฒ ์ค์
ํธ์ ํ ๋๋ง๋ค SHA-1 ์ฒดํฌ์ฌ์ด ์๋ชป๋ ๊ฐ์ฒด ํ์ธ.
$ git config --system receive.fsckObjects true
- ์๋ชป๋ ๋ฐ์ดํฐ๋ฅผ Push ์ํ๋๋ก ํจ
(ํ์ง๋ง Pushํ ๋ ์๊ฐ์ด ๋์ด๋จ)
- ํ๋ฒ Pushํ ์ปค๋ฐ์ Rebase๋ก ์ฌ Push ๋ชปํ๋๋ก ํจ.
$ git config --system receive.denyNonFastForwards true
๋ธ๋ฐ์น๋ฅผ ์ญ์ ํ๋ Push๋ ๊ฑฐ์ ํ๋๋ก ํจ.
$ git config --system receive.denyDeletes true
Git Attributes
๋๋ ํ ๋ฆฌ์ ํ์ผ ๋จ์๋ก ๋ค๋ฅธ ์ค์ ์ ์ ์ฉํ๋ ๋ฐฉ๋ฒ
ํ๋ก์ ํธ ์ต์์ ๋๋ ํ ๋ฆฌ์ .gitattributes
.gitattributes
๋ก ํ์ผ์ ๋ง๋ค์ด Merge๋ ์ด๋ป๊ฒ ํ ์ง, ํ ์คํธ๊ฐ ์๋ ํ์ผ์ ์ด๋ป๊ฒ Diffํ ์ง ๋ฑ ์ค์ ํ ์ ์๋ค.
.git/info/attributes
์ ํ์ผ์ ์ปค๋ฐํ๊ณ ์ถ์ง ์์ ๊ฒฝ์ฐ ์ฌ๊ธฐ์ ์ค์ ์ถ๊ฐ
์์1)
Xcode Bulide Setting ๊ด๋ฆฌ ํจํค์ง pbxproj
pbxproj๋ JSONํฌ๋งท์ ํ ์คํธ๋ ASCII ์ทจ๊ธ -> Binaray๋ก ๋ณํํ๋๊ฒ ์ณ๋ค๊ณ ๋งํ๊ณ ์์
*.pbxproj binary
์์2)
๋ธ๋์น ๋ณํฉ์ .pbxproj ์์ ์ถฉ๋์ด ๋๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ,
๋ณํฉ๊ด๋ จ ์ฌํญ์ .gitattributes ํ์ผ์ ์ถ๊ฐํ๋ฉด ํด๊ฒฐ์ด ๊ฐ๋ฅํ๋ค.
$ vi .gitattributes
์ง์
์ดํ ํด๋น ํ์ผ์
*.pbxproj binary merge=union
์์ฑํ๋ฉด ๋จธ์ง ์ถฉ๋์ ํํผํ ์ ์์.
*merge=union
ํ ์คํธ ํ์ผ 3way ๋ณํฉ ๋ฐฉ๋ฒ์ผ๋ก ์ถฉ๋์ ํ์๋ฅผ ๋จ๊ธฐ๊ณ ๋ ๋ฒ์ ์์ ๋ผ์ธ์ ๋ค ๊ฐ์ ธ์จ๋ค๊ณ ํจ
Merge ์ ๋ต
๋ค์ํ ํ๊ฒฝ์์ Mergeํ ๋,Attribute๋ฅผ ์๋๋ก ์ค์ ํ๋ฉด ํ๊ฒฝ ์ค์ ํ์ผ database.xml ๋ ์ ์ธํ๊ณ Merge ํ๋๋ก ํ๋ค.
database.xml merge=ours
$ git config --global merge.ours.driver true
Git Hooks
์ด๋ฒคํธ๊ฐ ์๊ฒผ์ ๋, ์๋์ผ๋ก ํน์ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋๋ก ํ ์ ์์.
.git/hooks/ ํ์ผ์ ์ฌ๋ฌ ํ ์ด ์กด์ฌ
์ปค๋ฐ๊ด๋ จ 4๊ฐ์ง Hook
1. pre-commit
- ์ปค๋ฐ ๋ฉ์ธ์ง ์์ฑ ์ ํธ์ถ
- lint๋ก ์ฝ๋ ์คํ์ผ์ ๊ฒ์ฌํ๊ฑฐ๋
- ๋ผ์ธ ๋ ๊ณต๋ฐฑ๋ฌธ์ ๊ฒ์ฌํ๊ฑฐ๋
- ์๋ก ์ถ๊ฐํ ์ฝ๋์ ์ฃผ์ ๋ฌ์๋์ง ๊ฒ์ฌ
2. prepare -commit-msg
- ์ปค๋ฐ ๋ฉ์ธ์ง ์์ฑ ์ดํ ์คํ
- ์คํฌ๋ฆฝํธ๋ก ์ปค๋ฐ ๋ฉ์ธ์ง์ ์ ๋ณด ์ฝ์ ๊ฐ๋ฅ
3. commit-msg
- ์ปค๋ฐ ๋ฉ์ธ์ง๊ฐ ์ ์ฑ ์ ๋ง๋์ง ๊ฒ์ฌํ๋ ์คํฌ๋ฆฝํธ ์์ฑ ๊ฐ๋ฅ
4. post-commit
- ์ปค๋ฐ ์๋ฃ ์ดํ ์คํ
๊ธฐํ ํ
pre-rebase
- rebase ํ๊ธฐ ์ ์คํ (์ด๋ฏธ psuh ํ ์ปค๋ฐ์ rebase ํ์ง ๋ชปํ๊ฒ ํ ์ ์์)
post-rewrite
- git rebase, git commit --amend (๊น ์ปค๋ฐ ์์ )
post-merge
- Merge๋ก working tree๊ฐ ๋ณ๊ฒฝ๋ ๋, git์ด ๊ด๋ฆฌํ์ง ์๋ ํ์ผ์ด ์ํ๋๋๋ก ์ ๋ฐฐ์น๋๋์ง ๊ฒ์ฌํ ๋ ์ฌ์ฉ
pre-push
- push์ ์ปค๋ฐ์ด ์ ํจํ์ง ๊ฒ์ฌ.
e.g.
commitํ ๋ ์ด๋ฏธ์ง ํ์ผ์ ์์ถํด์ฃผ๋ ํ
pre-commit ํ์ผ์ ์ด๋ฐ์์ผ๋ก ์์ฑํด์ค
์ถ์ฒ: ์ฐ์ํ ๋ธ๋ก๊ทธ ํ ๊ด๋ จ๊ธ - https://techblog.woowahan.com/2530/
- Total
- Today
- Yesterday
- swift filemanager excel
- ๋ ๋์ธ์ด
- swift network ๊ณตํตํ
- focus timer ์ดํ
- swift urlsession module
- swift excel read
- chatgpt rag llm
- swift urlcomponent encode
- ๋ ๋์ธ์ด ์ดํ
- swift filemanager get excel
- swift network module
- swift get excel
- swift ์๊ฐ
- llm pdf rag
- ๊ณต๋ถ ํ์ด๋จธ ์ดํ
- swift urlsession ๊ณตํตํ
- rag ๊ธฐ๋ฐ llm ์ฑ๋ด
- readysay
- swift ์์ ์ฝ๊ธฐ
- swift urlsession network module
- filemanager excel read
- swift urlsession refactoring
- swift queryitem encode
- llm csv
- rag ๊ธฐ๋ฐ llm
- ์๋์ํํธ ๋ ์ด์ธ์ด
- rag llm pdf
- swift ๋คํธ์ํฌ ๋ชจ๋ํ
- swift network refactoring
- swift ์์ ๊ฐ์ ธ์ค๊ธฐ
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |