前言
因為結合了開發中可能遇到的場景,篇幅較長,不過我覺得很有助于你理解 git 的運作機制,而不是死記硬背命令。
HEAD指針 始終指向的是當前分支的最新版本號,HEAD^, HEAD^^, ^ 的個數 n 或 HEAD~n,n 代表前 n 個版本號。
在項目中直接使用 linux rm 只會刪除工作區的文件,git rm 同在刪除工作區文件的同時刪除 stage 中的,或使用 git rm --cached 只刪除 stage 中的。
一些基本的操作
#全局配置git config --global user.name "your username"git config --global user.email youremail@email.comgit config --global color.ui true#mkdir git_proj & cd git_projgit initecho "# readme.md" >> README.mdgit add README.mdgit commit -m "readme commit"# 添加遠程倉庫 并給它取個別名 origingit remote add origin git@github.com:username/repositoryName.git# 將本地倉庫推送至 origin 的 master 分支并與此分支關聯(-u 的作用,后期不必在使用)git push -u origin master# 從遠程倉庫 origin 的 master 分支獲取最新源碼并下載到 tmp 分支git fetch origin master:tmp# 比對 tmp 分支于 master 分支做了哪些改動git diff master tmp# 合并 tmp 分支到 master 分支git merge tmp# clone copy 一個完整的遠端倉庫到本地git clone git@github.com:username/repositoryName.git# pull 獲取 origin 的 master 分支并直接和當前分支合并# 所以可能會發生沖突git pull origin master
checkout
checkout 命令有兩個主要作用:切換分支 和 回滾文件到當前的 stage 版本 或 repository 版本
1、切換分支
# 切換到 new_branch 分支git checkout new_branch# 創建并切換到 new_branch 分支git checkout -b new_branch
2、回滾工作區的文件到最新 stage 版本 或 repository 版本,即從 stage 或 repository 中檢出最新版本
# -- 是文件標示符 表名后面的參數為文件 避免產生切換 branch 的歧義git checkout -- <filename>
回滾時會先檢查 stage 中是否有對應的文件,如果沒有才會使用 repository 中最新的版本。而當對某文件進行了多次修改和 add 操作后,使用 checkout 我們只能將文件回滾到最新一次的 add 的版本。
但在某些場景下我們可能想回滾到 repository 中的最新版本,怎么做呢?配合 reset 命令的可以很容易做到。
先給出命令:
git reset HEAD <filename> & git checkout -- <filename>
這樣就可以將工作區的 filename 回滾到 repository 中的最新版本了。具體原理我們將在實例中詳細的講解。
reset
git 的 reset 命令比較繞,需要耐心的理解。簡單來說,reset 有三種重置級別,我們需要準確理解每個級別的作用。
soft:回退版本號。作用于 repository
新聞熱點
疑難解答