- 一、下載和安裝
- 下載
- 安裝
- 二、下載註冊git賬號
- 一、進入官網
- 二、進入填寫註冊自己的資訊
- 三、進入介面進行初始化git遠端倉庫
- 四、將遠端倉庫連結到本地倉庫
- 第一步、進入遠端倉庫
- 第二步、在終端執行配置命令
- 五、拉取操作的練習
- 1.git最簡單使用教程
- 2.常用的git命令機器說明
- 1.1 建議
- 1.2 基礎知識
- Git 建立倉庫
- Git 基本指令的使用
- Git的分支管理
- Git檢視提交歷史
- Git 標籤
- Git 遠端倉庫
- 1.3 git高階用法
一、下載和安裝
下載
git的下載安裝的地址:
方式一 官網:https://git-scm.com/download/win
方式二 安裝包地址(直接複製到迅雷網盤):
https://objects.githubusercontent.com/github-production-release-asset-2e65be/23216272/5647eb2f-d063-4eea-a2ab-ad49f575b3d0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=releaseassetproduction%2F20240516%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240516T075904Z&X-Amz-Expires=300&X-Amz-Signature=02b61f63bbc2f80901ae5b116a056d781dc53553db75839395c450b717935ad9&X-Amz-SignedHeaders=host&actor_id=119971050&key_id=0&repo_id=23216272&response-content-disposition=attachment%3B%20filename%3DGit-2.45.1-64-bit.exe&response-content-type=application%2Foctet-stream
下載截圖:
安裝
-
安裝到非c盤的其他磁碟機代號:
-
勾選這些選項:
注:最後一個選項打勾的話,需要下載 Windows Terminal 配合 Git Bash使用
,如圖
然後其他預設安裝即可
一直點選next就好,畢竟我們只是做到能拉取倉庫檔案即可
安裝成功:
到這裡其他先別管了
二、下載註冊git賬號
一、進入官網
https://gitee.com/
二、進入填寫註冊自己的資訊
三、進入介面進行初始化git遠端倉庫
- 新建倉庫:
2.進行設定
3.進入這個介面
4.下拉選單進入設定
5.找到ssh公鑰
6.關於公鑰設定(先閱讀)
https://help.gitee.com/base/account/SSH公鑰設定
7.生成自己的公鑰資訊(一定要先閱讀官方文件這真的很重要!)
所以按照步驟來
win+R快捷鍵,在終端執行命令
ssh-keygen -t ed25519 -C "Gitee SSH Key"
執行結果:
此時按三次回車
輸出結果:
生成公鑰後,然後開啟自己的輸出公開金鑰的目錄
然後以記事本的方式開啟或者其他工具也行
將資訊複製到這個空白處:
輸入自己的馬雲的登陸密碼
新增成功!
然後驗證繫結是否成功
透過 ssh -T
測試,輸出 SSH Key 繫結的使用者名稱:
ssh -T git@gitee.com
Hi USERNAME! You've successfully authenticated, but GITEE.COM does not provide shell access.
正常來說是這樣的:
但是如果出現錯誤:
PS C:\Users\xiao> ssh -T git@gitee.com
git@gitee.com: Permission denied (publickey).
解決辦法:關閉終端,並且重啟終端:成功!
四、將遠端倉庫連結到本地倉庫
第一步、進入遠端倉庫
第二步、在終端執行配置命令
然後自己在工作路徑下面建立一個demo.txt上傳試試,並且執行下面的命令
D:\data\demo>mkdir demo-warehouse516
D:\data\demo>cd demo-warehouse516
D:\data\demo\demo-warehouse516>git init
Initialized empty Git repository in D:/data/demo/demo-warehouse516/.git/
D:\data\demo\demo-warehouse516>touch README.md
'touch' 不是內部或外部命令,也不是可執行的程式
或批處理檔案。
D:\data\demo\demo-warehouse516>git add README.md
fatal: pathspec 'README.md' did not match any files
D:\data\demo\demo-warehouse516>git remote add origin https://gitee.com/cqcq2022/demo-warehouse516.git
D:\data\demo\demo-warehouse516>git add demo.txt
D:\data\demo\demo-warehouse516>git commit -m "first commit"
[master (root-commit) a148499] first commit
1 file changed, 1 insertion(+)
create mode 100644 demo.txt
D:\data\demo\demo-warehouse516>git push -u origin "master"
會彈出這樣的介面,輸入自己的碼雲賬號和密碼即可!
顯示上傳成功!!!
重新整理介面看看效果:
也是成功了!
然後做到這一步,你可真的是太棒了!!!!!!!!!!!!!!!!!!!!!!
五、拉取操作的練習
1.git最簡單使用教程
隨便找一個別人的倉庫:https://gitee.com/open-visual/face-search
下滑選單
點選複製:
在自己的資料夾下建立自己的拉去操作並且將命令複製進去,並且回車:
等他clone成功即可:
拉取成功!
注意事項就是全域性配置在配置的時候複製最好,別百度,相信自己的倉庫!:
2.常用的git命令機器說明
1.1 建議
還是看官方文件,這真的很重要!
1.2 基礎知識
Git 建立倉庫
建立一個git倉庫有如下幾種方式:
- git init:初始化一個git倉庫
- git clone:clone一個git倉庫
下面對這幾種方式進行詳細介紹:
- git init
Git使用git init命令來初始化一個Git倉庫,執行完git init命令後,會生成一個.git目錄,該目錄包含了資源資料,且只會在倉庫的根目錄生成。
如果用當前目錄作為Git倉庫,則只需要執行如下命令:
git init
1
執行結果如下:
執行該命令之後,就可以在當前目錄下生成.init資料夾,並且會預設生成一個master分支。
如果要在指定的目錄下生成倉庫,則指令如下:
git init newDir
1
newDir為倉庫的路徑,執行完成之後,會在newDir目錄下生成一個.git目錄。具體的執行結果如下:
執行該命令之後,就可以在當前目錄下生成newtest資料夾,並在改資料夾下生成.init資料夾。
- git clone
使用git clone命令可以從Git倉庫複製專案,類似於SVN中的 svn checkout,命令格式為:
git clone <url> [directory]
1
url為git倉庫地址,directory為本地目錄,比如,要克隆某個Git 程式碼倉庫,可以用下面的命令:
git clone git://github.com/schacon/grit.git
1
執行完成之後會在當前目錄下生成倉庫,如果要指定目錄下生成,則可以在後面加一個具體的位置路徑,如:
git clone git://github.com/schacon/grit.git newgit
1
如下為clone一個倉庫的執行結果:
git clone 時,可以用不同的協議,包括 ssh, git, https 等,其中最常用的是 ssh,因為速度較快,還可以配置公鑰免輸入密碼,各種寫法格式如下:
git clone git@github.com/schacon/grit.git --SSH協議
git clone git://github.com/schacon/grit.git --GIT協議
git clone https://github.com/schacon/grit.git --HTTPS協議
123
Git 基本指令的使用
下面介紹一下git中常用的幾種命令:
- git config:配置資訊
- git add:新增檔案到快取命令
- git status:檢視檔案的狀態命令
- git diff:檢視更新的詳細資訊命令
- git commit:提交命令
- git reset HEAD:取消快取命令
- git rm:刪除命令
- git mv:移動或重新命名命令
下面對這幾個命令進行詳細介紹:
- git config
我們可以透過git config來配置使用者名稱和郵箱地址,便於我們將程式碼提交到遠端倉庫,具體格式如下:
git config --global user.name '你的使用者名稱'
git config --global user.email '你的郵箱'
12
- git add
git add 命令可將檔案新增到快取,如新專案中,新增所有檔案很普遍,可以使用如下命令:
git add .
1
當然我們也可以指定某一類檔案,如將java檔案新增到快取中,可以使用如下命令:
it add *.java
1
如:我們可以建立兩個檔案,將它新增的快取中,具體操作如下:
- git status
我們可以使用 git status 命令來檢視相關檔案的狀態,直接執行如下命令:
git status
1
如果有修改的檔案,則執行結果如下:
根據上面git status命令的提示內容,我們可以得到三種處理情況:
- 暫存檔案的命令:git add <檔名>
- 放棄未暫存檔案的修改命令:git checkout – <檔名>
- 將被修改的檔案暫存並提交的命令:git commit -a
如果你對Git的各種狀態比較熟悉了,也可以使用 git status -s 來檢視簡寫的狀態,這種簡寫的狀態和SVN上的差不多 M - 被修改,A - 被新增,D - 被刪除,R - 重新命名,?? - 未被跟蹤 等等。如果有修改的檔案,則執行結果如下:
- git diff
執行 git diff 來檢視更新的詳細資訊,與git status不同的是,git status只顯示更新的狀態,而 git diff 可以顯示已寫入快取與已修改但尚未寫入快取的改動的區別具體的詳細資訊。
- 尚未快取的改動:git diff
- 檢視已快取的改動: git diff --cached
- 檢視已快取的與未快取的所有改動:git diff HEAD
- 顯示摘要而非整個 diff:git diff --stat
如:我們在修改一下test.txt檔案內容,使用git diff檢視修改詳細資訊:
之後我們將修改的內容add到快取中,再使用git diff檢視修改詳細資訊:
- git commit
git commit 將快取區內容新增到倉庫中,可以在後面加-m選項,以在命令列中提供提交註釋,格式如下:
git commit -m "第一次版本提交"
1
如果你覺得 每次 commit之前要add一下,想跳過add這一步,可以直接使用 -a選項,如:
git commit -am "第一次版本提交"
1
如:我們可以建立一個檔案,並將它新增打快取,之後在提交,具體操作如下:
- git reset HEAD
git reset HEAD 命令用於取消已快取的內容,如我們要取消已提交的test.txt檔案,可以如下使用:
git reset HEAD test.txt
1
執行完之後,再使用commit提交時,test.txt檔案不會被提交。
如:我們先修改test1.txt,test2.txt檔案,之後再都新增到快取,然後再使用git reset HEAD命令恢復test1.txt,最後再使用提交,具體操作如下:
可以看出,修改的test1檔案經過git reset HEAD後,沒有被提交上去。簡而言之,執行 git reset HEAD 以取消之前 git add 新增。
- git rm
如果只是簡單地從工作目錄中手工刪除檔案,執行 git status 時就會在 Changes not staged for commit 的提示。要從 Git 中移除某個檔案,就必須要從已跟蹤檔案清單中移除,然後提交。可以如下使用:
git rm <file>
1
如果刪除之前修改過並且已經放到暫存區域的話,則必須要用強制刪除選項 -f
git rm -f <file>
1
如果把檔案從暫存區域移除,但仍然希望保留在當前工作目錄中,換句話說,僅是從跟蹤清單中刪除,使用 --cached 選項即可
git rm --cached <file>
1
可以遞迴刪除,即如果後面跟的是一個目錄做為引數,則會遞迴刪除整個目錄中的所有子目錄和檔案:
git rm –r *
1
如:我們移除上面所建立的hello.java檔案:
- git mv
git mv 命令用於移動或重新命名一個檔案、目錄、軟連線,如要將一個test.txt檔案重新命名為newtest.txt,則可以使用如下命令:
git mv test.txt newtest.txt
1
如:我們將上面的test1.txt檔案重新命名為test.txt:
Git的分支管理
幾乎每種版本控制系統都支援分支管理,使用分支我們可以從主幹中分離出來,然後繼續開發,不影響主幹。下面介紹一下Git中分支常用的命令:
- git branch:檢視分支命令
- git branch (branchname):建立分支命令
- git checkout (branchname):切換分支命令
- git merge:合併分支命令
- git branch -d (branchname):刪除分支命令
下面分別對這些命令進行詳細介紹:
- git branch
git branch可以檢視分支,也可以建立分支,如果沒有引數時,git branch會列出你在本地的分支;如果有引數時,git branch就會建立改引數的分支。
如果要檢視分支,命令格式如下:
git branch
1
在bash執行的效果如下圖所示:
當我們想建立分支時,可以在後面加引數,命令格式如下:
git branch branchname
1
如我們想建立一個test的分支,可以如下操作:
現在我們可以看到,多了一個新的分支test。而master分支在我們執行git init的時候,預設情況下 Git 就會為你建立 master 分支。
- git checkout (branchname)
git checkout可以切換分支,命令格式如下:
git checkout branchname
1
如果我們想切換到上面剛剛建立的test分支中,可以如下操作:
可以看到,沒有執行之前,當前的分支是master,當執行之後,當前的分支是test,這個時候可以可以在切換後的分支中繼續操作,而不會影響到其他分支。
我們也可以使用 git checkout -b (branchname) 命令來建立新分支並立即切換到該分支下,從而在該分支中操作。如,我們想建立一個newtest分支,並建立後就切換到該分支下,可以如下操作:
可以看出,執行之前還在master分支中,執行之後,直接進入newtest分支了。
- git merge
git merge命令可以將任意分支合併到到當前分支中去,命令格式如下:
git merge branchname
1
如:我們新建一個newtest分支,並在其中增加test3.txt檔案,之後在master中將newtest分支的修改合併到master,結果如下:
可見master中也存在test3.txt檔案了。
合併衝突
合併的時候,最大的難點就是衝突了,合併並不僅僅是簡單的檔案新增、移除的操作,Git 也會合並修改,如果我們在兩個分支中同時修改了同一個檔案,這時再合併,就可能會產生衝突,衝突並不可怕,可怕的是要怎樣去解決,下面以一個小的例子來展示一下合併是衝突的解決。
還是用上面的那個倉庫,現在有兩個分支:master、newtest,兩個分支中都要test.txt檔案,這個時候我們都這個兩個倉庫的檔案都進行修改,之後再提交,最後將newtest合併到master中,具體的操作如下:
1、先修改分支:master、newtest中的test.txt檔案,並提交:
2、之後再將newtest分支修改的內容合併到master分支中:
可以看到newtest分支修改的內容和master分支修改的內容發生了衝突,這是根據具體的情況去解決,如下,我們保留兩個分支都有的,之後再add,在commit就可以了:
到此一個簡單的合併就完成了。實際專案開發中,合併比這要複雜的多,要結合具體的情況去操作。
- git branch -d (branchname)
git branch -d可以刪除分支,刪除分支命令格式如下:
git branch -d (branchname)
1
如:我們要刪除test分支:
Git檢視提交歷史
在使用 Git 提交了若干更新之後,又或者克隆了某個專案,想回顧下提交歷史,我們可以使用 git log 命令檢視,如,我們想列出歷史提交記錄如下:
下面介紹檢視歷史記錄的幾種選項:
- –oneline :檢視歷史記錄的簡潔版本
- –graph :檢視歷史中什麼時候出現了分支、合併
- –reverse :逆向顯示所有日誌
- –author :查詢指定使用者的提交日誌
- –since、–before、 --until、–after: 指定篩選日期
- –no-merges :選項以隱藏合併提交
我們可以用 –oneline 選項來檢視歷史記錄的簡潔版本:
我們還可以用 –graph 選項,檢視歷史中什麼時候出現了分支、合併:
這樣我們可以更清楚明瞭地看到何時工作分叉、又何時歸併,也可以用 –reverse 引數來逆向顯示所有日誌:
如果只想查詢指定使用者的提交日誌可以使用命令:git log --author , 例如,比方說我們要找 Git 原始碼中qtqt提交的部分:
如果你要指定日期,可以執行幾個選項:–since 和 --before,但是你也可以用 --until 和 --after,–no-merges 選項以隱藏合併提交。
例如,如果我要看 Git 專案中八月一日前且在七月二十九日之後的所有提交,我可以執行這個:
多數情況下,瞭解每條提交與那個分支/標籤關聯是很有用的。–decorate 標記讓git log展示所有指向每個提交引用(如分支,標籤等),如:
Git 標籤
使用標籤可以很方便的永遠的記住那個特別的提交快照,比如:我們發一個新的版本時,可以給它加一個“vx.x”版本,這樣你可以使用git tag給它打上標籤。
建立新標籤
可以使用 git tag -a vx.x來建立一個標籤。a 選項意為"建立一個帶註解的標籤"。 不用 -a 選項也可以執行的,但它不會記錄這標籤是啥時候打的,誰打的,也不會讓你新增個標籤的註解。
如:我們為我們上的例子建立一個標籤:
追加標籤
如果我們忘了給某個提交打標籤,又將它釋出了,我們可以給它追加標籤。如,假設我們釋出了提交 d6f7147,但是那時候忘了給它打標籤。 我們現在也可以:
檢視標籤
如果我們要檢視所有標籤可以使用以下命令:
git tag
1
執行結果如下:
指定標籤資訊命令:
git tag -a <tagname> -m "某某標籤"
1
PGP簽名標籤命令:
git tag -s <tagname> -m "某某標籤"
1
Git 遠端倉庫
前面我們使用到的 Git 命令都是在本地執行,如果你想透過 Git 分享你的程式碼或者與其他開發人員合作。 你就需要將資料放到一臺其他開發人員能夠連線的伺服器上。本本將使用 Github 作為遠端倉庫,來介紹Git 遠端倉庫的使用。
下面介紹遠端倉庫常用的幾種指令:
- git remote add:新增遠端倉庫
- git remote:檢視當前的遠端倉庫
- git fetch、git pull:提取遠端倉倉庫
- git push:推送到遠端倉庫
- git remote rm:刪除遠端倉庫
1.git remote add
git remote add可以新增一個遠端倉庫,其命令格式如下:
git remote add [alias] [url]
1
引數[alias]為別名, [url]為遠端倉庫的地址,如:我們可以將https://github.com/qtqt/test.git
倉庫新增到本地,並命名為test,操作如下:
- git remote
git remote可以檢視當前有哪些遠端倉庫,執行結果如下:
可以看出,有上面新增的別名為test倉庫。
- git fetch、git pull
git fetch可以提取遠端倉庫的資料,如果有多個遠端倉庫,我們可以在後面加倉庫的別名,操作如下:
該命令執行完後需要執行git merge 遠端分支到你所在的分支。假設你配置好了一個遠端倉庫,並且你想要提取更新的資料,你可以首先執行 git fetch [alias] 告訴 Git 去獲取它有你沒有的資料,然後你可以執行 git merge [alias]/[branch] 以將伺服器上的任何更新(假設有人這時候推送到伺服器了)合併到你的當前分支。操作如下:
執行完成之後可以在本地倉庫找到遠端倉庫的檔案。使用這種方式只能保證本地是一個空的倉庫,如果非空,則會報:fatal: refusing to merge unrelated histories錯誤。
git pull命令用於從另一個儲存庫或本地分支獲取並整合(整合),在預設模式下,git pull是git fetch後跟git merge FETCH_HEAD的縮寫,使用格式:
git pull [options] [<repository> [<refspec>…]]
1
如:我們可以將遠端倉庫pull到本地,如果本地倉庫和遠端倉庫實際上是獨立的兩個倉庫,–allow-unrelated-history選項來解決。
git fetch和git pull的區別:
- git fetch:相當於是從遠端獲取最新版本到本地,不會自動合併。
- git pull:相當於是從遠端獲取最新版本並merge到本地。
- git push
git push 推送你的新分支與資料到某個遠端倉庫命令,格式如下:
git push [alias] [branch]
1
如:我們可以將前面提交的檔案push到遠端倉庫中:
- git remote rm
git remote rm刪除遠端倉庫,格式如下:
git remote rm [別名]
1
如:我們可以先新增一個test2倉庫,之後再刪除它,操作如下:
好了,到此基本上將Git常用的操作介紹完了。
1.3 git高階用法
以下是一些Git高階用法1234:
使用rebase而非merge來拉取上游修改
在執行git rebase後解決合併衝突
臨時性儲存修改
克隆一個特定的遠端分支
將cherry-pick遠端提交合併到自己的分支中
應用來自於不相關的本地倉庫的補丁
忽略追蹤檔案中的變更
每隔X秒執行一次git pull