一天吃透Git面試八股文

程式設計師大彬發表於2023-03-18

什麼是Git?

Git是一個版本控制系統,用於跟蹤計算機檔案的變化。Git是一個跟蹤計算機檔案變化的版本控制系統,用於幫助協調一個專案中幾個人的工作,同時跟蹤一段時間的進展。換句話說,我們可以說它是一個促進軟體開發中原始碼管理的工具。

Git和SVN的區別

Git是分散式版本控制系統,SVN是集中式版本控制系統

什麼是 Git 倉庫?

Git 倉庫指的是一個用於存放原始碼的地方。Git 倉庫是指存放所有 Git 檔案的地方。這些檔案既可以儲存在本地倉庫,也可以儲存在遠端倉庫。

有哪些Git命令及其功能?

  • Git config - 配置使用者名稱和電子郵件地址
  • Git add - 新增一個或多個檔案到暫存區域
  • Git diff - 檢視對檔案的修改情況
  • Git init - 初始化一個空的 Git 倉庫
  • Git commit - 將更改提交到頭部,但不提交到遠端倉庫

使用Git有什麼好處?

  • 更快的釋出週期
  • 易於團隊協作
  • 廣泛的接受度
  • 保持原始碼的完整性
  • 拉動請求

如何解決Git中的衝突?

  • 識別造成衝突的檔案。
  • 對這些檔案進行所需的修改
  • 使用 git add 命令新增檔案。
  • 最後一步是在git commit命令的幫助下提交檔案的修改。

如何發現一個分支是否已經被合併了?

有兩個命令可以確定:

  • git branch --merged -- 返回已被合併到當前分支的分支列表。
  • git branch --no-merged --返回尚未合併的分支的列表。

git remote和git clone什麼區別?

'git remote add'在你的git配置中建立了一個條目,指定了一個特定URL的名稱,而'git clone'透過複製位於該URL的現有倉庫來建立一個新的git倉庫。

reset和Revert的區別是什麼?

Git reset是一個強大的命令,它可以讓你的工作更有效率。

  • Git reset 是一個強大的命令,用於撤銷對 Git 倉庫狀態的區域性修改。Git 重置的操作物件是 "Git 的三棵樹",即:提交歷史(HEAD)、暫存索引和工作目錄。
  • Git的Revert命令建立了一個新的提交,撤銷了前一個提交的修改。這個命令為專案新增了一個新的歷史。它並不修改現有的歷史。

Git 和 GitHub 的區別是什麼?

Git 是一個版本控制系統。Git 是一個版本控制系統,用於管理原始碼歷史。而GitHub則是一個基於雲的託管服務,用於管理Git倉庫。GitHub的目的是幫助更好地管理開源專案。

git reset的功能是什麼?

Git reset "的功能是將你的索引以及工作目錄重置為你最後一次提交的狀態。

git fetch&git pull詳解

git fetch的意思是將遠端主機的最新內容拉到本地,使用者再檢查無誤後再決定是否合併到工作本地分支中。

git pull 是將遠端主機中的最新內容拉取下來後直接合並,即:git pull = git fetch+git merge,這樣可能會產生衝突,需要手動解決。

Git stash儲存的目的是什麼?

Git stash 獲取工作檔案和索引的當前狀態並放入堆疊以供下一步使用,並返回一個乾淨的工作檔案。因此,如果在物件中間並需要跳轉到其他任務,同時不想丟失當前的編輯,可以使用 Git stash。

說說GIT合併的方法以及區別?

Git程式碼合併有兩種:git merge 和 git rebase

git merge:這種合併方式是將兩個分支的歷史合併到一起,現在的分支不會被更改,它會比對雙方不同的檔案快取下來,生成一個commit,去push。

git rebase:這種合併方法通常被稱為“衍合”。他是提交修改歷史,比對雙方的commit,然後找出不同的去快取,然後去push,修改commit歷史。

Git提交程式碼的步驟

git clone (這個是你新建本地git倉庫,如已有可忽略此步)
git pull    取回遠端主機某個分支的更新,再與本地的指定分支合併。
git status  檢視當前狀態
git add + 檔案
git add -u + 路徑:將修改過的被跟蹤程式碼提交快取
git add -A + 路徑: 將修改過的未被跟蹤的程式碼提交至快取
git add -u com/breakyizhan/src 將 com/breakyizhan/src 目錄下被跟蹤的已修改過的程式碼提交到快取中
git commit -m "修復XXbug"   推送修改到本地git庫中
git push    把當前提交到git本地倉庫的程式碼推送到遠端主機的某個遠端分之上

什麼是“git cherry-pick”?

git cherry-pick 通常用於把特定提交從儲存倉庫的一個分支引入到其他分支中。常見的用途是從維護的分支到開發分支進行向前或回滾提交。這與其他操作(例如merge、rebase)形成鮮明對比,後者通常是把許多提交應用到其他分支中。

說一下Gitflow 工作流程嗎?

Gitflow 工作流程使用兩個並行的、長期執行的分支來記錄專案的歷史記錄,分別是 master 和 develop 分支。Master,隨時準備釋出線上版本的分支,其所有內容都是經過全面測試的。Hotfix,維護或修復分支是用於給快速給生產版本修復打補丁的。修復分支很像釋出分支和功能分支,除非它們是基於 master 而不是 develop 分支。Develop,是合併所有功能分支,並執行所有測試的分支。只有當所有內容都經過徹底檢查和修復後,才能合併到 master 分支。Feature,每個功能都應留在自己的分支中開發,可以推送到 develop 分支作為功能分支的父分支。

相關文章