這週輪到我做技術分享了,思來想去,還是決定選擇 git 作為本週技術分享的主題。原因有二,一是最近在使用 git 時出現了一些難題,具體下文會有提到。二是,儘管每天都在使用 git,但對於一些基礎概念還是有模糊的地方,也想通過這次的分享進一步理解 git。
git 原理#
workspace: 工作區(當前的開發位置)
git pull
: 從遠端倉庫拉取最新的代碼到工作區 =>git fetch
+git merge
git 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