Git學習筆記
- Git配置指令
- 初始化Git倉庫
- 添加檔案到Git倉庫
- 送出檔案到Git倉庫
- 掌握工作區的狀态
- 檢視修改内容
- 檢視日志資訊
- 版本回退
- 檢視指令曆史
- 暫存區的概念
- 撤銷修改
- 删除檔案
- 遠端倉庫
- 推送至遠端庫
- 倉庫克隆
- 建立分支
- 檢視目前分支
- 合并分支
- 删除分支
- 檢視分支合并圖
- Fast-forward模式
- 儲藏
- 強制删除分支
- 檢視遠端庫資訊
- 推送分支
- 建立分支并關聯
- 将本地分支與遠端分支相關聯
- 變基
- 标簽
- 建立标簽
- 檢視标簽
- 删除标簽
- 推送标簽
- 删除遠端标簽
- 忽略特殊檔案
- 配置别名
Git配置指令
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
設定全局的名稱和Email位址。
初始化Git倉庫
git init
初始化一個Git倉庫。
添加檔案到Git倉庫
git add <file>
将檔案添加到Git倉庫,可重複執行,并且也可以直接将
<file>
替換成
.
來将所有修改檔案添加到Git倉庫。
送出檔案到Git倉庫
git commit -m <message>
送出已添加的檔案,其中
<message>
為送出日志資訊。
掌握工作區的狀态
git status
檢視倉庫目前的狀态。
檢視修改内容
git diff
檢視檔案的修改内容。
檢視日志資訊
git log --pretty=oneline
檢視送出日志記錄。
版本回退
git reset --hard HEAD^
回退到上一個版本。其中
HEAD
代表目前版本,
HEAD^
代表上一個版本,
HEAD^^
代表上兩個版本,
HEAD~100
代表上100個版本。
git reset --hard commit_id
回退到指定送出id所對應的版本,其中
commit_id
不需要寫全。
檢視指令曆史
git reflog
檢視你執行過的每一次指令
暫存區的概念
通過
git add
指令将檔案放入暫存區,通過
git commit -m "xxx"
把檔案放入目前分支,此時暫存區就沒東西了。
一般的工作過程都是如此,工作區→暫存區→目前分支。
撤銷修改
git checkout -- <file>
撤銷工作區的修改。總之就是讓檔案回到上一次
commit
或者
add
時的狀态。
git reset HEAD <file>
撤銷暫存區的修改。
删除檔案
git rm <file>
将版本庫中的檔案删除。如果先将工作區的檔案手動删除了,那麼和
add
指令一緻。
遠端倉庫
ssh-keygen -t rsa -C "[email protected]"
建立自己的SSH key,一般存在于使用者主目錄的
.ssh
檔案夾中,裡面有
id_rsa
和
id_rsa.pub
兩個檔案,這兩個就是SSH Key的秘鑰對,
id_rsa
是私鑰,不能洩露出去,
id_rsa.pub
是公鑰,可以放心地告訴任何人。
建立完自己的SSH key之後,就可以在GitHub、碼雲之類的遠端倉庫平台上添加上你的公鑰,然後你就可以在該機器上進行推送了。
git remote add origin [email protected]:lxr17/learngit.git
将本地倉庫與遠端倉庫相關聯,其中
origin
為遠端倉庫的名字,也可以改成其他名字。
推送至遠端庫
git push -u origin master
把本地庫
master
分支的内容推送到遠端庫
origin
,
-u
指令會把本地
master
分支和
origin
遠端倉庫的
master
分支關聯起來,之後可以簡化指令。
git push origin master
把本地庫
master
分支的内容推送到遠端庫
origin
的
master
分支上。
倉庫克隆
git clone [email protected]:lxr17/learngit.git
從遠端克隆一個倉庫到本地。
建立分支
git checkout -b dev
建立一條
dev
分支并切換到
dev
分支上,其中
-b
表示建立并切換。
git branch dev
建立一條
dev
分支。
git checkout dev
切換到
dev
分支上。
檢視目前分支
git branch
檢視目前分支。
合并分支
git merge dev
将
dev
分支合并到目前分支上。
Fast-forward
的意思是表示此次合并為“快進模式”,也就是直接把
master
分支指向
dev
的目前送出,是以合并速度非常快。
當git無法自動合并分支時,就必須首先解決沖突。解決沖突後,再送出,合并完成。
解決沖突就是把git合并失敗的檔案手動編輯為我們希望的内容,再送出。
删除分支
git branch -d dev
删除
dev
分支。
檢視分支合并圖
git log --graph
Fast-forward模式
Fast forward
模式在删除分之後會丢掉分支資訊。如果要強制禁用
Fast-forward
模式,Git就會在
merge
時生成一個新的
commit
,這樣,從分支曆史上就可以看出分支資訊。
git merge --no-ff -m "message" dev
禁用
Fast forward
模式下的合并分支,将
dev
分支合并到目前分支,由于會建立一次新的
commit
,是以要加上
-m
參數。
合并分支時,加上
--no-ff
參數就可以用普通模式合并,合并後的曆史有分支,能看出來曾經做過合并,而
Fast forward
合并就看不出來曾經做過合并。
儲藏
git stash
可以把目前工作現場“儲藏”起來,等以後恢複現場後繼續工作。
git stash list
可以擷取到“儲藏”的工作現場。
git stash apply
用于恢複工作現場。
git stash drop
用于删除stash内容。
git stash pop
用于恢複工作現場的同時删除stash内容。
git stash apply [email protected]{0}
恢複至指定的
stash
。
強制删除分支
git branch -D dev
強制删除
dev
分支,用于丢棄一個沒有被合并過的分支。
檢視遠端庫資訊
git remote -v
檢視遠端庫詳細資訊。
git remote
檢視遠端庫資訊。
推送分支
git push origin dev
将本地的
dev
分支推送到遠端庫
origin
上。
當從遠端庫
clone
時,預設情況下會将本地的
master
分支與遠端的
master
分支相關聯。
建立分支并關聯
git checkout -b dev origin/dev
建立一個本地分支
dev
,并與遠端庫
origin
的
dev
分支相關聯。
将本地分支與遠端分支相關聯
git branch --set-upstream-to=origin/dev dev
将本地分支
dev
與遠端庫
origin
的
dev
分支相關聯。
變基
git rebase
把本地未
push
的分叉送出曆史整理成直線。(不是很明白)
标簽
就是一個讓人容易記住的有意義的名字,它跟某個
commit
綁在一起。
建立标簽
git tag v1.0
在最新送出的
commit
上打标簽。
git tag v0.9 f52cb63
給某次commit打标簽。
git tag -a v0.1 -m "version 0.1 released" 1094adb
建立帶有說明的标簽。
檢視标簽
git tag
檢視所有标簽。
git show v0.9
檢視标簽的詳細資訊。
删除标簽
git tag -d v0.1
用于删除某個标簽。
推送标簽
git push origin v1.0
将标簽推送到遠端庫。
git push origin --tags
将本地所有标簽推送到遠端庫。
删除遠端标簽
git push origin :refs/tags/v0.9
用于删除一個遠端标簽。
忽略特殊檔案
在Git工作區的根目錄下建立一個特殊的
.gitignore
檔案,然後把要忽略的檔案名填進去,Git就會自動忽略這些檔案。
檢驗
.gitignore
的标準是
git status
指令是不是說
working directory clean
。
配置别名
git config --global alias.st status
告訴Git,以後用
st
代替
status
。