這週輪到我做技術分享了,思來想去,還是決定選擇 git 作為本週技術分享的主題。原因有二,一是最近在使用 git 時出現了一些難題,具體下文會有提到。二是,儘管每天都在使用 git,但對於一些基礎概念還是有模糊的地方,也想通過這次的分享進一步理解 git。
git 原理#

workspace: 工作區(當前的開發位置)
git pull: 從遠端倉庫拉取最新的代碼到工作區 =>git fetch+git mergegit diff: 查看修改但未暫存的文件
index: 暫存區
git add: 工作區修改的內容提交到暫存區
repository: 本地倉庫
git commit: 將暫存區內容提交到本地倉庫git fetch或者git clone: 從遠端倉庫拉取 / 克隆代碼到本地倉庫
remote repository: 遠端倉庫
git push: 將本地倉庫內容提交到遠端倉庫
常見問題#
- git push origin master 具體是在做什麼事?
把本地master分支上的內容,推一份到origin這個地方,並且在origin這個地方建立一個同名的master分支
完整指令:git push origin master:master => git push <遠程主機名> <本地分支名>:<遠程分支名>
- git merge 和 git rebase 的區別
舉例:把 test 分支合併到 master 分支

git merge的結果

git rebase的結果

最近遇到的問題#
- 本地項目運行出錯,想要回退到之前的版本 => 本地倉庫回退到之前的版本
git reset --hard/soft [需要回退的提交點]
- 撤銷已經推送到倉庫的提交 => 遠端倉庫回退到之前的版本
git reset --hard [需要回退的提交點]
git push origin HEAD --force