1、Git 是什麼
Git:分佈式版本控制系統,爲第三代控制工具(第二代爲SVN),可進行離線操作。
2、Git init 命令中 bare參數的含義
bare參數用來指定是否在初始化時進行“裸存儲庫”指定
何爲裸存儲庫(bare repository)?
和working repository相比,無工作目錄,僅包含.git版本追蹤文件,多用於開發者在開發過程中向其它項目團隊成員或同一個項目在不同電腦上進行時向他人分享本地倉庫中的版本(滿足分佈式開發需求)
3、Git的編譯語言
C語言,相比可減少Git運行時的開銷
4、如何撤銷文件
撤銷修改 1、直接在文件中修改
2、版本回溯
3、git checkout —文件名 (注意添加 “-”*2,否則會變爲創建新分
支)
若已經git add的代碼:使用git reset HEAD filename來放棄指定文件的修改緩存(放棄所有爲git reset HEAD .)
若已經commit上去的代碼:使用 git reset --hard HEAD^/commitid 進行commit版本回退
若已經push上去的代碼:1、可以通過修改錯誤文件,重新進行commit操作進行修改
2、使用git revert命令進行版本回溯
5、Git reset 和 revert的區別
Git reset爲直接刪除指定commit , Git revert 爲使用一次新的commit來對之前的commit 進行回滾
如果已經push到線上代碼庫,使用reset可能在之後push時導致衝突
如果在日後現有分支和歷史分支需要合併的時候,reset 恢復部分的代碼依然會出現在歷史分支裏.但是revert 方向提交的commit 並不會出現在歷史分支裏.
reset 是在正常的commit歷史中,刪除了指定的commit,這時 HEAD 是向後移動了,而 revert 是在正常的commit歷史中再commit一次,只不過是反向提交,他的 HEAD 是一直向前的.
(參考:https://blog.csdn.net/xybelieve1990/article/details/62885292)
6、Git中“Staging area/Index“
爲本地工作區的緩存區域 working directory➡️(git add)➡️staging area ➡️ git commit ➡️ localrepo
7、當遇到緊急BUG需要處理時,當前修改的代碼如何處理
使用Git stash 命令
git stash:進行工作區緩存處理
git stash save 'massage':對當前分支的修改內容進行緩存處理,message爲備註
git stash list:查看工作區所有緩存
git stash apply:工作區內容恢復(該命令並不會刪除目標緩存記錄)
git stash pop:對工作區最頂層緩存文件進行恢復並且刪除該緩存記錄
git stash drop:刪除目標緩存記錄
git stash show:查看指定的緩存記錄的diff內容
git stash branch:從stash內容創建新的分支
8、查看提交代碼中指定更改部分代碼
git diff-tree -r {hash}
git diff-tree -no-commit-id -name-only -r {hash}
9、Git bisect命令
git bisect <subcommand> <options> 使用二進制搜索查找歷史記錄中的哪個提交引入了錯誤
10、Git協助分支(開發分支策略):
Feature 分支用來做分模塊功能開發,建議命名爲feature-xxx,模塊完成之後,會合併到 develop 分支,然後刪除。
Release 分支用來做版本發佈的預發佈分支,建議命名爲 release-xxx。例如在軟件 1.0.0 版本的功能全部開發完成,提交測試之後,從 develop 檢出release-1.0.0 ,測試中出現的小問題,在 release 分支進行修改提交,測試完畢準備發佈的時候,代碼會合併到 master 和 develop,master 分支合併後會打上對應版本標籤 v1.0.0, 合併後刪除自己,這樣做的好處是,在測試的時候,不影響下一個版本功能並行開發。
Hotfix 分支是用來做線上的緊急 bug 修復的分支,建議命名爲 hotfix-xxx。當線上某個版本出現了問題,將檢出對應版本的代碼,創建 Hotfix 分支,問題修復後,合併回 master 和 develop ,然後刪除自己。這裏注意,合併到 master 的時候,也要打上修復後的版本標籤。
(參考:https://zhuanlan.zhihu.com/p/50063660)
11、如何查看分支合併信息
git branch -merged :列出以合併到當前分支的分支
git branch -no-merged:列出了尚未合併的分支