前沿:
1. 本文是學習 廖雪峰git教程 時的一些筆記,大家想看詳細版請閱讀廖雪峰git教程
2.本文中使用到的系統版本為windows10
一. 安裝git
下載安裝程序 -->國內鏡像
安裝
安裝完成,在開始菜單中打開
Git --> Git Bash
在打開的窗口中輸入配置信息
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
二. 創建版本庫
相關知識點:
此處用到一些命令行語句mkdir git
-->創建一個名字為git的文件夾;cd git
-->進入git文件夾 pwd
-->查看當前所在位置
- 創建gitlearn文件夾作為版本庫保存地址(請確保地址沒有中文)
$ mkdir gitlearn
$ cd gitlearn
$ pwd
/Users/michael/gitlearn
- 初始化版本庫
$ git init
Initialized empty Git repository in /Users/michael/gitlearn/.git/
三. 版本庫文件的增刪改查與版本選擇
相關知識點:
1. 工作區:當前的gitlearn
文件夾即為一個工作區
2. 版本庫:gitlearn
文件夾中隱藏的.git
目錄為版本庫(其不算工作區的內容)
3. 暫存區:.git
目錄里面的stage
文件(或者時index
文件)
4. 暫存區存放的時add
命令添加的文件,通過commit
命令提交更改后,暫存區的內容就被提交到當前分支
-
新增文件
- 將文件放入gitlearn文件夾下(一定要是這個文件夾下,不然git會找不到文件)
兩種方法- 將編輯好的文件直接放入gitlearn文件夾下
- 使用
vim readme.txt
創建一個readme.txt文件并可以直接編輯文本內容,編輯完成后按esc
,:
,然后鍵入wq
即可保存文件并跳出vim模式進入ex模式
- 使用
git add
命令
$ git add readme.txt
- 使用
git commit
命令
$ git commit -m "wrote a readmw file" /*-m 后面輸入的是本次提交的說明*/
如果希望一次性添加多個文件可以使用以下命令
$ git add file1.txt $ git add file2.txt file3.txt $ git commit -m "add 3 files."
- 將文件放入gitlearn文件夾下(一定要是這個文件夾下,不然git會找不到文件)
文件修改
需要git add
和git commit
命令,與添加文件操作一樣文件查詢
/*相關命令*/
git status -->倉庫當前的狀態
git diff -->當前版本與上次提交的版本之間的不同
git log -->歷史提交版本信息
git reflog -->歷史版本操作記錄
-
文件刪除
- 使用
git rm
命令(或者直接在工作區中將文件刪除)
$ git rm readme.txt
- 使用
git commit
命令
$ git commit -m "remove readme.txt"
- 使用
-
撤銷修改
- 還未
add
的修改撤銷(需要撤銷修改的文件還沒有放到暫存區)
/*撤銷`readme.txt`的修改(-- 很重要,而且前后都要有空格)*/ $ git checkout -- readme.txt
- 已經
add
但是還沒有commit
的修改撤銷
/*將暫存區對readme.txt的修改退回到工作區*/ $ git reset HEAD readme.txt /*撤銷工作區中`readme.txt`的修改*/ $ git checkout -- readme.txt
- 已經
commit
的修改撤銷(提交到本地庫)
/*退回到上個版本*/ $ git reset --hard HEAD^
- 已經推送到遠程版本庫
無法在本地撤銷!!!
- 還未
-
版本選擇
-
$ git reset --hard HEAD^
-->退回上個版本 -
$git reset --hard 1094a
-->退回到版本號中帶有1094a
的版本(通常都是版本號前幾位數字)
-
四. 遠程版本庫
創建遠程版本庫的目的是為了備份,同時充當主機服務器的作用
-
創建(使用github作為遠程倉庫)
- 創建SSH key(使用Git Bash)
/*使用以下命令然后一路回車(默認無密碼)*/ $ ssh-keygen -t rsa -C "youremail@example.com"
以上操作成功后,在用戶主目錄里面找到
.ssh
目錄,里面有id_rsa
和id_rsa.pub
兩個文件,這兩個就是SSH Key的秘鑰對,id_rsa
是私鑰,不能泄露出去,id_rsa.pub
是公鑰,可以放心地告訴任何人- 登錄github,打開“Account settings”,“SSH Keys”頁面;點“Add SSH Key”,填上任意Title,在Key文本框里粘貼id_rsa.pub文件的內容;然后點擊“Add Key”,完成!
-
將本地庫推送到遠程庫
- 創建新git庫
登錄github,Create a new repository - 復制git庫SSH地址
git@github.com:kyle-yangkai/gitlearnning.git
(也可以使用https地址)然后輸入命令$ git remote add origin git@github.com:kyle-yangkai/gitlearnning.git
- 將本地庫所有內容推送到遠程庫中
$ git push -u origin master /*-u只需要第一次推送的時候使用 如果要推送到遠程的dev分支就將master換成dev*/
- 新建遠程分支
$ git push origin <當前分支>:<新分支名>
- 刪除遠程分支(兩種方法)
-
$ git push origin :<name>
-->推送空分支到遠程分支 -
$ git push origin --delete <name>
-->直接刪除遠程分支
-
- 創建新git庫
從遠程庫克隆到本地庫
$ git clone git@github.com:kyle-yangkai/gitlearnning.git
五. 分支管理
-
一次完整的分支操作
/*相關命令*/ $ git branch -->查看分支 $ git branch -d <name> -->刪除分支 (如果沒有合并過請使用 -D 強制刪除) $ cat readme.txt --> 查看readme.txt中的內容 $ git branch <name> -->創建分支 $ git checkout <name> -->切換到分支 $ git checkout -b <name> --> 創建 并切換分支 $ git merge <name> --no--ff --> 合并分支到當前分支( --no--ff 為普通模式合并,不加該參數則為快速合并, 歷史沒有該合并記錄) $ git branch -d <name> --> 刪除分支
- 創建分支
/*git checkou 命令加上 -b 表示創建并切換 相當于$ git branch dev, git checkout dev這兩條命令 */ $ git checkout -b dev
- 修改分支內容并提交(同上面版本庫文件修改步驟)
- 切換回
master
分支并將dev
分支的內同合并到master
上
$ git merge dev
- 刪除
dev
分支
$ git branch -d dev
注意:
1. 各分支之間其實沒有任何差別,任何分支都可以稱為主分支,我們一般默認master分支為主分支,最終版本都會合并到master分支中
2. 如果兩個分支在同一個文件中都做了不同的修改,那么此時合并操作不會完成,我們需要手動修改該文件,通過$ git status
查詢沖突文件,然后通過$ cat <file>
查看沖突內容,修改完成后再進行合并操作 -
bug分支處理
/*相關命令*/ $ git stash-->保存當前還未提交的工作狀態,恢復到最近一次提交的狀態 $ git stash list --> 查看當前stash保存的狀態列表 $ git stash apply --> 恢復上次stash保存的狀態 $ git stash pop -->恢復上次stash保存的狀態并刪除該次stash狀態 $ git stash drop --> 刪除上次保存的狀態 $ git merge <name> --no-ff --> 合并分支到當前分支( --no-ff 為普通模式合并,不加該參數則為快速合并, 歷史沒有該合并記錄) $ git branch -d <name> --> 刪除分支
- 使用
git add -A
暫存當前dev
分支新修改和新增的還不能提交的內容 - 使用
git stash
保存當前狀態 - 確定需要修復的分支,如果是
maste
分支,先返回到master
分支 - 創建
issue-001
分支,完成修復不過的代碼提交 - 通過master合并完成bug修復
- 返回
dev
分支通過$ git stash apply
恢復之前的狀態,急需工作
- 使用
六. 標簽管理
- 創建標簽
-
$ git tag v1.0
--> 給當前分支打標簽v1.0 該標簽默認搭載最新提交的commit上面 -
$ git tag v0.9 f24sweq
-->給commit id是f24sweq
的提交打上標簽v0.9 -
$ git tag -a v0.1 -m "explain" f24sweq
-->-a
為標簽名-m
為說明文字
-
- 查看標簽
-
$ git show v0.1
-->查看該標簽的說明文字
-
- 操作標簽
- 本地標簽操作
-
$ git tag -d v0.1
-->刪除本地v0.1標簽
-
- 遠程標簽操作
-
$ git push origin v1.0
-->將v1.0標簽推送到遠程 -
$ git push origin --tags
-->推送所有本地標簽到遠程 -
$ git push origin :refs/tags/v0.9
--> 刪除遠程v0.9標簽
-
- 本地標簽操作
七. 自定義Git
- 忽略特殊文件
- 配置別名
- 全局配置
$ git config --global alias.<自定義命令> <git命令>
例子-->$ git config --global alias.ci commit
- 當前倉庫配置 --> 每個倉庫的Git配置文件都放在.git/config文件中,在該文件中加上以下內容
[alias] co = checkout ci = commit br = branch st = status
- 全局配置