Git使用教程2

【注意:】本文將從標題八開始,因爲前七個標題是關於Git的基本操作,如果對Git的基本操作不瞭解的話,可以點擊下方鏈接先看一下Git怎麼使用。Git使用教程1

八:創建SSH Key

1.註冊GitHub賬號。
2.創建SSH Key。windows + R鍵同時按,打開運行命令窗口,輸入.進入家目錄。
在這裏插入圖片描述
輸入.
在這裏插入圖片描述
看看這個目錄下有沒有id_rsaid_rsa.pub這兩個文件,如果有(那就奇了怪了!),一般第一次使用是沒有的,真有的話可以直接跳過下面的命令。

打開命令行,執行命令:ssh-keygen -t rsa -C "[email protected]"郵箱是自己GitHub賬號;它會讓你選擇路徑,還會讓你設置密碼,這裏最好全部都按照默認,一路回車下去,如下:
在這裏插入圖片描述
這時候我們再次打開家目錄,會發現有一個.ssh文件夾,如下:
在這裏插入圖片描述
如果上面的命令沒有問題的話,也看不到這個文件夾肯定就是隱藏文件顯示按鈕沒有打開,點擊查看(View)隱藏的項目(Hidden items)選項勾上。
打開.ssh這個文件夾,可以看到兩個文件:
在這裏插入圖片描述
id_rsa是私鑰,不能泄露, id_rsa.pub是公鑰,可以放心傳播。

3.登錄GitHub,打開settings找到SSH Key頁面,點擊New SSH Key, 填上標題,同時在Key文本框中粘貼id_rsa.pub文件的公鑰內容。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
點擊Add SSH key之後會跳轉到輸入密碼的界面,我們需要輸入GitHub密碼來繼續:
在這裏插入圖片描述
接下來我們就可以看到我們新加的SSH key了,如下:
在這裏插入圖片描述

九、添加遠程庫

需求是:我們有本地的Git倉庫,又想在GitHub中創建一個Git倉庫,並且希望這兩個倉庫進行遠程同步,這樣GitHub的倉庫別人就可以來寫作了。
1.在GitHub上創建一個倉庫,在頁面右上角號選擇新的倉庫(New repository);
在這裏插入圖片描述
2.填入倉庫名稱就可以了,直接點創建,如下:
在這裏插入圖片描述
這時候一個新的倉庫就建立完成了,目前這個倉庫還是空的在這裏插入圖片描述
頁面提示說,我們可以有多種方法初始化這個倉庫,我們按照給出的提示在本地倉庫中運行下面的命令:
git remote add origin https://github.com/duanmingpy/helloworld.git
git push -u origin master
在這裏插入圖片描述
把提示的東西都輸入完成之後就可以推送成功了,如下:
在這裏插入圖片描述
這裏使用的幾個命令,其中git push命令,實際上是把當前分支master推送到遠程。

因爲遠程庫是空的,第一次推送master增加一個-u參數,這樣Git不僅僅會把本地的master分支的內容推送到遠程GitHub倉庫中新的master分支,還會把本地的master分支和遠程的master分支關聯起來,在以後的推送和拉取就可以簡化命令了。
我們刷新GitHub倉庫的頁面,這樣就可以看到GitHub上的倉庫和本地一模一樣了。如下:
在這裏插入圖片描述
現在開始,只要本地有commit,就可以使用git push origin master把本地master分支的最新修改交託給GitHub上了,現在就真正意義上的擁有了分佈式版本庫了。

十、從GitHub上克隆

【標題九】講述了先有本地庫更新,後有遠程庫。
現在考慮如果遠程庫有更新,怎麼克隆到本地呢?

1.先準備一個遠程庫,在GitHub上再新建一個倉庫,但是要有文件在,如下:
在這裏插入圖片描述
創建完成之後如下:
在這裏插入圖片描述
現在我們在命令行中進入一個新的空的文件夾中,然後執行克隆語句:
克隆語句:git clone https://github.com/duanmingpy/remote_repo.git,後面的地址是自己的
在這裏插入圖片描述
打開我們拉下來的文件夾就可以看到:
在這裏插入圖片描述

十一、創建與合併分支

上篇文章的版本回退上我們就知道了,每次提交,Git都把它們串成一條時間線,這條時間線是一個分支。
到現在爲止,我們還只有一個master主分支,HEAD嚴格來說是指向master,所以HEAD指向的就是當前分支,就像python中模塊的__main__特殊變量一樣。
現在我們來創建新的分支:
1.查看所有分支命令git branch
2.git checkout -b 分支名 創建並切換到這個分支
在這裏插入圖片描述
git checkout命令加上參數-b就代表創建之後切換到,相當於兩條命令:
git branch dygit checkout dy 相當於這兩條。
git branch查看分支,會列出所有分支,當前分支前面有一個星號,上面用到了。

分支之間的工作
現在我們在dy分支上,我們查看一下README.md的內容,接着添加一行7777777,再把它添加到版本庫。
在這裏插入圖片描述
我們在dy分支上完成了提交之後,切換到master分支上查看README.md,如下:
在這裏插入圖片描述
現在我們想要把dy分支上增加的內容合併到分支master分支上,可以在master分支上使用如下命令:
git merge dy
在這裏插入圖片描述
我們可以在執行合併那裏看到一句Fast-forword這是因爲執行的模式是快進模式,就是直接把master執行了dy的當前提交,所有合併速度快。
我們現在把dy分支刪除:
git branch -d dy
在這裏插入圖片描述

暫時先總結一下創建與合併命令:
查看分支git branch
創建分支git branch name
切換分支git checkout name
創建+切換分支git checkout -b name
合併某分支到當前分支git merge name
刪除分支git branch -d name


下面我們考慮:
如果在dy分支上我們修改提交了新內容,在master上也修改提交了新內容,那麼我們在合併的時候取誰的呢?
還是一步一步來,
1先創建一個新分支叫做dy,因爲剛纔把它給刪掉了
2查看一下README.md的內容
3添加一些新內容
4提交到版本庫
如下:
在這裏插入圖片描述
同樣的操作,我們切換到master分支上也添加兩行內容:
在這裏插入圖片描述
提交到版本庫之後,我們在master分支上進行合併dy,如下操作:
在這裏插入圖片描述
我們可以從上面這一張圖可以仔細的分析出,兩個分支上都做了新的提交,在合併的時候會有衝突,並且分支名也從master變成了master | MERGING, 同時我們cat README.md發現文件內容也變了,在git status上給我們提供瞭解決方法:git commit
Git使用了<<<<<<< ; ========;>>>>>>> 分別標記出不同分支修改的內容,我們可以打開文件修改成和主分支一致,然後在master | MERGING這個臨時分支上進行git commit
使用vscode打開查看:
在這裏插入圖片描述
vscode默認給我們幾個選項,我點擊了採用當前更改按鈕,變成了master提交的內容了,如下:
在這裏插入圖片描述
然後回到Git客戶端,在master | MERGING分支上查看內容並進行提交操作,如下:
在這裏插入圖片描述
經過這一系列的操作之後,我們可以通過git log查看分支合併情況:
在這裏插入圖片描述


分支管理策略:
通常我們合併分支的時候,Git一般是用Fast forward模式,這種模式下,刪除分支之後,會丟掉分支信息,現在我們來使用-no-ff來禁用Fast forward模式。
1創建一個dev分支。
2修改README.md內容。
3添加到暫存區。
4切換回dy分支。
5合併dev分支,使用命令git merge -no-ff -m "註釋內容" dev
6查看歷史記錄
在這裏插入圖片描述
刪除dev之後我們發現在最後的log中還有dev的操作。
分支策略:master主分支應該是非常穩定的,也是用來發布的新版本,一般情況下幹活都不在master分支上幹,都是在新建的分支上,幹完之後需要發佈,或者說新建分支代碼穩定之後可以合併到主分支master上。

十二、bug分支

在開發過程中,bug問題是不能避免的,那麼有了bug就需要修復,在Git中,由於擁有強大的分支,每個bug我們都可以通過一個臨時分支來修復,修復完成之後合併分支,然後將臨時的分支刪除掉。

例如我在開發中接到一個404bug的時候,可以臨時創建一個404分支來修復。但是我目前在的分支dev的開發工作還沒有完成,但是bug需要五個小時內完成,怎麼辦?這時候Git有一個stash功能,可以將當前工作現場隱藏到後臺,等以後再恢復現場繼續工作。如下:
在這裏插入圖片描述
接下來我們要知道bug是哪個分支上的,比如bug是master分支上的,我就需要再master分支上重新建一個分支:
在這裏插入圖片描述
修復好bug之後切換到master分支,併合並,最後刪除這個臨時分支:
在這裏插入圖片描述
現在又可以回到當前的分支上繼續幹活了。
要把我們的現場恢復回來:
通過git stash list查看隱藏的工作現場,
在這裏插入圖片描述
恢復的方式有兩種:
1git stash apply,這種恢復方式恢復後stash內容並不刪除,需要使用git stash drop來刪除。
2另一種方式是使用git stash pop,恢復的同時把stash內容也刪除了。
在這裏插入圖片描述

十三、多人協作

當我們從遠程庫克隆的時候,實際上Git自動把本地的master分支和遠程的master分支對應起來了,並且遠程庫的默認名稱是origin。
1.查看遠程信息git remote
2.查看遠程庫詳細信息git remote -v
在這裏插入圖片描述
推送分支
推送一個分支就是把該分支上所有本地提交到遠程庫上,推送的時候要制定本地的分支,Git會把該分支推送到遠程庫對應的遠程分支上:
使用命令git push origin master
在這裏插入圖片描述
本地的README.md:
在這裏插入圖片描述
執行推送命令:
在這裏插入圖片描述
推送成功之後我們刷新一下GitHub頁面:
在這裏插入圖片描述
需要推送哪個分支我們就把參數換成分支名就可以了。
知識補充:一般情況下master分支是主分支,因此要時時刻刻與遠程同步;一些修復的bug分支是不需要推送到遠程的,只要先在本地合併到主分支上,然後把主分支master推送到遠程去即可。

抓取分支:
在進行多人協作時,大家都會往master分支上推送各自的修改,現在我們假設有另外一個同事,通過添加SSH Key添加到GitHub上,或者是同一臺電腦上另外一個目錄克隆。
先把dy分支也push到GitHub上:
在這裏插入圖片描述
我們新建一個目錄名就叫做:clonedir2
在這個目錄下模仿另外一個同事也進行克隆這個項目:
在這裏插入圖片描述
這個同事需要在dy分支上做開發,在終端用命令創建一個dy分支,現在就可以在dy分支上進行開發,開發完成後,把dy分支推送到遠程庫中。
在這裏插入圖片描述
同事已經推送到遠程了,這裏我也改了一下這個文件,也想要推到遠程:
在這裏插入圖片描述
推送失敗的原因是同事最近也提交了,提交到有衝突,上面提示我們,先用git pull把最新的提交抓取下來,然後在本地合併,解決衝突之後再推送。
先要指定本地dy分支與遠程origin/dy分支的連接,根據提示設置dy分支和origin/dy的鏈接,如下:
在這裏插入圖片描述
我們又看到了熟悉的MERGING臨時分支了;
解決方式和之前是一樣的,我先看一下內容,然後修改,然後再繼續推送到遠程中:
在這裏插入圖片描述
所以:多人協作的工作模式是:
1可以試圖用git push origin branch name推送自己的修改
2如果推送失敗,是因爲遠程分支比本地更新早,需要先用git pull試圖合併。
3如果合併有衝突,需要解決衝突,並在本地提交,使用git push origin branch name


總結:
Git基本常用命令如下:
創建目錄mkdir
顯示當前目錄的路徑:pwd
把當前的目錄變成可以管理的Git倉庫:git init
把xx文件添加到暫存區:git add xx
提交文件:git commit -m "註釋"
查看倉庫狀態git status
查看xx文件修改了哪些內容git diff xx
查看歷史記錄git log
回退版本git reset --hard HEAD^或者git reset --hard HEAD~50
查看文件cat xx
查看歷史記錄的版本號idgit reflog
把xx文件在工作區的修改全部撤銷git checkout -- xx
刪除xx文件rm xx
關聯一個遠程庫git remote add origin 地址
把當前master分支推送到遠程庫git push -u(第一次要用-u 以後不需要) origin master
從遠程庫中克隆https://github.com/duanmingpy/remote_repo.git
創建dy分支並切換到git checkout –b dy
查看當前所有分支git branch
切換回master分支git checkout master
在當前的分支上合併dy分支git merge dy
刪除dy分支git branch –d dy
創建分支git branch name
把當前的工作隱藏起來,等以後恢復現場後繼續工作git stash
查看所有被隱藏的文件列表git stash list
恢復被隱藏的文件,但是內容不刪除git stash apply
刪除文件git stash drop
恢復文件的同時刪除文件git stash drop
查看遠程庫的信息git remote
查看遠程庫的詳細信息git remote -v
把master分支推送到遠程庫對應的遠程分支上git push origin master

覺得不錯可以點個贊,加個關注!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章