50 Câu Hỏi Phỏng Vấn Git Cơ Bản Đến Nâng Cao

cf32352d-4f5d-473c-b81d-48627eaceb89

Ở bài trước mình có chia sẻ cậu em Dev commit “hehehe”. Nhiều anh em mới vào hỏi rất vu vơ: Git là gì? Git Commit là Gì? Em có nghe anh khóa trên nói Github nó giống Git không anh?… Cũng hơi sốc vì thời buổi AI mà những cái này google cái cũng ra. Nên có lời khuyên thực tế cho anh em là chủ động nghiên cứu trước khi hỏi gì đó sẽ vừa giúp anh em tăng tính làm việc độc lập cũng như tiết kiệm thời gian nhé.

Xong có nhận được câu hỏi là “Trong thực tế khi mới đi làm có phỏng vấn Git không và hỏi những gì ạ?” câu hỏi này thì hợp lý hơn vì dù sao thực tế cũng tùy người sẽ có những phần hỏi khác nhau. Nên mình mới làm ra bài viết tổng hợp 50 câu hỏi phỏng vấn Git phổ biến nhất mà trước đây có research và take note lại cũng như dựa trên cả kinh nghiệm thực tế cá nhân của mình. Các câu hỏi từ basic nhất đến advanced hơn mong rằng sẽ giúp ích được anh em. À sẽ có 2 phần, phần đầu là làm trắc nhiệm – phần cuối là các giải thích cụ thể cho từng câu hỏi nhé. Anh em thấy hay thì bookmark lại trong tài khoản sau cần có thể xem nhé.

Các Phần Kiến Thức Trong Git

Git có 2 phần rất rõ ràng:

  1. Cách sử dụng các câu lệnh Git các anh em trong team làm việc với nhau mà không sảy ra lỗi, conflix,… và nếu bị thì xử lý như thế nào.
  2. Git Workflow cực kỳ quan trọng trong việc code đúng nhánh, đưa dự án của mình đi đúng môi trường, triển khai tối ưu,…

Các Câu Hỏi Phỏng Vấn Git

Note: Làm các câu hỏi trắc nhiệm xong rồi mới kéo xuống coi giải thích chi tiết nha anh em. Nghiêm túc lên 😀

1. Git là gì?

Một hệ thống quản lý phiên bản phân tán giúp theo dõi thay đổi mã nguồn.
Một nền tảng lưu trữ mã nguồn trực tuyến như GitHub.
Một công cụ tự động hóa quy trình triển khai CI/CD.
Một hệ thống quản lý dự án cho nhóm phát triển.

2. Git và GitHub có khác nhau không?

Git là hệ thống quản lý phiên bản, GitHub là dịch vụ lưu trữ kho lưu trữ Git.
Git là công cụ cục bộ, GitHub là phiên bản đám mây của Git.
Git là phần mềm mã nguồn mở, GitHub là phần mềm độc quyền.
Git chỉ dùng cho cá nhân, GitHub dùng cho nhóm.

3. Lợi ích của việc sử dụng Git là gì?

Hỗ trợ cộng tác, tính khả dụng cao, hiệu suất tốt và chỉ một thư mục Git cho mỗi kho lưu trữ.
Tự động tối ưu hóa mã nguồn để chạy nhanh hơn.
Cung cấp giao diện quản lý dự án tích hợp.
Hỗ trợ kiểm tra bảo mật mã nguồn tự động.

4. Git sử dụng ngôn ngữ nào?

Ngôn ngữ C để giảm thiểu chi phí thời gian chạy.
Python để hỗ trợ các lệnh quản lý kho lưu trữ.
Shell script để tối ưu hóa các lệnh terminal.
Perl để xử lý các tệp cấu hình Git.

5. Kho lưu trữ trong Git là gì và làm thế nào để tạo một kho lưu trữ?

Nơi lưu trữ tất cả tệp, tạo bằng cách tạo thư mục và chạy lệnh “git init”.
Nơi lưu trữ mã nguồn, tạo bằng lệnh “git clone” từ kho từ xa.
Thư mục chứa lịch sử dự án, tạo bằng lệnh “git add”.
Kho lưu trữ từ xa, tạo bằng lệnh “git remote add”.

6. Kho lưu trữ trống (bare repository) là gì?

Chứa thông tin quản lý phiên bản, không có tệp làm việc hoặc thư mục con .git.
Kho lưu trữ chỉ chứa các commit cuối cùng của dự án.
Kho lưu trữ không cho phép thêm tệp mới.
Kho lưu trữ chỉ dùng để đồng bộ với kho từ xa.

7. Git khác với SVN như thế nào?

Git phân tán, không hỗ trợ commit trên nhiều nhánh; SVN tập trung, linh hoạt hơn với thẻ.
Git lưu trữ tệp cục bộ, SVN lưu trữ trên máy chủ từ xa.
Git chỉ hỗ trợ dự án nhỏ, SVN dùng cho dự án lớn.
Git sử dụng giao diện đồ họa, SVN chỉ dùng dòng lệnh.

8. Git Commit là gì và nội dung của đối tượng commit là gì?

Lệnh ghi lại tiến trình, chứa tập hợp tệp, tham chiếu commit cha và tên SHAI.
Lệnh đẩy mã nguồn lên kho từ xa, chứa thông tin người dùng.
Lệnh tạo bản sao lưu dự án, chứa toàn bộ mã nguồn.
Lệnh hợp nhất nhánh, chứa lịch sử các nhánh.

9. Các chức năng lưu trữ kho lưu trữ Git khác nhau là gì?

GitHub, Gitlab, Bitbucket, GitEnterprise, SourceForge.
AWS CodeCommit, Azure DevOps, Google Cloud Source.
Jira, Confluence, Trello.
Docker Hub, Kubernetes, Ansible.

10. Xung đột trong Git là gì?

Xảy ra khi hai nhánh chỉnh sửa cùng một dòng hoặc xóa/chỉnh sửa tệp khác nhau.
Khi kho lưu trữ cục bộ không đồng bộ với kho từ xa.
Khi lệnh “git merge” không thể thực thi do thiếu quyền.
Khi tệp mã nguồn bị hỏng trong quá trình commit.

11. Quy trình giải quyết xung đột trong Git là gì?

Nhận biết tệp xung đột, chỉnh sửa tệp, thêm bằng “git add” và commit bằng “git commit”.
Chạy “git merge” lại để tự động giải quyết xung đột.
Xóa tệp xung đột và chạy “git reset” để quay về trạng thái trước.
Sử dụng “git pull” để đồng bộ và loại bỏ xung đột.

12. Branching là gì và có bao nhiêu loại branching trong Git?

Branching là tạo nhánh riêng để phát triển, gồm feature branching, task branching, release branching.
Branching là sao chép kho lưu trữ, gồm local branching và remote branching.
Branching là quản lý commit, gồm hotfix branching và merge branching.
Branching là lưu trữ tệp, gồm master branching và dev branching.

13. SubGit là gì?

Công cụ di chuyển từ SVN sang Git, tạo gương Git và hỗ trợ cả hai hệ thống.
Công cụ tối ưu hóa hiệu suất kho lưu trữ Git.
Phần mềm quản lý nhánh trong GitHub.
Tiện ích để tự động hóa commit trong Git.

14. Các công dụng của git instaweb là gì?

Tự động chạy máy chủ web và mở trình duyệt để xem giao diện kho lưu trữ cục bộ.
Tạo bản sao trực tuyến của kho lưu trữ Git.
Hiển thị lịch sử commit trong giao diện đồ họa.
Đồng bộ kho lưu trữ cục bộ với GitHub.

15. Các lệnh Git phổ biến và công dụng của chúng là gì?

git diff, git status, git stash apply, git log, git checkout, git rm, git add, git reset, git is a tree phục vụ các chức năng quản lý mã nguồn.
git push, git pull, git merge, git clone để quản lý nhánh và commit.
git init, git branch, git fetch, git rebase để kiểm tra mã nguồn.
git commit, git log, git diff, git add để tự động hóa triển khai.

16. Sự khác biệt giữa clone, fork và branch trên Git là gì?

Clone là sao chép cục bộ kho lưu trữ, fork là sao chép từ xa, branch là luồng phát triển trong kho.
Clone là tạo nhánh mới, fork là commit mã, branch là lưu trữ tệp.
Clone là sao chép nhánh, fork là sao chép commit, branch là sao chép kho.
Clone là đồng bộ mã, fork là tạo kho cục bộ, branch là hợp nhất mã.

17. Làm thế nào để một “branch” khác với một “pull request”?

Branch là phiên bản mã riêng, pull request là yêu cầu hợp nhất nhánh vào kho lưu trữ khác.
Branch là yêu cầu hợp nhất, pull request là nhánh mới.
Branch là bản sao kho, pull request là bản sao nhánh.
Branch là commit cục bộ, pull request là commit từ xa.

18. Bạn có biết cách sử dụng “git cherry-pick”?

Giới thiệu commit cụ thể từ một nhánh sang nhánh khác, dùng để chuyển tiếp hoặc sao lưu commit.
Sao chép toàn bộ nhánh sang nhánh khác.
Xóa commit không cần thiết khỏi lịch sử nhánh.
Tự động hợp nhất các commit từ nhiều nhánh.

19. Khu vực staging trong Git là gì?

Khu vực trung gian để định dạng và xem xét commit trước khi hoàn thành, còn gọi là chỉ mục.
Thư mục lưu trữ các tệp đã commit trong kho cục bộ.
Khu vực chứa các nhánh trước khi hợp nhất.
Nơi lưu trữ các tệp từ xa trước khi clone.

20. Có hợp lý để tạo một commit bổ sung hoặc sửa đổi một commit hiện có không?

Tạo commit bổ sung hợp lý hơn vì sửa đổi commit có thể xóa dữ liệu quan trọng.
Sửa đổi commit tốt hơn vì giảm số lượng commit trong lịch sử.
Cả hai đều như nhau, tùy thuộc vào kích thước dự án.
Sửa đổi commit giúp tự động đồng bộ với kho từ xa.

21. Sự khác biệt giữa head, working tree và index trong Git là gì?

Working tree là thư mục làm việc, index là khu vực staging, HEAD là tham chiếu đến commit cuối cùng.
HEAD là thư mục làm việc, index là lịch sử commit, working tree là khu vực staging.
Working tree là kho lưu trữ từ xa, index là nhánh hiện tại, HEAD là tệp cấu hình.
HEAD là danh sách tệp, working tree là commit cuối, index là kho lưu trữ cục bộ.

22. Công dụng của “git config” là gì?

Thay đổi cấu hình Git, như thêm tên người dùng và email cho commit.
Tạo kho lưu trữ mới với các thiết lập mặc định.
Hiển thị trạng thái của các tệp trong kho lưu trữ.
Đồng bộ cấu hình giữa kho cục bộ và kho từ xa.

23. git stash là gì?

Lưu trữ các thay đổi chưa hoàn thành trong thư mục làm việc và staging để áp dụng lại sau.
Sao lưu toàn bộ kho lưu trữ vào một tệp nén.
Tự động hợp nhất các thay đổi từ nhánh khác.
Xóa các tệp không được theo dõi trong thư mục làm việc.

24. Loại công việc nào bạn có thể khôi phục bằng cách khôi phục một nhánh đã xóa?

Các tệp đã được staging hoặc commit, không khôi phục được tệp không theo dõi.
Tất cả tệp trong nhánh, kể cả tệp không được theo dõi.
Chỉ các tệp đã được đẩy lên kho từ xa.
Các tệp đã xóa khỏi hệ thống tệp nhưng chưa commit.

25. ‘git diff’ khác với ‘git status’ như thế nào?

‘git diff’ hiển thị thay đổi giữa commit hoặc commit với cây làm việc, ‘git status’ so sánh thư mục làm việc với index.
‘git diff’ liệt kê nhánh, ‘git status’ hiển thị lịch sử commit.
‘git diff’ kiểm tra lỗi cú pháp, ‘git status’ kiểm tra trạng thái nhánh.
‘git diff’ so sánh kho từ xa, ‘git status’ so sánh kho cục bộ.

26. Làm thế nào tôi có thể biết nếu một nhánh đã được hợp nhất vào master?

Dùng “git branch –merged” để liệt kê nhánh đã hợp nhất, “git branch –no-merged” cho nhánh chưa hợp nhất.
Chạy “git log” để kiểm tra lịch sử commit của nhánh master.
Sử dụng “git diff” để so sánh nhánh với master.
Dùng “git status” để kiểm tra trạng thái hợp nhất.

27. Nội dung của ‘hooks’ trong Git là gì?

Tập lệnh shell trong thư mục hooks, kích hoạt khi chạy các lệnh Git như post-commit.
Tệp cấu hình để quản lý quyền truy cập kho lưu trữ.
Công cụ tích hợp để tự động hóa kiểm thử mã nguồn.
Thư mục lưu trữ các commit chưa được hợp nhất.

28. Làm thế nào tôi có thể tìm danh sách các tệp đã thay đổi trong một commit cụ thể?

Dùng “git diff-tree –no-commit-id –name-only -r {hash}” để liệt kê tên tệp thay đổi.
Chạy “git log –name-only” để xem tệp thay đổi trong commit.
Sử dụng “git status {hash}” để liệt kê tệp đã chỉnh sửa.
Dùng “git show –files” để hiển thị danh sách tệp.

29. Làm thế nào tôi có thể xóa một tệp khỏi git mà không xóa khỏi hệ thống tệp?

Dùng “git reset filename” và thêm vào .gitignore bằng “echo filename >> .gitignore”.
Chạy “git rm –cached filename” để chỉ xóa khỏi khu vực staging.
Sử dụng “git checkout filename” để bỏ theo dõi tệp.
Dùng “git ignore filename” để loại bỏ tệp khỏi Git.

30. Sự khác biệt giữa rebasing và merge trong Git là gì?

Rebase viết lại lịch sử commit cho thứ tự tuyến tính, merge tích hợp nhánh mà không thay đổi lịch sử.
Rebase tạo nhánh mới, merge xóa nhánh cũ.
Rebase chỉ áp dụng cho kho cục bộ, merge áp dụng cho kho từ xa.
Rebase tự động giải quyết xung đột, merge yêu cầu xử lý thủ công.

31. Sự khác biệt giữa revert và reset là gì?

Reset hoàn nguyên thay đổi cục bộ, ảnh hưởng lịch sử; revert tạo commit mới để loại bỏ thay đổi trước.
Reset tạo nhánh mới, revert hợp nhất nhánh vào master.
Reset xóa kho lưu trữ, revert khôi phục kho từ xa.
Reset chỉ ảnh hưởng staging, revert chỉ ảnh hưởng working tree.

32. Làm thế nào bạn có thể hoàn nguyên một commit đã được đẩy và công khai?

Dùng “git revert HEAD~2..HEAD” để tạo commit mới loại bỏ thay đổi của commit trước.
Chạy “git reset –hard HEAD~2” để xóa commit và đồng bộ kho từ xa.
Sử dụng “git push –force” để hoàn nguyên commit công khai.
Dùng “git rebase –undo” để loại bỏ commit đã đẩy.

33. Lợi ích của quy trình làm việc forking là gì?

Không cần kho trung tâm, phù hợp mã nguồn mở, tích hợp qua pull request.
Tự động đồng bộ tất cả kho lưu trữ của nhà phát triển.
Cho phép chỉnh sửa trực tiếp trên kho lưu trữ chính.
Giảm số lượng nhánh trong dự án mã nguồn mở.

34. Sự khác biệt giữa ‘git fetch’ và ‘git pull’ là gì?

‘git fetch’ tải dữ liệu từ kho từ xa, không hợp nhất; ‘git pull’ tải và hợp nhất dữ liệu.
‘git fetch’ hợp nhất nhánh, ‘git pull’ chỉ tải commit.
‘git fetch’ hoạt động cục bộ, ‘git pull’ yêu cầu kho từ xa.
‘git fetch’ xóa thay đổi cục bộ, ‘git pull’ bảo toàn thay đổi.

35. Cú pháp cho rebasing trong Git là gì?

“git rebase [new-commit]”.
“git rebase –merge [branch]”.
“git rebase –commit [hash]”.
“git rebase origin [branch]”.

36. Công dụng của ‘git bisect’ là gì?

Tìm commit giới thiệu lỗi bằng thuật toán tìm kiếm nhị phân.
Tự động sửa lỗi trong lịch sử commit.
Hiển thị danh sách tất cả commit trong kho lưu trữ.
Tách một commit thành nhiều commit nhỏ hơn.

37. Git stash drop là gì?

Loại bỏ mục stash cụ thể hoặc mục gần nhất từ ngăn xếp stash.
Xóa toàn bộ ngăn xếp stash và khôi phục thư mục làm việc.
Áp dụng lại mục stash và xóa nó khỏi lịch sử.
Tạo bản sao lưu của ngăn xếp stash trước khi xóa.

38. Một số máy khách Git đồ họa tốt nhất cho LINUX là gì?

Git GUI, Giggle, Git Cola, Smart Git, qGit, Git-g.
VS Code, Sublime Text, Atom.
Jenkins, Docker, Kubernetes.
Jira, Confluence, Trello.

39. git pull origin là gì?

Lấy và hợp nhất commit từ nhánh master của origin vào nhánh hiện tại.
Sao chép kho lưu trữ từ xa vào kho cục bộ.
Tạo nhánh mới dựa trên nhánh master của origin.
Xóa các thay đổi cục bộ để đồng bộ với origin.

40. Lợi ích mà các công cụ SCM cung cấp với Git là gì?

Khu vực staging, nhiều quy trình làm việc, phân nhánh cục bộ tiết kiệm chi phí.
Tự động kiểm tra lỗi cú pháp trong mã nguồn.
Cung cấp giao diện đồ họa để quản lý commit.
Tích hợp trực tiếp với các công cụ triển khai đám mây.

41. Quy trình để nén N commit cuối cùng thành một commit duy nhất là gì?

Dùng “git reset -soft HEAD~N && git commit” hoặc trích xuất thông báo commit để chỉnh sửa.
Chạy “git rebase -i HEAD~N” để xóa các commit thừa.
Sử dụng “git merge –squash HEAD~N” để nén commit.
Dùng “git commit –amend HEAD~N” để hợp nhất commit.

42. Làm thế nào tôi nên cấu hình một kho lưu trữ Git để chạy các công cụ kiểm tra tính hợp lệ của mã?

Sử dụng hook pre-commit để chạy linters và kiểm tra tính hợp lệ cho các thay đổi đã commit.
Cấu hình “git config” để tự động chạy kiểm tra khi đẩy mã.
Thêm linters vào “git init” để kiểm tra mã khi tạo kho.
Sử dụng “git hook –validate” để tích hợp công cụ kiểm tra.

43. git reflog là gì?

Theo dõi tất cả thay đổi trong các tham chiếu của kho lưu trữ, duy trì lịch sử nhật ký.
Hiển thị danh sách các commit chưa được hợp nhất trong kho.
Sao lưu lịch sử commit trước khi thực hiện rebase.
Quản lý cấu hình của kho lưu trữ từ xa.

44. Làm thế nào tôi có thể cherry-pick một commit hợp nhất?

Dùng “git cherry-pick -m 1 {commit_hash}” để chọn cha mẹ thứ nhất làm cơ sở.
Chạy “git cherry-pick –merge {commit_hash}” để hợp nhất commit.
Sử dụng “git rebase –cherry {commit_hash}” để áp dụng commit hợp nhất.
Dùng “git merge –pick {commit_hash}” để chọn commit hợp nhất.

45. Làm thế nào tôi có thể sao chép một commit trong một nhánh sang một nhánh khác?

Chuyển sang nhánh mục tiêu và dùng “git cherry-pick {commit_hash}” để sao chép commit.
Dùng “git rebase {commit_hash}” để sao chép commit sang nhánh khác.
Chạy “git merge –commit {commit_hash}” để áp dụng commit.
Sử dụng “git stash apply {commit_hash}” để chuyển commit.

46. Nếu một trong những đồng đội của tôi vô tình xóa một nhánh và đẩy các thay đổi vào kho lưu trữ git trung tâm và tôi muốn khôi phục nhánh đó thì sao?

Xem commit mới nhất của nhánh bằng reflog, sau đó kiểm tra nó như một nhánh mới.
Chạy “git reset –hard” để khôi phục nhánh từ kho từ xa.
Sử dụng “git pull –branch” để tải lại nhánh đã xóa.
Dùng “git log –deleted” để tìm và khôi phục nhánh.

47. Quy trình làm việc Gitflow là gì?

Sử dụng nhánh master và develop song song, với hotfix, feature, và develop để quản lý phát triển.
Tạo nhánh duy nhất cho tất cả tính năng và hợp nhất trực tiếp vào master.
Sử dụng nhánh tạm thời để kiểm tra mã trước khi đẩy lên kho từ xa.
Tự động hóa quy trình commit và merge bằng các hook.

48. ‘git remote’ khác với ‘git clone’ như thế nào?

‘git remote’ tạo mục cấu hình cho URL, ‘git clone’ sao chép kho lưu trữ từ URL.
‘git remote’ sao chép nhánh, ‘git clone’ sao chép commit.
‘git remote’ hợp nhất kho từ xa, ‘git clone’ tạo kho cục bộ.
‘git remote’ kiểm tra trạng thái kho, ‘git clone’ tải lịch sử commit.

49. Lệnh để sửa một commit bị hỏng là gì?

Dùng “git commit –amend” để sửa thông báo commit bị hỏng.
Chạy “git reset –soft” để sửa commit bị hỏng.
Sử dụng “git rebase –edit” để chỉnh sửa commit.
Dùng “git cherry-pick –fix” để sửa commit bị hỏng.

50. Mô hình phân nhánh chung trong Git là gì?

Tạo nhánh Chính và nhánh riêng cho tính năng mới, phù hợp cho nhiều nhà phát triển.
Sử dụng nhánh duy nhất cho tất cả thay đổi và commit trực tiếp.
Tạo nhánh tạm thời cho mỗi commit và xóa sau khi hợp nhất.
Phân nhánh theo thời gian để lưu trữ các phiên bản cũ.

Đáp Án Và Giải Thích Cho Các Câu Hỏi Phỏng Vấn Git

Cho dù bạn là người mới bắt đầu hay đã có một số năm kinh nghiệm, bạn có thể gặp một số câu hỏi cơ bản trong cuộc phỏng vấn Git của mình. Phần này bao gồm các câu hỏi phỏng vấn Git cơ bản. Chúng ta cùng tìm hiểu.

Khổ văn kém nên có những phần mình dùng chatgpt nên anh em tập trung nội dung và hiểu cho đừng nói nghe như chatgpt nhé, viết bài này mớ kiến thức cũng mệt à hihi.

1. Git là gì?

Trả lời: Ứng viên sẽ tìm thấy câu hỏi này trong số các câu hỏi phỏng vấn Git phổ biến nhất. Git là một hệ thống quản lý phiên bản phân tán (DVCS) và hệ thống quản lý mã nguồn (SCMS) giúp theo dõi các thay đổi đối với một tệp. Chức năng của Git cho phép các nhà phát triển quay lại bất kỳ thay đổi cụ thể nào. Git cũng có thể giúp quản lý các dự án nhỏ và lớn với tốc độ và hiệu quả cao hơn. Kiến trúc phân tán của Git là lý do chính cho sự vượt trội của nó so với các hệ thống quản lý phiên bản khác. Tính năng đáng chú ý nhất của Git là nó không phụ thuộc vào một máy chủ trung tâm để lưu trữ tất cả các phiên bản của các tệp trong một dự án.

2. Git và GitHub có khác nhau không?

Trả lời: Ứng viên có thể gặp câu hỏi này trong số các câu hỏi phỏng vấn Git cơ bản. Git là một hệ thống quản lý phiên bản để theo dõi các thay đổi trong mã nguồn trong quá trình phát triển phần mềm. Mặt khác, GitHub là dịch vụ lưu trữ kho lưu trữ cho Git. GitHub cũng cung cấp các tính năng bổ sung của riêng nó. Một số tính năng quan trọng trong GitHub bao gồm kiểm soát truy cập và các tính năng cộng tác. Ngoài ra, GitHub cũng cung cấp các công cụ quản lý tác vụ đơn giản cho các dự án khác nhau.

3. Lợi ích của việc sử dụng Git là gì?

Trả lời: Ứng viên nên chuẩn bị cho câu hỏi này vì nó là một trong những câu hỏi phỏng vấn Git phổ biến nhất. Dưới đây là những lợi ích đáng chú ý nhất của Git.

  • Bất kỳ dự án nào cũng có thể sử dụng Git mà không có bất kỳ hạn chế nào
  • Git hỗ trợ cộng tác
  • Tính khả dụng cao cùng với chức năng dự phòng và sao chép dữ liệu
  • Sử dụng đĩa và hiệu suất mạng tốt hơn
  • Chỉ có một thư mục Git cho mỗi kho lưu trữ

4. Git sử dụng ngôn ngữ nào?

Trả lời: Đây là một trong những câu hỏi tưởng chừng đơn giản nhưng quan trọng trong số các câu hỏi phỏng vấn Git hàng đầu. Tuy nhiên, ứng viên nên cố gắng trình bày lý do sử dụng ngôn ngữ C, thay vì chỉ đơn giản nói ra! Git sử dụng ngôn ngữ C để giảm thiểu chi phí thời gian chạy phổ biến trong các ngôn ngữ cấp cao.

5. Kho lưu trữ trong Git là gì và làm thế nào bạn có thể tạo một kho lưu trữ?

Trả lời: Ứng viên sẽ gặp một chút kỹ thuật khi trả lời loại câu hỏi phỏng vấn Git cơ bản này. Kho lưu trữ trong Git là nơi Git sử dụng để lưu trữ tất cả các tệp. Git lưu trữ các tệp trong kho lưu trữ cục bộ hoặc trong kho lưu trữ từ xa. Quy trình tạo một kho lưu trữ trong Git là một trong những câu hỏi thường được hỏi nhất. Trước tiên, bạn phải tạo một thư mục cho dự án để tạo kho lưu trữ. Sau đó, bạn có thể chạy lệnh “git init” và tạo một kho lưu trữ git trong thư mục dự án.

6. Kho lưu trữ trống (bare repository) là gì?

Trả lời: Ứng viên cũng có thể gặp câu hỏi này trong số các câu hỏi phỏng vấn Git hàng đầu như một câu hỏi tiếp theo. Một kho lưu trữ trống chứa thông tin về quản lý phiên bản. Kho lưu trữ trống không chứa bất kỳ tệp làm việc nào hoặc thư mục con .git đặc biệt. Ngược lại, kho lưu trữ trống chứa tất cả thông tin của thư mục con .git trong thư mục chính trực tiếp. Thư mục làm việc chứa cây làm việc, tức là các bản sao đã được xác minh của các tệp dự án và thư mục con .git với tất cả lịch sử sửa đổi liên quan đến Git cho kho lưu trữ của bạn.

7. Git khác với SVN như thế nào?

Trả lời: Sự khác biệt giữa Git và SVN là một trong những điểm đáng chú ý trong số các câu hỏi phỏng vấn Git tốt nhất. Trước tiên, Git không có đủ chức năng để quản lý các tệp lớn quá mức hoặc các tệp nhị phân thường xuyên thay đổi. Mặt khác, SVN có thể quản lý nhiều dự án trong cùng một kho lưu trữ.

Điểm khác biệt thứ hai là Git không hỗ trợ các commit trên nhiều nhánh hoặc thẻ. Ngược lại, SVN hoặc Subversion hỗ trợ việc tạo các thư mục bất kể vị trí trong bố cục kho lưu trữ. Các thay đổi trong Git là không thể. Tuy nhiên, Subversion cung cấp tính linh hoạt cho người commit để coi một thẻ như một nhánh và tạo nhiều bản sửa đổi trong một thư mục gốc thẻ. Tuy nhiên, Git phân tán tốt hơn SVN tập trung.

8. Git Commit là gì và nội dung của đối tượng commit là gì?

Trả lời: Ứng viên nên tập trung vào câu hỏi này như một trong những câu hỏi phỏng vấn cơ bản quan trọng. Git commit là một lệnh được thực thi trong một dự án để ghi lại tiến trình của dự án. Đối tượng commit chứa một tập hợp các tệp đại diện cho trạng thái của một tệp tại các thời điểm khác nhau. Đối tượng commit cũng bao gồm một tham chiếu đến commit cha. Cuối cùng, bạn cũng có thể tìm thấy tên SHAI, một định danh duy nhất với chuỗi 40 ký tự cho đối tượng commit.

9. Các chức năng lưu trữ kho lưu trữ Git khác nhau là gì?

Trả lời: Câu hỏi này là một điểm nổi bật trong số các câu hỏi phỏng vấn Git tốt nhất. Ngoài GitHub, các chức năng lưu trữ kho lưu trữ Git nổi bật khác bao gồm Gitlab, Bitbucket, GitEnterprise và SourceForge.

10. Xung đột trong Git là gì?

Trả lời: Ứng viên thường có thể gặp câu hỏi về xung đột trong Git trong các câu hỏi phỏng vấn Git cơ bản. Git có thể xử lý phần lớn các hợp nhất một cách tự động bằng cách tận dụng các tính năng tự động của nó. Xung đột xảy ra khi hai nhánh khác nhau thực hiện các chỉnh sửa trên cùng một dòng trong một tệp. Một tình huống khác dẫn đến xung đột trong Git là việc xóa một tệp trên một nhánh và chỉnh sửa cùng một tệp trong một nhánh khác. Xung đột là những sự cố phổ biến, đặc biệt là khi làm việc trong môi trường nhóm.

11. Quy trình giải quyết xung đột trong Git là gì?

Trả lời: Câu hỏi này là một trong những câu hỏi phổ biến trong số các câu hỏi phỏng vấn Git hàng đầu. Ứng viên có thể mong đợi câu hỏi này cùng với các câu hỏi về định nghĩa xung đột trong git như trong câu hỏi trước. Dưới đây là các bước để giải quyết xung đột trong Git.

  • Nhận biết các tệp chịu trách nhiệm cho xung đột
  • Thực hiện các thay đổi cần thiết đối với các tệp để tránh bất kỳ khả năng xung đột nào
  • Thêm các tệp bằng cách sử dụng lệnh “git add.”
  • Bước cuối cùng liên quan đến việc commit tệp đã thay đổi thông qua lệnh “git commit.”

12. Branching là gì và có bao nhiêu loại branching trong Git?

Trả lời: Ứng viên nên chuẩn bị cho câu hỏi này như một trong những câu hỏi phỏng vấn Git phổ biến nhất. Branching trong Git là một công cụ hữu ích hỗ trợ người dùng tạo nhánh cá nhân và chuyển đổi giữa các nhánh. Người dùng có thể quay lại công việc cũ mà không ảnh hưởng đến công việc hiện tại. Các loại branching khác nhau trong Git bao gồm feature branching, task branching và release branching. Feature branching liên quan đến việc giữ tất cả các thay đổi của một tính năng cụ thể trong một nhánh.

Sau khi kiểm tra và xác nhận hoàn toàn một tính năng, feature branching liên quan đến việc hợp nhất tính năng đó vào nhánh chính. Task branching liên quan đến việc bao gồm tính năng mới trong nhánh riêng cùng với việc bao gồm khóa tác vụ trong tên nhánh. Release branching liên quan đến việc tạo một bản sao của một nhánh trong trường hợp một nhánh đã phát triển bao gồm đủ tính năng để phát hành.

13. SubGit là gì?

Trả lời: Ứng viên có thể mong đợi câu hỏi này như một trong những câu hỏi phỏng vấn Git quan trọng ở cấp độ bắt đầu. SubGit là một công cụ để di chuyển từ SVN sang Git. SubGit có thể giúp tạo một gương Git có thể ghi của một kho lưu trữ Subversion cục bộ hoặc từ xa. Nó có thể sử dụng Subversion cũng như Git trong bất kỳ khoảng thời gian nào mà người dùng cần. SubGit cũng cung cấp nhập khẩu một lần nhanh chóng từ Subversion sang Git. Ngoài ra, bạn có thể sử dụng SubGit trong máy chủ Atlassian Bitbucket. SubGit không yêu cầu bất kỳ thay đổi nào trong cơ sở hạ tầng hiện có. Hơn nữa, SubGit cũng cung cấp tính linh hoạt để sử dụng tất cả các tính năng của Git và Subversion.

14. Các công dụng của git instaweb là gì?

Trả lời: Các ứng dụng của lệnh Git là một trong những chủ đề nổi bật cho các câu hỏi phỏng vấn Git mới nhất. Lệnh “git instaweb” giúp tự động hướng một trình duyệt web và chạy một máy chủ web với giao diện đến kho lưu trữ cục bộ.

15. Các lệnh Git phổ biến và công dụng của chúng là gì?

Trả lời: Ứng viên có thể dễ dàng tìm thấy câu hỏi này trong hầu hết các cuộc thảo luận về câu hỏi phỏng vấn Git. Dưới đây là một số lệnh Git phổ biến, cùng với chức năng của chúng.

git diff” giúp hiển thị các thay đổi giữa các commit và giữa các commit và cây làm việc.

git status” giúp hiển thị sự khác biệt giữa chỉ mục và thư mục làm việc

git stash applies” là lệnh để đưa các thay đổi đã lưu trở lại thư mục làm việc

git log” giúp tìm một commit cụ thể trong lịch sử

git checkout” là lệnh để cập nhật các thư mục của cây làm việc với các thư mục từ một nhánh khác mà không cần hợp nhất

git rm” giúp loại bỏ các tệp khỏi khu vực staging và các tệp trên đĩa

git add” giúp thêm các thay đổi tệp trong thư mục hiện tại vào chỉ mục

git reset” lệnh giúp đặt lại chỉ mục. Nó cũng giúp đặt lại thư mục làm việc về trạng thái của commit cuối cùng

git is a tree” là lý tưởng để đại diện cho một đối tượng cây cùng với chế độ và tên cho mỗi mục

16. Sự khác biệt giữa clone, fork và branch trên Git là gì?

Trả lời: Câu hỏi này là một trong những câu hỏi độc đáo trong số các câu hỏi phỏng vấn Git tốt nhất. Một fork Git là một bản sao từ xa, phía máy chủ của một kho lưu trữ, khác với bản gốc. Cần lưu ý rằng fork không phải là một khái niệm Git mà là một mô hình xã hội. Clone trong Git là một bản sao cục bộ của một kho lưu trữ từ xa cụ thể. Trong quá trình sao chép, người dùng sao chép toàn bộ thông tin kho lưu trữ nguồn cùng với tất cả các nhánh và lịch sử. Branch là một quy trình để quản lý tất cả các thay đổi trong một kho lưu trữ trước khi hợp nhất chúng vào mã. Bạn có thể coi một nhánh như một luồng phát triển dự án tồn tại trong một kho lưu trữ.

17. Làm thế nào để một “branch” khác với một “pull request”?

Trả lời: Sự khác biệt giữa một nhánh và một yêu cầu kéo là một trong những câu hỏi phỏng vấn DevOps quan trọng cho GitHub. Nhánh chỉ đơn giản là một phiên bản mã riêng biệt. Một yêu cầu kéo xảy ra khi một cá nhân lấy kho lưu trữ, tạo nhánh riêng của họ, thực hiện các thay đổi và sau đó cố gắng hợp nhất nhánh đó vào một kho lưu trữ mã khác.

18. Bạn có biết cách sử dụng “git cherry-pick”?

Trả lời: Các lệnh sẽ là một yếu tố thường xuyên xuất hiện trong các câu hỏi phỏng vấn Git. Việc sử dụng lệnh “git cherry-pick” rõ ràng trong các quy trình để giới thiệu các commit cụ thể từ một nhánh trong kho lưu trữ sang một nhánh khác. Ứng dụng phổ biến của “git cherry-pick” rõ ràng trong việc chuyển tiếp hoặc sao lưu các commit từ một nhánh bảo trì sang một nhánh phát triển. Cách tiếp cận này khác với các cách tiếp cận khác như hợp nhất và tái cấu trúc thường áp dụng nhiều commit vào một nhánh khác.

19. Khu vực staging trong Git là gì?

Trả lời: Ứng viên có thể tìm thấy câu hỏi này trong số đa số các câu hỏi phỏng vấn Git tốt nhất. Khu vực staging là một khu vực trung gian giúp định dạng và xem xét các commit trước khi hoàn thành chúng. Nó còn được gọi là chỉ mục. Khu vực staging là nơi đầu tiên để xác minh mọi thay đổi trước khi commit vào kho lưu trữ.

20. Có hợp lý để tạo một commit bổ sung hoặc sửa đổi một commit hiện có không?

Trả lời: Các loại câu hỏi như vậy trong các câu hỏi phỏng vấn Git có thể gây nhầm lẫn. Bạn cần rõ ràng rằng việc tạo một commit bổ sung là thuận lợi hơn so với việc sửa đổi một commit hiện có. Các sửa đổi có thể phá hủy trạng thái đã lưu trước đó trong commit. Các sửa đổi trong nội dung của commit có thể dẫn đến khả năng loại bỏ dữ liệu quan trọng. Việc sử dụng quá mức “git commit- amend” có thể dẫn đến sự phát triển của một commit nhỏ và tích lũy các thay đổi không mong muốn.

Câu Hỏi Phỏng Vấn Git Trung Cấp

Nếu bạn có một vài năm kinh nghiệm làm việc với Git, người phỏng vấn có thể hỏi một số câu hỏi dựa trên lệnh để kiểm tra kiến thức của ứng viên. Vì vậy, ở đây chúng tôi mang đến một số câu hỏi phỏng vấn thường được hỏi cho các chuyên gia Git cấp trung. Hãy xem qua các câu hỏi này.

21. Sự khác biệt giữa head, working tree và index trong Git là gì?

Trả lời: Ứng viên nên chuẩn bị cho câu hỏi này trong số các câu hỏi phỏng vấn Git mới nhất cho các câu hỏi phỏng vấn trung cấp. Working tree còn được gọi là thư mục làm việc hoặc không gian làm việc. Nó là cây thư mục của các tệp nguồn mà người dùng nhìn thấy và chỉnh sửa. Index hoặc khu vực staging chỉ là một tệp nhị phân duy nhất trong /.git/Index. Index chứa danh sách tất cả các tệp trong nhánh hiện tại, các tổng kiểm tra SHA1, tên tệp và dấu thời gian. “HEAD” ngụ ý một tham chiếu đến commit cuối cùng trong nhánh hiện tại đã được kiểm tra.

22. Công dụng của “git config” là gì?

Trả lời: Bạn có thể tìm thấy câu hỏi này trong số các câu hỏi phỏng vấn Git phổ biến nhất. Git sử dụng tên người dùng của bạn để liên kết các commit với một danh tính cụ thể. Lệnh ‘git config’ giúp thay đổi cấu hình Git cũng như tên người dùng của bạn. Ví dụ, nếu bạn muốn có một tên người dùng và địa chỉ email để liên kết một commit với một danh tính cụ thể, thì bạn có thể sử dụng các lệnh sau.

git config -global user. Name “Name” có thể thêm tên người dùng

git config -global user.email “E-mail Address” sẽ thêm địa chỉ email

23. git stash là gì?

Trả lời: Đây là một trong những câu hỏi phỏng vấn Git cấp trung cấp xuất hiện trong đa số các cuộc phỏng vấn Git. Làm việc trên một dự án cụ thể liên quan đến rất nhiều sự lộn xộn và yêu cầu chuyển đổi nhánh. Stashing trên Git giúp lấy thư mục làm việc của bạn với các tệp được theo dõi đã chỉnh sửa và các sửa đổi đã được staging và lưu trữ chúng trên một ngăn xếp các thay đổi chưa hoàn thành. Người dùng có thể áp dụng lại các thay đổi bất cứ lúc nào theo sở thích của họ.

24. Loại công việc nào bạn có thể khôi phục bằng cách khôi phục một nhánh đã xóa?

Trả lời: Ứng viên nên chuẩn bị cho các câu hỏi phỏng vấn Git độc đáo như câu hỏi này. Khi khôi phục một tệp đã xóa, bạn có thể khôi phục các tệp đã lưu trữ hoặc đã lưu trong chỉ mục đã lưu trữ. Các tệp không được theo dõi không thể khôi phục. Thực hành tốt nhất được khuyến nghị là staging và commit công việc của bạn trong mọi trường hợp hoặc đảm bảo chúng được lưu trữ.

25. ‘git diff’ khác với ‘git status’ như thế nào?

Trả lời: Câu hỏi này cũng là một trong những câu hỏi phỏng vấn DevOps quan trọng cho các cuộc phỏng vấn GitHub. ‘git diff’ giúp đại diện cho các thay đổi giữa các commit và các thay đổi giữa các commit và cây làm việc. Mặt khác, ‘git status’ giúp tìm sự khác biệt giữa thư mục làm việc và chỉ mục. Kết quả là, nó giúp hiểu rõ một git cụ thể. Sự khác biệt nổi bật là “git diff” hiển thị sự khác biệt giữa các commit khác nhau, trong khi “git status” thì không.

26. Làm thế nào tôi có thể biết nếu một nhánh đã được hợp nhất vào master?

Trả lời: Câu trả lời cho loại câu hỏi phỏng vấn Git này thường khá đơn giản. Các lệnh sau có thể giúp tìm hiểu xem một nhánh đã được hợp nhất vào master hay chưa.

“git branch –merged” giúp liệt kê các nhánh đã được hợp nhất trong nhánh hiện tại.

“git branch –no -merged” giúp liệt kê các nhánh chưa được hợp nhất trong nhánh hiện tại.

27. Nội dung của ‘hooks’ trong Git là gì?

Trả lời: Ứng viên có thể tìm thấy câu hỏi này trong số các câu hỏi phỏng vấn Git mới nhất. Thư mục “hooks” bao gồm các tập lệnh shell được kích hoạt khi chạy các lệnh Git liên quan. Ví dụ, git sẽ cố gắng thực thi một tập lệnh post-commit sau khi chạy một commit.

28. Làm thế nào tôi có thể tìm danh sách các tệp đã thay đổi trong một commit cụ thể?

Trả lời: Ứng viên sẽ tìm thấy các câu hỏi thực tế như câu hỏi này trong số các câu hỏi phỏng vấn Git phổ biến nhất. Câu trả lời khá đơn giản! Chỉ cần sử dụng lệnh ‘git diff-tree -r {hash}”. Cờ ‘-r’ giúp liệt kê các tệp riêng lẻ. Đầu ra có thể chứa một số thông tin bổ sung. Tuy nhiên, bạn có thể giảm bớt thông tin thêm với sự trợ giúp của hai cờ bổ sung. Lệnh với các cờ bổ sung sẽ là “git diff-tree –no-commit-id –name-only -r {hash}.” –no-commit-id giúp loại bỏ các hash commit khỏi đầu ra. Cờ “–name-only” giúp in tên tệp thay vì đường dẫn.

29. Làm thế nào tôi có thể xóa một tệp khỏi git mà không xóa khỏi hệ thống tệp?

Trả lời: Ứng viên sẽ phải chuẩn bị cho câu hỏi này trong số các câu hỏi phỏng vấn Git khó. “git rm” có thể giúp loại bỏ các tệp khỏi khu vực staging cũng như hệ thống tệp hoặc cây làm việc. Tuy nhiên, việc áp dụng “git rm” không thể hợp lệ trong mọi trường hợp. Do đó, bạn nên sử dụng lệnh “git reset” với cú pháp như “git reset filename.” Bạn cũng có thể sử dụng lệnh “echo filename >> .gitignore” và thêm nó vào thư viện .gitignore để tránh việc thêm lại.

30. Sự khác biệt giữa rebasing và merge trong Git là gì?

Trả lời: Như bạn đã biết, các lệnh sẽ chiếm một phần lớn trong các câu hỏi phỏng vấn Git mới nhất. Lệnh rebase trong Git giúp tích hợp các thay đổi từ một nhánh sang một nhánh khác. Bạn có thể sử dụng nó thay cho lệnh merge. Lệnh merge giúp lấy các dòng phát triển độc lập trong nhánh git và tích hợp chúng vào một nhánh duy nhất. Sự khác biệt giữa hai lệnh rõ ràng trong việc rebases phải viết lại lịch sử commit để tạo ra thứ tự commit thẳng, tuyến tính.

31. Sự khác biệt giữa revert và reset là gì?

Trả lời: Ứng viên có thể tìm thấy câu hỏi này trong số các câu hỏi phỏng vấn DevOps mới cho các cuộc phỏng vấn GitHub. Lệnh reset trong git giúp hoàn nguyên các thay đổi cục bộ về trạng thái của một kho lưu trữ Git. “git reset” hoạt động trên lịch sử commit, thư mục làm việc và khu vực staging. Lệnh revert trong git giúp tạo một commit mới mà loại bỏ các thay đổi từ commit trước đó. Lệnh revert giúp thêm một lịch sử mới vào dự án mà không thay đổi lịch sử hiện có.

32. Làm thế nào bạn có thể hoàn nguyên một commit đã được đẩy và công khai?

Trả lời:git revert” có thể giúp hoàn nguyên một hoặc nhiều commit. Lệnh giúp tạo một commit mới mà loại bỏ các thay đổi được thực hiện trong các commit trước đó. Lệnh sau có thể giúp hoàn nguyên hai commit trước đó.

“git revert HEAD~2.HEAD”

33. Lợi ích của quy trình làm việc forking là gì?

Trả lời: Ứng viên có thể tìm thấy câu hỏi này như một trong những câu hỏi phỏng vấn Git quan trọng. Sự khác biệt đầu tiên là quy trình làm việc forking không sử dụng một máy chủ phía máy chủ duy nhất làm kho lưu trữ mã “trung tâm”. Mỗi nhà phát triển có một kho lưu trữ phía máy chủ cá nhân. Do đó, quy trình làm việc forking phổ biến trong các dự án mã nguồn mở công khai. Một lợi ích khác là tích hợp các đóng góp mà không cần đẩy vào một kho lưu trữ trung tâm cụ thể. Chỉ người quản lý dự án có thể đẩy vào kho lưu trữ chính thức. Các nhà phát triển có thể thông báo cho người quản lý dự án rằng một bản cập nhật đã sẵn sàng để tích hợp thông qua một yêu cầu kéo.

34. Sự khác biệt giữa ‘git fetch’ và ‘git pull’ là gì?

Trả lời: Ứng viên nên chuẩn bị cho câu hỏi này trong số các câu hỏi phỏng vấn DevOps cho các cuộc phỏng vấn GitHub. ‘git fetch’ chỉ tải xuống dữ liệu mới từ kho lưu trữ từ xa. Nó không đảm bảo tích hợp dữ liệu đã tải xuống vào các tệp làm việc của bạn. ‘git pull’ là lý tưởng để tải xuống cũng như hợp nhất dữ liệu từ kho lưu trữ từ xa vào các tệp làm việc cục bộ.

35. Cú pháp cho rebasing trong Git là gì?

Trả lời: Cú pháp cho rebasing trong Git là “git rebase [new-commit]

36. Công dụng của ‘git bisect’ là gì?

Trả lời: ‘git bisect’ là một lệnh Git quan trọng để tìm lệnh chịu trách nhiệm giới thiệu một lỗi. Lệnh sử dụng thuật toán tìm kiếm nhị phân để tìm commit trong lịch sử dự án chịu trách nhiệm giới thiệu một lỗi.

37. Git stash drop là gì?

Trả lời: Git stash drop là lệnh giúp loại bỏ danh sách sau khi hoàn thành công việc trên mục đã lưu trữ. Kết quả là, nó đảm bảo loại bỏ bất kỳ mục cụ thể hoặc các mục được thêm gần đây nhất từ đối số.

38. Một số máy khách Git đồ họa tốt nhất cho LINUX là gì?

Trả lời: Ứng viên có thể tìm thấy câu hỏi này phổ biến trong các câu hỏi phỏng vấn Git. Máy khách Git tốt nhất cho Linux như sau:

  • Git GUI
  • Giggle
  • Git Cola
  • Smart Git
  • qGit
  • Git-g

39. git pull origin là gì?

Trả lời: Lệnh ‘git pull origin master’ lấy các commit từ nhánh master của origin có thể là origin cục bộ hoặc nhánh master. Sau đó, nó hợp nhất origin hoặc master vào nhánh hiện đang được kiểm tra.

40. Lợi ích mà các công cụ SCM cung cấp với Git là gì?

Trả lời: Người dùng có thể nhận được các lợi ích đặc biệt với các công cụ SCM như CVS, Subversion, ClearCase và Perforce. Các tính năng như khu vực staging tiện lợi, nhiều quy trình làm việc và phân nhánh cục bộ tiết kiệm chi phí xác nhận lợi ích của các công cụ SCM.

Câu Hỏi Phỏng Vấn Git Nâng Cao

Là một chuyên gia Git cấp cao, bạn có thể gặp các câu hỏi phỏng vấn Git nâng cao trong cuộc phỏng vấn của mình. Hãy xem qua một số câu hỏi phỏng vấn Git nâng cao và chuẩn bị cho cuộc phỏng vấn.

41. Quy trình để nén N commit cuối cùng thành một commit duy nhất là gì?

Trả lời: Câu hỏi này là một trong những câu hỏi phỏng vấn Git nâng cao với hai phản hồi riêng biệt tùy thuộc vào ngữ cảnh. Trong trường hợp viết một thông báo commit mới từ đầu, bạn có thể sử dụng lệnh sau.

“git reset -soft HEAD~N &&git commit.”

Nếu bạn phải chỉnh sửa một thông báo commit mới với việc thêm các thông báo commit hiện có, thì bạn nên trích xuất các thông báo và chuyển chúng đến Git commit. Lệnh sau giúp đạt được chức năng nêu trên.

42. Làm thế nào tôi nên cấu hình một kho lưu trữ Git để chạy các công cụ kiểm tra tính hợp lệ của mã?

Trả lời: Kiểm tra tính hợp lệ giúp xác định khả năng và tính khả thi của kiểm tra liên tục. Một kiểm tra tính hợp lệ có thể thực hiện thông qua một tập lệnh đơn giản liên quan đến hook pre-commit của kho lưu trữ liên quan. Tập lệnh cũng giúp chạy các công cụ khác như linters và thực hiện kiểm tra tính hợp lệ cho các thay đổi đã commit vào kho lưu trữ. Dưới đây là một ví dụ.

#!/bin/sh
files=$(git diff –cached –name-only –diff-filter=ACM | grep ‘.go$’)
if [ -z files ]; then
exit 0
fi
unfmtd=$(gofmt -l $files)
if [ -z unfmtd ]; then
exit 0
fi
echo “Some .go files are not fmt’d”
exit 1

Tập lệnh trên đánh giá nhu cầu chuyển bất kỳ tệp .go nào qua công cụ định dạng mã nguồn Go tiêu chuẩn. Thoát với một giá trị khác không giúp tập lệnh ngăn chặn việc áp dụng commit vào kho lưu trữ.

43. git reflog là gì?

Trả lời: Lệnh “git reflog” giúp theo dõi tất cả các thay đổi được thực hiện trong các tham chiếu của một kho lưu trữ. Nó duy trì một lịch sử nhật ký của các tham chiếu được tạo hoặc kiểm tra cục bộ đến kho lưu trữ.

44. Làm thế nào tôi có thể cherry-pick một commit hợp nhất?

Trả lời: Ứng viên có thể tìm thấy câu hỏi này trong số các câu hỏi phỏng vấn Git nâng cao phổ biến. Cherry-pick sử dụng một diff để tìm ra sự khác biệt giữa các nhánh. Với commit hợp nhất cho một nhánh khác, nó có hai bộ thay đổi và hai cha mẹ. Ví dụ, nếu bạn có commit hợp nhất ref 64cv89d, bạn phải chỉ định -m và sử dụng cha mẹ 1 làm cơ sở như sau –

git checkout release-branch

git cherry-pick -m 1 64cv89d

45. Làm thế nào tôi có thể sao chép một commit trong một nhánh sang một nhánh khác?

Trả lời: Lệnh ‘cherry-pick’ là lựa chọn tốt nhất trong trường hợp này. Nó giúp tìm tính khả thi của việc hoàn nguyên một commit hiện có về nhánh hoặc vị trí hiện tại. Do đó, bạn phải chuyển sang nhánh mục tiêu và sau đó gọi lệnh “git cherry-pick {hash của commit đó}”. Kết quả là, bạn có thể tìm thấy một commit mới với một hash mới do việc áp dụng các thay đổi vào một đích đến khác.

46. Nếu một trong những đồng đội của tôi vô tình xóa một nhánh và đẩy các thay đổi vào kho lưu trữ git trung tâm và tôi muốn khôi phục nhánh đó thì sao?

Trả lời: Bạn cần xem xét commit mới nhất đến nhánh cụ thể với reflog. Sau đó, bạn có thể kiểm tra nó như một nhánh mới.

47. Quy trình làm việc Gitflow là gì?

Trả lời: Ứng viên có thể tìm thấy câu hỏi này trong số các câu hỏi phỏng vấn Git khó nhất. Quy trình làm việc Gitflow sử dụng hai nhánh chạy song song dài hạn được gọi là master và develop. Các thành phần trong quy trình làm việc Gitflow như sau.

Nhánh master luôn sẵn sàng để phát hành trực tiếp với mọi thứ sẵn sàng cho sản xuất.

Các nhánh Hotflix giúp vá nhanh các bản phát hành sản xuất.

Nhánh Develop giúp hợp nhất tất cả các nhánh tính năng và cũng thực hiện tất cả các kiểm tra.

Nhánh Tính năng ngụ ý một nhánh duy nhất cho mỗi tính năng mới. Nhánh tính năng có thể được đẩy vào nhánh phát triển giống như nhánh cha của chúng.

48. ‘git remote’ khác với ‘git clone’ như thế nào?

Trả lời:git remote’ giúp tạo một mục trong cấu hình git trong khi chỉ định một tên cho một URL cụ thể. Mặt khác, ‘git clone’ giúp tạo một kho lưu trữ git mới bằng cách sao chép một kho lưu trữ hiện có trong URL.

49. Lệnh để sửa một commit bị hỏng là gì?

Trả lời: Để sửa một commit bị hỏng, bạn có thể sử dụng lệnh “git commit –amend”. Lệnh này có thể giúp sửa thông báo commit bị hỏng trong trình chỉnh sửa.

50. Mô hình phân nhánh chung trong Git là gì?

Trả lời: Cách tiếp cận chung nhất để tạo các nhánh trong Git là phát triển một nhánh “Chính”. Nó cũng liên quan đến việc tạo một nhánh khác để triển khai các tính năng mới. Mô hình này hữu ích trong trường hợp nhiều nhà phát triển làm việc trên một dự án duy nhất.

Lời Kết

Trên đây là hết tâm can của mình rồi. Anh em nào thấy hữu ích thì bookmark lại vào tài khoản để sau xem cho tiện nhé hehe. Có vấn đề gì thì cứ cmt để mình sửa đổi và bổ sung cho anh em khác cùng coi nha.

Chia sẻ bài viết:
Theo dõi
Thông báo của
2 Góp ý
Được bỏ phiếu nhiều nhất
Mới nhất Cũ nhất
Phản hồi nội tuyến
Xem tất cả bình luận

Có thể bạn quan tâm