Git魔術——VSCode中如何使用Git(以github作為遠端存儲庫)


引言

有幸選到孟寧老師的《高級軟件工程》這門課,孟老師上課告訴我們,工欲善其事必先利其器,作為軟件工程的學生,Git不會用,那是不行的!因此,需要動手操作來學習如何使用Git,一款神奇的魔術軟件!

准備工作

首先,我們需要用於VSCode這款編程神奇,然后在github上申請一個屬於自己的賬號,最后下載Git軟件。

我們先在VSCode中創建一個文件夾,然后按住Ctrl+Shift+G,如圖所示,

會發現,現在還沒有一個本地的存儲庫,所以需要初始化一個存儲庫

//這一步也可以通過git init 實現,在VSCode中打開終端,然后輸入
git init

 

初始化后,我們打開這個文件夾,然后查看,你會發現多了一個.git的隱藏文件,而這就是我們的存儲庫了!

這樣我們的魔術工作就准備好了!

魔術場景一:Git本地版本庫

我們在homework1的文件夾下創建一個homework1.txt,然后輸入點內容,就可以將其上傳到我們的github上了!

至於怎么在VSCode連上github,可以參照這樣一篇博客https://blog.csdn.net/qq_42852004/article/details/90057151

//在終端中輸入,git status可以查看當前工作區的狀態
git status

然后我們再創建一個homework2.txt,輸入一些內容,然后使用git add功能

//git add [FILES] # 把文件添加到暫存區,可以添加多個文件(這里只添加了一個文件)
git add

仔細查看,其實,這里有一個問題,第一次為什么沒有把文件加入暫存區呢?

原因是,我們是在homework1這個文件夾下創建的homework2.txt,因此在高軟作業這個目錄下是查詢不到的,因此也就不能將其添加到暫存區中!

//git commit -m "wrote a commit log infro” # 把暫存區里的文件提交到倉庫
git commit -m "使用git commit功能"

提交完成后,你會發現左邊工作區的暫存的更改,已經消失了!好神奇哦!然后我們也可以通過可視化操作,將這些修改推送到github上

當我們打開自己的github時候,此時已經多了一個txt文件!

//git log # 查看之前的提交記錄,便於回到過去
git log

//git reset *****的頭幾個字符 # 回退到某一個版本
git reset ......

當我們使用回退功能時,會發現產生了差異,左邊是回退后的文件,右邊是回退前的文件,在VSCode中,我們可以清楚的看到這樣的對比。

//git reflog # 可以查看當前版本之后的提交記錄,便於從過去回到未來 //git reset *****的頭幾個字符 # 回退
git reflog git reset ......

這些就是Git在本地的一些操作,是不是很簡單,但又很神器呢,那我們進入下一個魔術吧。

魔術場景二:Git遠程版本庫

我們先在這里進行一個說明,先用一張圖來理一下git fetchgit pull的概念:

可以簡單的概括為:

git fetch是將遠程主機的最新內容拉到本地,用戶在檢查了以后決定是否合並到工作本機分支中。

git pull 則是將遠程主機的最新內容拉下來后直接合並,即:git pull = git fetch + git merge,這樣可能會產生沖突,需要手動解決。

下面我們來實踐一下!

我們現在github里對homework1.txt進行修改,修改如下

我們將使用git pull功能,從github上將修改的內容拉到本地

git pull

當我們使用了git pull功能后,我們發現,txt里的代碼修改。

我們再次對github上對homework1.txt進行修改

我們將使用git fetch功能,從github上將修改的內容拉到本地

git fetch

當我們使用了git fetch功能后,我們發現,txt里的代碼沒有修改。我們可以通過使用下面的代碼,展示出差異:

git log -p FETCH_HEAD

顯示差異后,我們可以通過git merge來將差異合並,解決沖突,從而使得,本地的代碼與github上的代碼同步。

git merge

這樣,本地代碼與github上的代碼就同步啦!

由此也可以看出:git pull = git fetch + git merge

我們在本地進行了修改,又需要怎么把代碼上傳到github上呢?

//git push 可以將本地存儲庫的代碼上傳到github上
git push

我們再打開github上看看我們的文件,是不是已經改變了?

魔術場景三:團隊項目的分叉合

 

 

 

在實際的工作中,都是團隊開發,那么在一個團隊中又是怎么操作的呢?

  •  團隊項目的每一個開發者都采用的工作流程如下:

  • 1.克隆或同步最新的代碼到本地存儲庫中;
  • 2.為自己的工作創建一個分支,該分支應該只負責單一功能模塊或代碼模塊的版本控制;
  • 3.在該分支上完成單一功能模塊或代碼模塊的開發工作;
  • 4.最后將該分支合並到住分支上。

下面我們就來試一試吧!

git checkout -b testbranch         //創建testbranch分支
git branch                         //查看所有分支

然后我們在testbranch分支上進行多次操作,然后提交到暫存區。

然后我們切換回主分支(master分支)

git checkout master

VSCode會提示我們主分支需要更新

我們可以通過merge來合並差異,將testbranch的內容融入master分支中。

git merge --no-ff testbranch

然后提交到github上,可以啦!

魔術場景四:Git Rebase

那主分支,也就是master分支要修改其他分支怎么辦呢?別急,我們接着往下看:

我們在master分支做出如下修改:

我們切回到testbranch分支,發現還是我們修改前的代碼:

我們可以通過這樣的操作,將所有分支都和master分支進行同步,然后就會發現,testbranch分支里的代碼已經被修改了。

git rebase master

魔術場景五:Fork + Pull request

為了解決開源社區松散團隊的協作問題,Github提供了Fork+ Pull request的協作開發工作流程。

當你想更正別人倉庫里的Bug或者向別人倉庫里貢獻代碼時,要走Fork+ Pull request的協作開發工作流程:

  • 1 先 fork(分叉) 別人的倉庫,相當於拷貝一份;
  • 2 做一些 bug fix或其他的代碼貢獻;
  • 3 發起 Pull request 給原倉庫;
  • 4 原倉庫的所有者 review Pull request,如果沒有問題的話,就會 merge Pull request 到原倉庫中。

而這就是Git的一些簡單又實用的方法了!Git是不是很神奇呢?

參考文獻

1.https://mp.weixin.qq.com/s/Km5KuXPETvG0wCGHrvj9Vg

2.https://blog.csdn.net/qq_42852004/article/details/90057151

3.https://www.cnblogs.com/runnerjack/p/9342362.html

4.https://blog.csdn.net/nrsc272420199/article/details/85555911

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM