Các tùy chọn cấu hình Git phổ biến
(jvns.ca)-
pull.ff onlyhoặcpull.rebase true- Cả hai cấu hình này đều nhằm ngăn việc vô tình tạo merge commit khi chạy
git pullnếu nhánh đã lệch so với nhánh upstream. pull.rebase truetương đương với việc luôn chạygit pull --rebase.pull.ff onlytương đương với việc luôn chạygit pull --ff-only.- Dùng đồng thời cả hai cấu hình này là không có ý nghĩa, vì
--ff-onlysẽ ghi đè--rebase.
- Cả hai cấu hình này đều nhằm ngăn việc vô tình tạo merge commit khi chạy
-
merge.conflictstyle zdiff3- Cấu hình giúp phần xung đột khi merge dễ đọc hơn.
diff3thay đổi cách mặc định hiển thị xung đột khi merge bằng cách chèn mã nguồn gốc vào giữa.zdiff3là phiên bản cải tiến củadiff3và thường được xem là tốt hơn.
-
rebase.autosquash true- Tính năng giúp việc chỉnh sửa các commit cũ trở nên dễ dàng hơn.
- Nếu commit bằng
git commit --fixup OLD_COMMIT_ID, thì khi chạygit rebase --autosquash main, commitfixup!sẽ tự động được gộp vào commit đích.
-
rebase.autostash true- Tự động chạy
git stashvàgit stash poptrước và saugit rebase.
- Tự động chạy
-
push.default simple,push.default current- Thiết lập để tự động push nhánh hiện tại lên nhánh remote có cùng tên.
push.default simplelà cấu hình mặc định, chỉ hoạt động khi nhánh đã theo dõi một nhánh remote.push.default currentsẽ luôn push nhánh local lên nhánh remote cùng tên.
-
init.defaultBranch main- Khi tạo repository mới, sẽ tạo nhánh
mainthay chomaster.
- Khi tạo repository mới, sẽ tạo nhánh
-
commit.verbose true- Thêm toàn bộ diff của commit vào trình soạn thảo văn bản khi viết commit message để giúp nhớ mình đã thay đổi gì.
-
rerere.enabled true- Ghi nhớ cách bạn đã xử lý xung đột merge trong quá trình
git rebasevà tự động giải quyết lại xung đột đó.
- Ghi nhớ cách bạn đã xử lý xung đột merge trong quá trình
-
help.autocorrect 10- Tính năng tự sửa của git có kiểm tra lỗi gõ sai, nhưng không tự động chạy lệnh đã được sửa.
- Nếu muốn tự động thực thi, hãy đặt
help.autocorrectthành1,10,immediate, hoặcprompt.
-
core.pager delta- Đây là "pager" dùng để hiển thị đầu ra của
git diff,git log,git show, v.v. - Thiết lập
deltalàm công cụ xem diff nâng cao có hỗ trợ tô sáng cú pháp.
- Đây là "pager" dùng để hiển thị đầu ra của
-
diff.algorithm histogram- Thuật toán diff mặc định thường gây khó khăn khi thứ tự các hàm thay đổi.
diff.algorithm histogramsẽ hiển thị trường hợp đó rõ ràng hơn.
-
core.excludesfile: .gitignore toàn cục- Thiết lập tệp gitignore toàn cục áp dụng cho mọi repository.
-
includeIf: cấu hình git riêng cho cá nhân và công việc- Dùng để cấu hình các địa chỉ email khác nhau cho repository cá nhân và repository công việc.
-
url."git@github.com:".insteadOf 'https://github.com/'- Tự động thay
https://github.combằnggit@github.com:.
- Tự động thay
-
fsckobjects: ngăn ngừa hỏng dữ liệu- Cấu hình này chủ động phát hiện hỏng dữ liệu và đã nhiều lần cứu cả nhóm.
-
Các cấu hình liên quan đến submodule
status.submoduleSummary truediff.submodule logsubmodule.recurse true
-
Các cấu hình khác
blame.ignoreRevsFile .git-blame-ignore-revsbranch.sort -committerdatecolor.ui falsecommit.cleanup scissorscore.autocrlf falsecore.editor emacscredential.helper osxkeychaindiff.tool difftasticdiff.colorMoved defaultdiff.colorMovedWS allow-indentation-changediff.context 10fetch.prune truevàfetch.prunetagsgpg.format sshlog.date isomerge.keepbackup falsemerge.tool meldpush.followtags truerebase.missingCommitsCheck errorrebase.updateRefs true
-
Cách thiết lập
- Thông thường dùng
git config --global NAME VALUEđể cấu hình. - Nếu muốn xóa tùy chọn, hãy chỉnh sửa thủ công
~/.gitconfig.
- Thông thường dùng
-
Những cấu hình đã thay đổi sau khi viết bài này
diff.algorithm histogrambranch.sort -committerdatemerge.conflictstyle zdiff3
-
Kết luận
- Việc hỏi nhiều người về các cấu hình yêu thích của họ rồi liệt kê những cấu hình được nhắc đến nhiều nhất là điều hữu ích.
Ý kiến của GN⁺
- Điểm quan trọng nhất của bài viết này là giúp bạn biết được những tùy chọn cấu hình git mà các lập trình viên thường xuyên sử dụng.
- Với các kỹ sư phần mềm mới bắt đầu dùng git, những cấu hình này có thể giúp tăng hiệu suất làm việc và giải quyết các vấn đề thường gặp hằng ngày.
- Đặc biệt, các cấu hình như
merge.conflictstyle zdiff3hayrebase.autosquash truecó thể giúp việc xử lý xung đột merge và quản lý lịch sử commit trở nên dễ dàng hơn, từ đó giảm bớt các vấn đề có thể phát sinh trong quá trình cộng tác.
4 bình luận
Để xóa một tùy chọn, bạn cũng có thể dùng lệnh
git config --global --unset NAME.Để kiểm tra cấu hình của bạn, hãy thêm
git config --list.Tôi cũng từng có trải nghiệm là đã cấu hình trong môi trường phát triển chính, rồi sang môi trường khác không được cấu hình nên tự hỏi sao lại không chạy.. haha. Vì lập trình viên dùng Git hằng ngày, nên mong mọi người sẽ quan tâm nhiều hơn đến các thiết lập liên quan đến Git.
Ý kiến trên Hacker News
core.autocrlfvàsafecrlfgitattributeskhi cầnaliastrong.gitconfigrebase.autosquashvà bí danhfixuppull.rebasecũng quan trọng, nhưngfixupđược dùng thường xuyên hơninsteadOfadvice.statusHints,include.path,remote "origin".fetch,interactive.singleKey.gitconfigcá nhânalias,tag,tar,log,pull,diff,difftool,pager,safe,advice,initdeltalàm pageruser.useConfigOnlyđể dùng nhiều email khác nhauuser.email, rồi thiết lập email khi commit trong repository mớimerge.conflictstylediff3cung cấp nhiều thông tin hơn để giải quyết xung độtcore.commentChar,alias.newtask,alias.zip,git checkout -,format.pretty, thiết lậpdeltabranch.sort.gitconfigcá nhân khácalias.lg,alias.hist,alias.quick-push,alias.search,user,core,urlquick-pushNội dung trên là bản tóm tắt các thiết lập
.gitconfigcá nhân và các mẹo cấu hình Git mà người dùng chia sẻ trong phần bình luận trên Hacker News. Các thiết lập này tập trung vào việc nâng cao hiệu quả sử dụng Git, tự động hóa một số tác vụ cụ thể và cải thiện trải nghiệm người dùng.