Git科普文,Git基本原理&各種騷操作
阿新 • • 發佈:2020-08-03
## Git簡單介紹
`Git`是一個分散式版本控制軟體,最初由`Linus Torvalds`創作,於2005年以`GPL`釋出。最初目的是為更好地管理`Linux`核心開發而設計。
## Git工作流程以及各個區域
![](https://img.iisheng.cn/git-area.png?01)
- Workspace:工作區
- Staging/Index:暫存區
- Local Repository:本地倉庫(可修改)
- /refs/remotes:遠端倉庫的引用(不可修改)
- Remote:遠端倉庫
## Git檔案狀態變化
![](https://img.iisheng.cn/git-file-status.png?01)
## Git各種命令
### Git簡單命令
```bash
# 在當前目錄新建一個git倉庫
git init
# 開啟git倉庫圖形介面
gitk
# 顯示所有變更資訊
git status
# 刪除所有Untracked files
git clean -fd
# 下載遠端倉庫的所有更新
git fetch remote
# 下載遠端倉庫的所有更新,並且Merge
git pull romote branch-name
# 檢視上次commit id
git rev-parse HEAD
# 將指定分支合併到當前分支
git merge branch-name
# 將最近的一次commit打包到patch檔案中
git format-patch HEAD^
# 將patch檔案 新增到本地倉庫
git am patch-file
# 檢視指定檔案修改歷史
git blame file-name
```
### Git常用命令
#### git clone
```bash
# 將遠端git倉庫克隆到本地
git clone url
# 將遠端git倉庫克隆到本地
git clone -b branch url
```
#### git stash
```bash
# 將修改過,未add到Staging區的檔案,暫時儲存起來
git stash
# 恢復之前stash儲存的內容
git stash apply
# 儲存stash 並寫message
git stash save "stash test"
# 檢視stash了哪些儲存
git stash list
# 將stash@{1}儲存的內容還原到工作區
git stash apply stash@{1}
# 刪除stash@{1}儲存的內容
git stash drop stash@{1}
# 刪除所有快取的stash
git stash clear
```
#### git config
```bash
# 配置git圖形介面編碼為utf-8
git config --global gui.encoding=utf-8
# 設定全域性提交程式碼的使用者名稱
git config --global user.name name
# 設定全域性提交程式碼時的郵箱
git config --global user.email email
# 設定當前專案提交程式碼的使用者名稱
git config user.name name
```
#### git remote
```bash
# 顯示所有遠端倉庫
git remote -v
# 增加一個新的遠端倉庫
git remote add name url
# 刪除指定遠端倉庫
git remote remove name
# 獲取指定遠端倉庫的詳細資訊
git remote show origin
```
#### git add
```bash
# 新增所有的修改到Staging區
git add .
git add --all
# 新增指定檔案到Staging區
git add file
# 新增多個修改的檔案到Staging區
git add file1 file2
# 新增修改的目錄到Staging區
git add dir
# 新增所有src目錄下main開頭的所有檔案到Staging區
git add src/main*
```
#### git commit
```bash
# 提交Staging區的程式碼到本地倉庫區
git commit -m "message"
# 提交Staging中在指定檔案到本地倉庫區
git commit file1 file2 -m "message"
# 使用新的一次commit,來覆蓋上一次commit
git commit --amend -m "message"
# 修改上次提交的使用者名稱和郵箱
git commit --amend --autho