爲什麼要編寫這個系列?git不熟悉的面試者很難表現出自己熟悉git工作流,那麼教大家如何在面試官面前大展雄風!!!
介紹
git是一款代碼版本控制軟件,目前已被廣泛的使用。因此優雅的使用git已經成了開發者的必備技能。 區別於SVN,git的特點是去中心化。
面試開始
以下都是面試經常會問到的問題,大家要記住哦!!!
1.平時開發你是用命令行工具還是可視化工具
面試官的初衷不是想知道你用什麼工具,而是想知道你是否熟悉常用的命令和分支,以及如何團隊合作
2.常用的分支
名稱 | 說明 |
---|---|
master | 主分支 |
develop | 開發分支,包含確定即將發佈的代碼 |
feature | 新功能分支,一般一個新功能對應一個分支 |
release | 發佈定期要上線的功能 |
hotfix | 當系統在線上出現bug時,需要火速處理 |
注:
hotfix是從master分支上切下來, master branch(生產服務器)先回滾到上一個穩定版本來避免bug再出現,開發人員處理掉這個bug後進行單 元測試,迴歸測試之後,master merge hotfix,別忘了develop branch也要merge 它!
3.常用的命令
不要只說 add commit pull push,這樣會顯得很初級,以下列出的命令還會有很多參數去延伸,大家要多學習哦
- git add
- git commit
- git status
- git pull
- git push
- git merge
- git stash
- git reset
- git log
- git diff
- git remote
- git clone
- git branch
- git config
- git tag
- git rm
- git init
- git fetch
- git cherry-pick
- git rebase
4.git checkout 可以實現哪些功能
- 切換分支
git checkout 分支名
- 創建並切換到新分支
git checkout -b 分支名
- 撤銷對文件的修改(只能撤銷掉沒有add的文件)
git checkout 文件名 // 撤銷所有的文件 git checkout .
5.合併其中一個feature分支有哪幾種實現方式
第一種
git pull origin feature
第二種
git merge feature
6.git pull和git fetch的區別
首先在作用上他們的功能是大致相同的,都是起到了更新代碼的作用。
pull=fetch+merge,pull的話,下拉遠程分支並與本地分支合併。
fetch只是下拉遠程分支,怎麼合併,可以自己再做選擇。
7.如何將dev分支的commitid複製到當前分支
// 先git log 找到想要複製的commitid
git cherry-pick commitid
8.講下git的工作流程
沒有具體的標準答案,上圖是一個工作流程,具體以往下幾個知識點分析
- 每個分支的作用,以及是幹什麼的
- 對於 feature 流程,都是從 develop 分支發起,分支合併以及功能管理
- 對於 hotfix 流程,要從 master 分支發起,修復完要同時合併到 develop 和 master。
Git flow的優點是清晰可控,缺點是相對複雜,需要同時維護兩個長期分支。大多數工具都將master當作默認分支,可是開發是在develop分支進行的,這導致經常要切換分支,非常煩人。
面試結束
希望《吊打面試官》系列之GIT面試篇能爲你的面試提高通過率!!!
祝福每一位小夥伴都能找到滿意的工作!!!