樹莓派使用Git

陳拓 [email protected] 2020/03/06-2020/03/08

0. 概述

Gitee和GitHub都是基於Git的代碼管理平臺。

Github是國外的,Gitee是國內的。

Gitee和GitHub都要用Git命令操作。

要使用Git命令先要在電腦上安裝Git工具軟件。

下面在樹莓派上以Gitee爲例演示Git的基本操作。

1. 安裝git

在電腦上用putty登錄樹莓派,如果不熟悉請看《電腦連接樹莓派3B+》
https://blog.csdn.net/chentuo2000/article/details/103332186

  • 測試git --version

如果沒有安裝。

  • 安裝git

sudo apt-get install git

2. 在碼雲gitee上創建一個倉庫

https://gitee.com/chentuo2000/My-ESP8266

3. Git 全局設置

  • 用戶名

告訴git你的名字,這個名字會出現在你的提交記錄中。

git config --global user.name "chentuo"

  • Email

然後是你的Email,同樣,這個Email也會出現在你的提交記錄中,請儘量保持此Email和您的碼雲的註冊Email一致。

git config --global user.email "[email protected]"

  • 查看全局設置

ls -la

全局設置保存在.gitconfig中,查看全局設置cat .gitconfig。

4. Git 基本操作

4.1 clone

把我在gitee上創建的倉庫克隆到本地。

git clone https://gitee.com/chentuo2000/My-ESP8266.git

 

ls –l

cd My-ESP8266/

這個目錄和普通的目錄有什麼不同呢?ls –la

它比普通的目錄多了一個.git目錄,裏面存放倉庫信息。

4.2 pull

在雲端創建一個子目錄tarballs,用git pull命令同步到本地倉庫。

git pull

4.3 push

往本地目錄tarballs中複製一個文件。

cp esp/esp-open-sdk/./crosstool-NG/.build/tarballs/binutils-2.25.1.tar.gz My-ESP8266/tarballs/

cd My-ESP8266/

  • git status

命令用於查看項目的當前狀態。

  • git add

命令將該文件添加到緩存。

git add tarballs/binutils-2.25.1.tar.gz

再看看狀態的變化,狀態命令加-sb參數,以獲得簡短的結果輸出。

git status -sb

綠色的A表示Add成功。

  • git commit

然後使用git commit -m "註釋"命令將add過的內容提交到本地倉庫,並添加一些註釋信息,方便閱讀。

git commit -m "編譯esp-open-sdk的依賴庫"

再看看狀態:

git status -sb

git status

提示:在主分區,1個提交的分支前綴是origin/master,使用git push發佈本地提交。

工作樹已經清空了。

  • git push

同步雲端倉庫git push

  • 查看狀態

git status

git status -sb

上傳完成,沒有提交的文件了,工作樹清空。

  • 看看雲端

5. 多文件上傳

注意:一次上傳有100MB的限制。

5.1工作區,緩存區,本地倉庫區,雲端倉庫

工作區就是上面我們git clone下來的整個項目目錄My-ESP8266。

緩存區是一個隱藏的區域,用git add添加。

本地倉庫也是隱藏的,用git commit命令將緩存區的文件提交到本地倉庫。

用git push將本地倉庫同步到雲端。

5.2 git add多個文件

上傳文件列表ls -l tarballs/

  • 添加多個文件到緩存

git add file_1 file_2 file_3

多個文件用 空格 隔開。

文件比較多時可以使用通配符*添加所需要的文件。

也可以整個目錄add,像這樣:git add . 意思是把當前目錄(.表示當前目錄)裏面的變動都加到緩存。

或者用git add tarballs/g*將目錄tarballs中以g開頭的文件添加到緩存。

或者像下面。

  • 添加目錄tarballs到緩存

git add tarballs

git status

git status –sb

看看目錄

可以看到,只添加了新文件,之前我們上傳過的文件binutils-2.25.1.tar.gz,因爲沒有變化,所以並沒有添加到緩存。

  • git reset HEAD

用use git reset HEAD <file>命令可以從緩存移除文件。例如:

git reset HEAD tarballs/cloog-0.18.4.tar.gz

git status

git status -sb

可以看到tarballs/cloog-0.18.4.tar.gz已經從緩存中移除了。

git reset命令中的HEAD指向當前我們所在版本庫,是一個地址指針的頭。

看看日誌git log

有3個commit,每個commit對應一個指針:

e07cfbf37e2af1fc1ded1b196178b0231e88a9c4

2eae215d0213343fa07f66a5d1116e24ae2f8406

d9c752f40aa055831eefa02b36b5e928c7fca155

再看看簡短日誌git log –oneline(一條提交信息用一行顯示)

e07cfbf、2eae215、d9c752f是3個指針地址的頭,HEAR當前指向master地址的頭e07cfbf

所以下面兩句作用是一樣的。

git reset HEAD tarballs/cloog-0.18.4.tar.gz

git reset e07cfbf tarballs/cloog-0.18.4.tar.gz

例如:

git reset e07cfbf tarballs/expat-2.1.0.tar.gz

git status -sb

緩存清空了,有2個未操作的新文件。

之前我們上傳過的文件binutils-2.25.1.tar.gz有問題,重新下載,和之前比較大小有變化:

添加目錄tarballs到緩存

git add tarballs

看看狀態:

tarballs/binutils-2.25.1.tar.gz是修改過Modified的文件

tarballs/cloog-0.18.4.tar.gz

tarballs/expat-2.1.0.tar.gz

是新Add的文件,也就是沒有和雲端同步過的文件。

5.3 git commit多個文件

git commit -m '提交多個文件'

看狀態:

可以用git commit --amend打開編輯器修改。

如果想撤回,可以用:

git reset --soft撤回git commit –m

git reset --mix撤回git commit –m和git add

git reset –-hard回退git commit –m、git add和工作區

5.4 git push多個文件

同步雲端倉庫git push

  • 看狀態

  • 看雲端倉庫

5.5 回退

Your branch is ahead of 'origin/master' by 2 commits.

這表示在你之前已經有2個commit而沒有push到遠程分支上,所以需要先git push origin **將本地分支提到遠程倉庫。

如果不想同步雲端,也可以用git reset --hard HEAD~x取消,這裏的x表示的就是在這之前已經有多少次的提交,這句命令的意思就是直接回退到x 個commit之前

注意:這兩次提交所改動的代碼文件都沒有了,慎用!

在我們這裏:

git reset --hard HEAD~2

git status

git status -sb

緩存已經清空了,目錄中相關的文件也刪除了。

6. 在本地創建一個倉庫

在上面的操作中我們先在gitee上創建倉庫,再克隆到本地。如果我們在本地已經有了一個項目目錄要上傳的gitee上,可以像下面這樣操作。

  • 創建本地倉庫

mkdir My-ESP32

cd My-ESP32

git init

git init的功能就是將本地目錄初始化爲本地倉庫。

查看目錄ls –la

多了一個隱藏目錄.git

查看狀態git status

  • 創建一個文件

touch README.md

nano README.md

寫一些內容,保存,退出。

查看狀態git status

git status –sb

?? README.md是一個新文件。

  • git add README.md

查看狀態:

  • git commit -m "first commit"

查看狀態:

  • 創建雲端倉庫

  • 關聯本地倉庫和雲端倉庫

git remote add origin https://gitee.com/chentuo2000/My-ESP32.git

執行完這個命令在本地的.git/config中寫了遠程信息[remote "origin"]

Origin是Git默認的遠程倉庫名字,也可以改成別的名字,但最好是遵從習慣,這樣你一看到origin就知道是遠程倉庫。

  • 同步雲端倉庫

git push -u origin master

master是默認的本地分支,origin/master是默認遠程分支origin/master。

查看雲端倉庫:

7. 分支

7.1 默認分支

Origin默認遠程服務器

origin/master默認遠程分支

master默認本地分支

7.2 分支的用途

  • 多人開發時

爲了不受其他開發人員的影響,每個人可以在主分支上建立自己的專屬分支,自己的開發工作完成後可以將自己分支上的工作合併到主分支。

因爲每一次提交的歷史記錄都會被保存,所以當發生問題時,定位和修改造成問題的提交就容易多了。

Git分支是由指針管理的,所以創建、切換、合併、刪除分支都非常快,非常適合大型項目的開發。

主分支(默認創建的Master分支)只用來發布重大版本(對於每個版本可以創建不同的標籤,以便於查找),日常開發應該在另一條分支上進行。

  • 多種方案時

例如,在一個項目的進行中,你遇到了一個問題,解決方案不確定,但是你不希望因此影響到當前的開發,那麼你可以爲此創建一個分支,分支包含目前主幹上的所有內容,然後在分支上測試你的方案,而絲毫不影響主幹的進行;如果可行那麼可以通過合併分支功能將你的更新應用到主幹,反之你可以放棄它。

7.3 分支操作

  • 查看分支

1) 查看本地分支git branch

2) 查看遠程分支git branch –-r

3) 查看所有分支git branch –-all

分支前有一個 * 號代表當前分支。

  • 創建並切換分支

1) 創建分支:git branch <分支名稱>

2) 切換分支:git checkout <分支名稱>

3) 創建並切換分支:git checkout -b <分支名稱>

  • 合併分支

1) 先切換到master分支:git checkout master

2) 再將分支的代碼合併到master:git merge <分支名稱>

在合併分支的時候如果代碼會有衝突,需要自己去處理這些衝突。

  • 刪除分支

1) 刪除本地分支:git branch -d <分支名稱>

2) 刪除遠程分支:git push origin <分支名稱>

  • 恢復分支

誤刪的分支可以恢復。

1) 使用git log查出分支的提交號

2) git branch <分支名稱> <提交號>

即創建提交號歷史版本的一個分支,分支名稱隨意。

  • 查詢分支

1) 查詢分支:git log

2) 查詢分支簡短顯示:git log –oneline

3) 查看分支圖:git log --graph

可以帶參數:

git log --graph --pretty=oneline --abbrev-commit

  • 重命名分支

git branch -m <當前分支名> <新的分支名>

 

其他的用法請看後面的參考文檔。

參考文檔

  1. Git官方文檔
    https://git-scm.com/book/zh/v2
  2. Gitee官方文檔
    https://gitee.com/oschina/git-osc/wikis/%E5%B8%AE%E5%8A%A9
  3. git操作手冊
    https://www.jianshu.com/p/05a22c6a4131
  4. gitee 命令集合
    https://www.cnblogs.com/TF511/articles/10645857.html
  5. Git使用教程---以Gitee碼云爲例
    https://www.jianshu.com/p/a146bd847a8d
  6. git分支
    https://blog.csdn.net/qq_36672905/article/details/82776293?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章