Git使用筆記
- 2019 年 10 月 7 日
- 筆記
版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/github_39655029/article/details/101156022
簡介
- 定義 Git,最先進的分散式版本控制系統之一,最初是由Linux之父Linus為了更好管理開源Linux系統而開發的一個軟體;
- 下載:https://git-scm.com/downloads
- 安裝
- Linux:
sudo apt-get install git - Windows、macOS通過官網下載安裝包後進行安裝即可;
- Linux:
- 設置
安裝完成後,需要進行以下設置: ``` $ git config --global user.name "user name" $ git config --global user.email "[email protected]" # 可選,讓Git命令行顯示顏色 $ git config --global color.ui true ```
---
版本庫創建及管理
- 如何創建版本庫
- 先創建一個空文件夾,Windows下不再介紹,Linux以及macOS下可通過
$ mkdir gitlearn命令創建; - 通過
$ git init將剛才創建的目錄變為可管理的倉庫;

- 如何將文件添加到版本庫
- 在剛才創建的空文件夾中,添加你自己的文件,以readme.md為例;
- 用
git add命令將文件添加到倉庫;
$ git add readme.md
- 用
git commit將文件提交到倉庫;
$ git commit -m "this is a readme.md file."
- 如何查看倉庫修改的內容
- 用
git status查看倉庫當前狀態; - 用
git diff filename查看文件具體修改的內容;
$ git diff readme.txt
git log查看最近到最遠的提交日誌
$ git log --pretty=oneline
- 回退之前的版本,先用
git log查看提交歷史,以確定commitid,回退後,當想要重返未來版本時,用git reflog查看命令歷史,從而確定重返版本commitid,HEAD指向當前版本,為了在版本的歷史之間穿梭,使用命令git resrt --hard commit_id
$ git reset --hard HEAD^
- 直接丟棄工作區的某文件修改內容時,使用命令
git checkout -- filename
$ git checkout -- readme.md
- 刪除文件,先在工作區將文件刪除後,然後使用命令
git rm將版本庫中文件刪除,然後通過git commit提交
$ git rm readme.md $ git commit -m "delete readme.md"
遠程倉庫
- 為了將本地Git和遠程Github相連接,可以進行如下操作:
- 確定`.ssh`目錄下是否存在文件`id_rsa`和`id_rsa.pub`,有則複製`id_rsa.pub`中內容明將其添加到Github中的SSH Key,建立兩者聯繫,可以在本地管理, - 不存在則通過如下命令生成;
$ ssh-keygen -t rsa -C "[email protected]"
- 如何添加遠程倉庫
- 在本地通過如下命令建立本地倉庫與遠程倉庫進行管理,然後就可以將本地倉庫內容推送到Github倉庫; ``` $ git remote add origin [email protected]:cunyu1943/gitlearn.git ```
- 從遠程倉庫克隆島本地: ``` $ git clone https://github.com/cunyu1943/the_journey_to_nlp.git ```
- 將本地倉庫內容推送到遠程倉庫;
# 第一次推送 $ git push -u origin master # 之後的推送 $ git push origin master
分支管理
- 創建並切換分支
$ git switch -c dev # 等價命令 $ git checkout -b dev # 等價命令 $ git branch dev $ git checkout dev
- 查看當前分支,前邊標有$*$代表當前分支,切換回$master$分支;
$ git branch $ git checkout/switch master
- 將$dev$分支合併到$master$分支;
$ git merge dev
- 刪除分支;
$ git branch -d dev
- 強制刪除未合併分支;
$ git branch -D dev
- 查看分支合併圖
$ git log --graph
多人協作
- 查看遠程庫資訊:
git remote -v; - 本地新建分支若不推送到遠程,則對其他人不可見;
- 本地推送到遠程庫,
git push origin branch-name,若推送失敗,則用git pull抓取遠程新提交;
$ git push origin master # 若推送失敗,則先執行如下命令 $ git pull
- 本地創建和遠程分支對應分支,
git checkout -b branch-name origin/branch-name
$ git checkout -b dev origin/dev
- 建立本地分支和遠程分支的關聯,
git branch --set-upstream branch-name origin/branch-name
$ git branch --set-upstream dev origin/dev
- 從遠程抓取分支則使用
git pull,若有衝突,則先解決處理後再處理;
---
標籤管理
- 先切換到需要打標籤的分支
git switch branch-name; - 打標籤並查看;
# 打一個名為"v1.0"的標籤 $ git tag v1.0 # 查看所有標籤 $ git tag
- 查看標籤資訊,
git show;
$ git show v1.0
- 創建帶有說明的標籤,用
-a打標籤名,-m指定說明文字;
$ git tag -a v1.0 -m "version 1.0 released" 132gsfh
- 刪除標籤,本地使用
git tag -d,遠程則使用git push origin :refs/tags/
# 刪除本地標籤 $ git tag -d v30.0 # 刪除遠程標籤 $ git push origin :refs/tags/v30.0
- 將標籤推送到遠程
git push origin
# 推送某一標籤 $ git push origin v1.0 # 推送所有標籤 $ git push origin --tags
建立Github和Gitee共同遠程連接
- 刪除某一關聯的遠程庫,
git remote rm
$ git remote rm origin
- 關聯Gitee遠程庫,
git remote add [email protected]:/.git
$ git remote add gitee [email protected]:cunyu1943/notes.git
- 關聯Github遠程庫,
git remote add [email protected]:/.git
$ git remote add github [email protected]:cunyu1943/notes.git
-推送到Gitee和Github
# 推送到Gitee $ git push gitee master # 推送到Github $ git push github master
其他小技巧
- 忽略特殊文件
此時需要編寫`.gitignore`文件,文件要放到版本庫中,且可以對`.gitignore`進行版本管理;
- 配置命令別名
# 舉例 $ git config --global alias st status $ git config --global alias checkout co $ git config --global alias commit cm