在IDEA上使用Git/Github 的學習筆記(詳細)

如何在idea上使用Git/Github的學習教程

寒假到了,又到了博主日常假期立flag,今天就做一個git學習筆記,用來記錄和分享學習程序員必備技能之——git/github

首先,安裝和配置git我就不多說了,網上教程多如牛毛。我這裏要講的就是,在安裝完之後,怎麼將實踐結合起來學習git。

需要跟着我這篇博文一步步的實踐就可以對git有所瞭解。

 

創建項目文件,對項目動一些手腳:

首先在idea裏面創建一個簡單的java項目,起名字叫TestGithub

在這裏,我創建了一個Main文件,輸出helloworld。然後呢創建了一個空的package,叫做pojo。

熟悉IDEA裏面的命令行操作:

做完上面這些鋪墊之後,首先我們要實踐的內容就是,學會使用idea裏面的命令行他在哪裏呢?

這個就是idea裏面的命令行,terminal是終端的意思。在這個命令行裏面,我們相當於是打開了Windows裏面的cmd命令行

我們可以執行一些熟悉的操作,比如:進入文件夾pojo/或者清屏ctrl+k

初始化一個Git空倉庫:

在這裏,我們使用git init這個命令來創建一個新的倉庫,在下面的終端裏面輸入即可:

看到上面的註釋;翻譯出來就是“在F盤的XXX目錄下,初始化了一個空的Git倉庫”

比如上面這個,就是在src文件夾下面創建了一個包的同時,順便把對應的git倉庫也給初始化了,實在很讚的操作。

查看當前倉庫的狀態:

ok,創建完git倉庫了,首先要學習的技能是查看這個git倉庫的狀態,輸入這個git statue,查看當前倉庫的狀態

很顯然,啥都沒有,這個git倉庫沒有被commit過,這個文件夾也就沒有歷史版本。

那我們就搞點事情,讓他有所記錄,我們再看看這個倉庫的狀態是否有改變,我們再test1裏面創建一個叫Person的類

然後再來執行上面那條git status的指令(按↑返回上一條命令)

顯而易見,它提示了我,我創建了一個叫做Person的新文件。

但是注意這句話,

他的意思就是,我們有新建的但是未被提交的文件,這個狀態在git裏面叫做modified,否則我們在歷史版本裏面看不到我們剛剛作出的更改

ok,那麼我們怎麼樣才能把文件提交呢。

★重點:文件的提交,和git倉庫的三個狀態(modified修改,staged暫存,commited提交)

在上述所提到的modified這種狀態之後。

首先執行的操作是add,我們吧當前目錄的所有文件add到一個“暫存區”,對應倉庫這個概念的一個暫時存放你的代碼的地方。這個狀態在git裏面叫做staged,這種狀態作爲提交之前的一個緩衝,我們可以在提交之前使用git status指令檢查一下。

ok現在我們的代碼就加入了暫存區,使用git add . 這個指令。

加入到“暫存區”之後呢,我們需要把項目提交到倉庫裏面,提交完成之後,這個狀態叫做commited。commit會把暫存區裏面的內容提交到倉庫。如果再add.之後還有其他修改內容的操作,則不會加入倉庫

使用這個命令:git commit -m “這裏填寫註釋” 如下:

可以看出,一個文件被改變了。

那麼我們再來看git倉庫狀態,git status,啓動!

沒有需要提交的東西,所有的變動都已經保存!

查看我們每次的提交log:

上面執行了很多操作,我們這麼查看我們的工作事項呢,這條語句:git log,啓動如下

上面,我們就完成了對操作的記錄,裏面有操作人的用戶名(github用戶名)和時間,以及這個提交的版本寫的註釋“第一次提交...”

沒退出查看的時候,你無法繼續輸入命令,我們可以按回車下拉,或者J(上翻)K(下拉),當然我們想退出查看,繼續輸入命令的時候,我們可以按Q(quit)退出繼續輸入命令。

git log 還有一個“極簡模式”,就是使用一行輸出一個commit。類似如下效果和語句,輸出一行(oneline)

這個時候,我們再次的對項目進行一些改動,我們在原來的Person類裏面添加了一個成員變量

這個時候,相當於是對這個項目進行了一些修改,我們來查看狀態

上面提示了我們,這個類裏面有修改的操作。但是這個時候,你把person這個類裏面改動的東西恢復原樣。那麼,status就不會提示改動的操作,一切以你文件是否“原樣”爲標準來判斷

修改完成之後,我們保存當前進度作爲一個歷史版本,那麼我們需要上述的add和commit二連combo

這樣就完成了從“”暫存區”到git倉庫的操作,我們就提交成功了第二個版本,使用log查看,就會提示兩個commit版本

注意commit 後面的一串代碼,這是一串哈希值可以定位一個提交記錄,只需要這一串的錢七位就可以找到一條提交記錄。我們可以對這個提交進行詳細的查看,使用指令:git checkout + 哈希值前幾位(大於7位)

向下滾動我們就能看到詳細信息,包括註釋等...

當然,我們甚至可以更加詳細一點,使用這個指令,git log -p

我們可以看到更加詳細的信息,比如:你修改了啥,下面是一點點例子,其實還有很多

上面的意思就是在Person這個類裏面,添加了一個成員變量。

給重要的修改加tag標籤:

關於這個操作,我們需要另起爐竈,創建一個空的文件夾並初始化一個倉庫。

cd進入test文件夾之後,在test裏面創建一個文件,比如我創建了一個class文件叫做Book。

我們先對這個文件保存一下,也就是add commit 二連擊——“ac二連擊”,我們使用船新的版本的二連擊招數:如下

一條更比兩條強,添加提交兩開花,萊啦老弟。

然後再動一些手腳,

完事兒之後再次“ac二連擊”——暫存之後提交。

然後我們不厭其煩的再給這個類進行一些完善

繼續暫存和提交二連擊操作。

這個時候假如,我們覺得最近這一次的操作真的很重要,我們需要給這次的提交起一個名字比如叫做version1

那麼輸入如下指令

我們就給這次提交打上了標籤,叫做version1

我們可以通過git tag這條指令來查看所有的tag,如:

還可以對之前的某次commit進行添加tag操作,只要獲取到commit的7位以上的哈希值即可,語句如下

我們不僅可以查看歷史的commit,我們還可以回溯到歷史的commit去通過commit的標籤名字,將歷史某次的commit當作當前正在操作的commit,比如一個commit肥腸重要的時候。比如我想回到version0.5的這次commit進行一些操作

 根據命令行提示,如下

注意最後一行,這個HEAD就相當於是指向當前正在處理的commit的一個指針,或者理解爲文檔處理的一個“光標”

通過log來查看,可以明顯的看到,當前正在處理的commit就是標籤爲version0.5的這個commit

輸出log,我們可以看到,當前正在處理的commit 並不是最近的commit(version1)

現在來查看log的時候,可以看到每個commit的後面都有標籤信息

如果想查看tag的詳細信息,我們可以使用tag show +“tag的名字”這個指令,比如:

如上,我們就可以看到全部的tag信息,包括時間和操作人......

 

分支 branch

當我們git init一個倉庫的時候,這個時候就創建了一個分支,可以將它看作樹幹,他的名字就是我們常見的 master

當某個項目的節點之後,我們創建了另一個版本,相當於小說裏面出現了另外一種劇情,倘若權力的遊戲裏面囧最後死了是一個版本的話,囧最後存活並當上七國之王則是另外一個版本,這兩個版本就是兩個分支,對應程序也是一樣。

下面就來實踐,首先創建一個空倉庫:

進入並使用touch指令創建一個xyj.txt

我們可以在裏面隨便輸入一點什麼:

然後“ac二連擊”,暫存-提交

 再來點劇情,當作版本2。

繼續ac二連擊

這個時候我們可以想好這個txt小說,可能有兩種版本,一個是西天取經,一個是西天取不到經。

在我們這次提交這個節點上,我們創建一個分支點叫做——xtqj。

在這分支點上,我們可以創建旁邊的分支劇情,首先我們要進入這個分支點。

如上,我們就切換到了分支點switchpoint,我們可以修改結局爲西天取不到經

在這次commmit之後,我們當前正在處理的commit之上,就有兩個分支。

如上,當前正在處理的就是swithpoint之後的這次提交,叫做not get。

分支的作用是什麼呢,比如說,master版本用來做正常的開發,但是當某次commit之後發現了一個bug,

那麼這裏就可以分支一個點,在分支的版本中進行bug修復。修復的同時不耽誤其他功能的開發。

最後在同一時間內,既修復完bug,又完成了功能的開發,開發進度不耽誤。

 

 

合併分支:

上一節實踐了分支,當我們修復完bug並且完成功能的開發之後,我們需要把兩個版本合併爲一個版本,這樣我們就需要做一個合併分支的操作。

我們另起爐竈,初始化一個test4的倉庫,並且做下述操作:

對txt文章添加一個內容之後,我們保存爲ver1

再添加一個2之後,我們保存ver2提交

來到階段3,我們添加3之後,我們再次提交

但是這個時候我們發現在階段2-3之間有一個bug發生,我們需要在ver2這個點,開始一個分支,首先我們要回到version1.0

這個節點上。

在這個節點上,我們把它設立爲一個叫做point的分支點

同時進入這個點,當然我們也可以用指令git checkout -b point

到了這個點上,我們就能在這個版本上添加一些東西

然後我們ac二連擊,就可以在point這個分支上,開始一次叫做debug的commit

提交完這次debug ,我們再次回到master這個分支上

可以看到我們的txt文件,變成了如下這樣

我們再添加一些內容

commit之後,我們再來查看這個項目,就可以看到在ver2這裏,有一個分支點point

現在我們就要實踐這個合併操作了,我們就要用到git merge + 分支點的名字 這個指令

上面的信息提示我們有衝突,這個時候,我們來查看文字,就可以看到,從2開始,master版本的文字就是3和4,point分支就是debug ,我們需要手動解決衝突,

修改後

最後我們確認提交一下

我們圖形輸出一下,清楚的可以看到,兩個分支最後合併爲一條主線

部署到github服務端

前面所述的一些操作,都是在local本地端,但是如果本地的電腦遭到了降維打擊,硬盤被拍扁了,那樣的話,之前所有的操作都無法復原,那麼我們就需要一個類似網盤的東西,叫做github。他可以每次我們commit之後都可以在服務端增量更新,而不是覆蓋原來的上傳版本。

首先打開github的個人主頁中的your repository,(你得先註冊登錄),然後new一個遠程repository

然後描述和命 名你的遠程倉庫

創建完成之後,我們能獲取我們倉庫的連接

複製這個連接,我們在idea的命令行裏面輸入下面這個指令,我們就可以把我們的項目上傳到我們剛剛新建的遠程倉庫添加上去

我們可以使用下面這個指令,查看我們的本地git倉庫都添加到了那些服務端

如上,指令提示我們添加了一個服務端,github。我們還可以查看詳細信息

fatch是下載的地址,push是上傳的地址

我們這個時候需要提交這份代碼到這個遠程倉庫。

前面是服務端的名稱,後面是需要提交的分支名稱,我們這次提交的是master。

回到github這個連接,我們就可以看見我們的遠程倉庫中已經有了內容

我們可以再次添加一個book2.txt內容進去,再次提交再次push到遠程服務器

 

這個時候我們提交完成之後,我們

那麼如何拷貝一個github上面很好的項目到自己這兒呢?

使用這個命令 git clone+githubURL

比如:

這樣我就在網上down了一個倉庫下來,這個倉庫裏面可能是一個工程,項目的類型有可能和你當前的工作臺的項目類型不一樣,這個就需要我們手動來修改了。

獲取倉庫裏面的最新代碼。

我們可以使用git pull 獲取當前任務遠程倉庫的最新版本。當我們做好一次提交之後,我們可以把我們的代碼使用git push(默認只推送當前分支)或者 git push -u origin master(將本地的master分支推送到origin主機,同時指定origin爲默認主機)來推送我們的代碼到遠程倉庫中去。

當然,我們使用git pull獲取倉庫裏面最新的代碼,如果多人提交的代碼有衝突。還需要我們自己手動調整。

這個功能可用於多人協作編程,比如張三寫好了前端頁面,push到遠程倉庫之後,李四可以pull出來最新的前端代碼來給自己使用,git pull 這個指令就相當於是如下代碼

意思就是獲取併合並我正在編輯的代碼。是不是很好理解。

 

總結,結合biaoyansu的網站內容,可以瀏覽一下上述過程提到的一些操作和關於git的概念。

 

ok關於git和github就聊到這裏,方便以後查閱和複習用

2019年1月18日 23:43:36

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