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通過官網下載安裝包後進行安裝即可;
  • 設置
    安裝完成後,需要進行以下設置:  ```  $ git config --global user.name "user name"  $ git config --global user.email "[email protected]"  # 可選,讓Git命令行顯示顏色  $ git config --global color.ui true  ```

---

版本庫創建及管理

  • 如何創建版本庫
  1. 先創建一個空文件夾,Windows下不再介紹,Linux以及macOS下可通過$ mkdir gitlearn命令創建;
  2. 通過$ git init將剛才創建的目錄變為可管理的倉庫;
  • 如何將文件添加到版本庫
  1. 在剛才創建的空文件夾中,添加你自己的文件,以readme.md為例;
  2. 用git add命令將文件添加到倉庫;
$ git add readme.md
  1. 用git commit將文件提交到倉庫;
$ git commit -m "this is a readme.md file."
  • 如何查看倉庫修改的內容
  1. 用git status查看倉庫當前狀態;
  2. 用git diff filename查看文件具體修改的內容;
$ git diff readme.txt
  1. git log查看最近到最遠的提交日誌
$ git log --pretty=oneline
  1. 回退之前的版本,先用git log查看提交歷史,以確定commitid,回退後,當想要重返未來版本時,用git reflog查看命令歷史,從而確定重返版本commitid,HEAD指向當前版本,為了在版本的歷史之間穿梭,使用命令git resrt --hard commit_id
$ git reset --hard HEAD^
  1. 直接丟棄工作區的某文件修改內容時,使用命令git checkout -- filename
$ git checkout -- readme.md
  1. 刪除文件,先在工作區將文件刪除後,然後使用命令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
$ git remote add gitee [email protected]:cunyu1943/notes.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

Tags: