2022 年你需要知道的 30 個 Git 面試問題和答案

已發表: 2021-01-04

Git 越來越受歡迎。 開發人員不斷努力發布非測試版應用程序的更新版本,以修復錯誤或改進其功能。 Git 通過充當版本​​控制來服務,其中所有更改都存儲在一個中央存儲庫中。

團隊中的每個開發人員都可以查看版本、進行更改,然後上傳。 對於在遠程團隊中工作或在家工作的人來說,它也非常有效。 Git 不僅被開發人員使用。 即使團隊中的非開發人員也可以使用它來獲取最新版本或特定版本的應用程序,並將其用於測試或其他工作。

Git 是一個命令行工具,Git Hub 是中心,程序員在這裡保存他們的項目並與團隊溝通。

因此,需要 Git 知識,並且隨著需求的增加,我們形成了一組 Git 面試問題,可以幫助您找到工作。 為了更容易理解,我們將 GitHub 面試問題分為三個部分——初學者、中級和高級。

目錄

基礎級 Git 面試題

Q.1) 解釋 SVN 和 Git 的區別

  • SVN是屬於第二代的集中式版本控制工具,與Git相反,Git是屬於第三代的去中心化版本控制工具。
  • 在 SVN 中,服務器端存儲庫保存版本歷史記錄。 在 Git 中,您可以將整個存儲庫複製到您的 PC 上。
  • 在 SVN 中,您只能在在線時提交,這與 Git 不同,即使在離線時您也可以提交。
  • 與更快的 Git 相比,SVN 中的拉取和推送操作更慢。
  • 在 SVN 中,除非您這樣做,否則不會共享您的工作,這與自動共享的 Git 不同。

Q.2) 什麼是 Git?

Git 允許開發人員和團隊成員跟踪任何人所做的更改。 它還可以讓您回到舊版本。 它是一個分佈式版本控制系統,可幫助團隊了解誰進行了更改以及更改的日期和時間。 與其他版本控制系統相比,它有自己的一套優勢。

Git 最大的好處是它不依賴中央服務器來保存項目的所有版本。 開發人員可以在自己的系統上創建存儲庫的克隆(副本),以顯示整個歷史記錄。 這在服務器中斷時特別有用。 在 Git 中,有一個中央雲存儲庫,程序員或團隊成員可以在其中提交更改並與他們的團隊共享。

Q.3) GitHub 和 Git 有什麼區別?

Git 存儲庫託管服務稱為 GitHub。 此外,它還具有自己的功能,例如提供基於 Web 的圖形界面。 此外,GitHub 除了作為項目的管理工具外,還提供訪問權限。

另一方面,Git 是一個分佈式的版本控制系統。 它主要用於跟踪在非測試版應用程序中所做的任何更改。 它提供速度、支持和數據完整性。 開發人員和其他團隊成員可以查看誰做了哪些更改以及在哪個日期。

Q.4) 使用版本控制系統有什麼好處?

它可以幫助團隊及其成員,因為他們可以隨時工作,因為版本控制系統使他們能夠靈活地合併他們在通用版本中所做的修改,而無需任何麻煩。

歷史記錄顯示所有舊版本及其變體,允許團隊成員在需要時恢復。 團隊成員還擁有整個項目的快照。

團隊成員在進行任何修改時需要發表評論,這有助於其他人了解哪些確切的更改使項目更有條理。 沒有人需要等待解釋。 團隊成員確切地知道誰更改了版本以及原因。

如果不幸的服務器中斷,像 Git 這樣的分佈式 VCS 可以讓您擁有項目的完整歷史記錄,因為它可以下載到您的桌面上。

Q.5) Git 使用什麼語言?

Git 使用的語言是“C”語言,因為與其他高級語言不同,“C”語言可以滿足 GIT 所需的速度,因為它減少了運行時間。

Q.6) 告訴我們一些 Git 存儲庫託管功能

  • Github
  • GitLab
  • 源鍛造
  • 比特桶
  • GitEnterprise

Q.7) 你如何致力於 Git?

要編寫提交消息,您需要編寫命令“git commit -a”。

命令行上的 -a 命令 git 提交所有已更改的跟踪文件的最新內容。 如果新文件需要第一次提交,您可以在 git commit -a 之前使用命令“git add <file>”。

Q.8) 如何修復損壞的提交?

您可以使用命令“git commit –amend”來修復損壞的提交。 通過運行此命令,它修復了編輯器中損壞的提交消息。

閱讀:頂級 Nagios 面試問題

Q.9) Git 中的存儲庫是什麼意思?

它是 Git 保存所有文件的地方。 Git 具有在遠程和本地存儲庫中存儲文件的能力。

Q.10) 如何創建存儲庫?

在 Git 中創建存儲庫很簡單。 如果尚未完成,您需要為項目創建一個目錄。 然後,您需要運行命令“git init”。 此命令在項目目錄中創建 git 目錄。

Q.11) 解釋 Git 中的“裸倉庫”?

裸 Git 存儲庫通常用作遠程存儲庫,您可以與團隊成員或其他人共享它。 它裡面沒有工作樹,因為在遠程存儲庫中沒有完成任何工作。 在其他文件中,其中沒有文件,您將對其進行編輯。 相反,工作目錄包含一個 .git 子目錄,其中包含所有版本歷史記錄和一個工作樹。

Q.12) git 中的“衝突”是什麼意思?

通常,Git 使用其自動合併功能來管理所有合併。 但是,如果兩個單獨的分支在文件的完全相同的行中進行了編輯,則可能會發生衝突。 當一個文件從一個分支中刪除但它已在另一個分支中編輯時,也可能發生這種情況。 當您在團隊環境中工作時,這些必然會發生。

Q.13) 什麼是 git is-tree?

'git is-tree' 表示一個樹對象,包括模式和項目名稱以及樹或 blob 的 SHA-1 值。

中級 Git 面試題

Q. 14) 如果在 Git 中出現衝突,你如何解決?

您可以通過以下方式解決 Git 中的衝突:

  1. 確定哪些文件引起了衝突。
  2. 通過更改該特定文件來解決衝突。
  3. 通過命令 git add 再次添加這些文件。
  4. 使用命令 git commit 提交文件。

Q.15) 如果一個提交已經被推送並公開,你如何在 Git 中恢復它?

有兩種方法可以做到這一點,具體取決於具體情況:

  1. 您可以將其完全刪除或在新提交中修復錯誤文件,然後將其推送回遠程存儲庫。 這是解決此問題的最常用方法。 對文件進行相關更改後,使用命令 git commit -m “commit message”,將其提交到遠程存儲庫。
  2. 或者,您可以創建一個新的提交,以撤消在錯誤提交中所做的所有修改。 您可以使用命令 git revert <name of bad commit> 來做到這一點

閱讀:敏捷面試問答

Q.16) 什麼是 SubGit?

它是一個允許從 SVN 遷移到 Fit 的工具。 它創建本地或遠程 Subversion 存儲庫的可寫 Git 鏡像,並根據需要使用 Subversion 和 Git。 您可以使用 SubGit 創建現有 Subversion 存儲庫的雙向 Git-SVN 鏡像。 您還可以快速從 Subversion 一次性導入到 Git。

Q.17) git pull 命令和 git fetch 命令有什麼區別?

Git pull 命令從中央存儲庫的精確分支檢索所有新更改或提交,並更新本地存儲庫中的目標分支。

Git fetch 命令用於類似但有細微差別的東西。 當您獲取時,它會從一個精確的分支中檢索所有新提交,並將其保存在本地存儲庫的新分支中。 如果您希望在目標分支中反映這些更改,則必須調用 git merge。

因此,Git pull = git fetch + git merge。

Q.18) Git 中的“索引”或“暫存區”是什麼?

在提交之前可以對更改進行格式化或審查的中間區域稱為 Git 中的索引或暫存區域。

Q.19) 什麼是 git stash? 你如何應用它?

有時必須暫停一項工作,因為您必須優先處理其他分支。 半途而廢的工作不能提交,因為它還沒有到那個完整的階段,但你確實想在短時間內回來工作。 要解決此問題,請使用 git slash 提供幫助。

它將它保存在一堆未完成的更改中,您可以稍後完成並提交。 要回到這項工作,您需要做的就是調用 git stash 來應用命令。 它會將您的工作從您離開的位置提取到您的工作目錄。

Q. 20) git diff 與 'git status' 有何不同?

'git diff' 幾乎類似於 'git status'; 他們唯一的區別是前者揭示了各種提交之間的差異。 '

Q.21) 'git remote' 與'git clone' 有何不同?

如果您希望在您的 git 配置中創建一個提及特定 URL 名稱的條目,請使用“git remote add”。 另一方面,“git clone”通過複製位於 URL 的現有存儲庫來創建一個新的 git 存儲庫。

閱讀:頂級 React 面試問題和答案

Q.22) 描述分支策略

每家公司都有自己的分支戰略。 以下是一些流行的:

  • 特性分支——特性分支模型保存了對分支內特定特性所做的所有更改。 只有經過徹底的測試,這個分支才會與它的主分支合併。
  • 發布分支——一旦開發分支達到了可以發布的程度; 您可以克隆或複制它以形成發布分支。 克隆後,不會添加任何新功能。 您只能修復錯誤、記錄錯誤或執行與版本改進相關的此類活動。 一旦經過測試,它就會與它的 master 合併並獲得一個版本號。 此外,它應該被合併回開發分支,該分支可能自發布以來已經向前推進。
  • 任務分支——在此模型中,每個任務都在其單獨的分支上執行,任務鍵保存在分支名稱中。 通過在分支名稱中查找任務鍵,可以清楚地看到哪個代碼執行了哪個任務。

Q.23) 解釋 Gitflow 工作流程?

Gitflow 通過使用兩個長期運行的並行分支(主分支和開發分支)來存儲特定項目的歷史記錄:

  • 大師 - 這是準備去分支。 一切都在這個分支上測試和批准。
  • Hotfix – 這些分支用於快速修補生產版本。 它們幾乎就像您的功能分支和發布分支; 此外,它們是基於master而不是develop。
  • 開發 - 所有功能分支都合併到此分支中。 這些是經過測試的。 只有經過嚴格測試,才與master分支合併。
  • 特性——每個新特性都應該放在自己的分支中,然後將其推送到它們的父分支,即開發分支。

Q. 24) 如何判斷一個分支是否合併到 master?

以下命令可幫助您了解它們是否已合併:

git branch –merged – 列出所有已合併到當前分支的分支。 然後你可以看看是不是。

git branch –no-merged – 或者,您可以使用此命令檢查所有未與其主分支合併的分支。

Q.25) 如何在不從文件系統中刪除的情況下從 git 中刪除文件?

在將文件添加到 Git 時需要小心,以免最終添加錯誤的文件。 命令 git rm 將從暫存區和文件系統中刪除它,因此您需要改用 git reset 命令。

您可以使用 git reset 文件名或 echo 文件名 >> .gitingore

Q.26) 解釋 Git 中的變基和合併?

您使用 rebase 命令將編輯從一個分支集成到另一個分支。 它用作合併命令的替代方法。 它是“合併”命令的替代方法。 它與合併不同,因為它重寫了提交歷史,以便給出一個直接的、有安排的連續提交。

高級 Git 面試問題:

Q.27) 你如何將最後的 N 個提交壓縮成一個提交?

有兩種方法可以將最後 N 次提交壓縮為單個提交,它們是:

如果您希望從頭開始創建新的提交消息,可以使用以下命令:

git reset –soft HEAD~N &&git commit

如果您只想使用現有提交消息的串聯來編輯新的提交消息,那麼您需要使用以下命令獲取這些消息並將它們傳遞給 Git 提交:

git reset –soft HEAD~N &&git commit –edit -m”$(git log –format=%B –reverse .HEAD@{N} )”

Q.28) 將 Jenkins 與 Git 集成的步驟是什麼?

Step1:您需要點擊Jenkins儀表板來管理Jenkins按鈕。

第 2 步:單擊管理插件按鈕。

第 3 步:在插件頁面中,您需要選擇 GIT 插件。 點擊安裝,無需重啟。 該插件會根據您的 Internet 速度自動下載。

Q.29) 解釋什麼是 Git bisect,以及如何使用它來找到錯誤的根源?

使用 Git bisect,您可以通過使用二進制搜索找出哪個提交導致了錯誤。 Git bisect 的命令是 git bisect <subcommand> <options>

二進制搜索算法,此命令首先查找導致錯誤的提交。 Git bisect 在引入錯誤的兩個端點之間選擇一個提交。 你需要你可以確定一個好的提交和一個壞的提交。 它繼續過濾它,直到找到確切的提交。

Q.30) 解釋一個 git reflog?

“reflog”命令有助於跟踪對存儲庫引用所做的每一次編輯。 它保留分支的數據歷史記錄,甚至為在本地或外部創建的分支保留標籤

此命令必須在缺少分支的存儲庫中執行。 在遠程存儲庫的情況下,您需要在擁有分支的程序員系統上運行 reflog 命令。

從世界頂級大學獲得軟件工程學位獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。

結論

我們希望 Git Hub 面試問題可以幫助您獲得夢想的工作。 這些是面試官最常問到的 Git 問題。 我們祝您面試順利!

為未來的職業做準備

立即申請軟件工程碩士