四、學程式語言前,不了解Git,怎麼入坑

@Author : Runsen

上次教大家搭建好Python的兩個IDE,分別是Pycharm和Jupyter

是不是我們正式開始西Python程式碼呢?

我的回答是NO

怎麼了,環境安裝好了不是就開始寫嗎?

這是不對的,學任何程式語言都要看下Git和Github

1、了解Git

說到Git,Runsen要說下LInux 的大神,是由偉大的Linux創始人Linus創作

就是這個大神,看不慣微軟的window系統,就直接搞Linux。


我們回到Git。Git是一個分散式版本控制軟體,在Git之前有一個SVN的東西,Linus在寫LInux內核的時候,使用的是SVN進行程式碼提交。

Linus用SVN覺得不爽,就是因為SVN不能夠分散式版本控制,這也是Git和最核心的區別

我先把git的官方網站的鏈接給你扔出來://git-scm.com/

走,我們去Git的官方網站學習。

2、 版本控制

無論Git還是SVM都是用來版本控制,所謂的版本控制是一種記錄一個或若干文件內容變化,以便將來查閱特定版本修訂情況的系統。 除了項目源程式碼,你可以對任何類型的文件進行版本控制。


比如,在我們寫畢業論文時可能會遇到,多次修改之後的論文命名方式:

論文_改.doc、論文_改改.doc、論文_改改改.doc、論文_改改改改.doc、論文_改改改改再改.doc、
論文_改改改改再改TM不改了.doc

我還是大三,還不用寫論文。

重命名也太OUT了,SVN就出來,你可以提交多個版本,然後託管到程式碼倉庫,進行管理,如果需要就回退。這方便了許多,但是如果這個寫程式碼的跑路,要換Runsen來維護,那是不是沒轍。因為這是託管到寫程式碼的跑路人的倉庫,我沒得用啊。

接下來人們又遇到一個問題,如何讓在不同系統上的開發者協同工作? 於是,大神Linus發現。其實是LInus寫Linux內核的時候,被逼無奈,花了2個星期用c寫出了git。

Git是目前世界上最先進的分散式版本控制系統,解決了在不同系統上的開發者協同工作的問題。

3、Git安裝

聽我吹了這麼久,是不是要安裝Git開始學習了。再說了,我怎麼會一直吹逼。

ubuntu下安裝就是一行命令

sudo apt-get install git

centos下安裝也是一行程式碼

sudo yum install git 

麻煩的就是Windows了,去git官網下,鏈接://git-scm.com/downloads

選擇Window,然後下載安裝包,選擇路徑,下面就是傻逼操作,

安裝好了Git,你就可以看見Git GUI和GIT Bash。

出現這兩個東西,基本安裝成功了。

你在CMD窗口,執行Git,如果有反應就是OK 了。

述

沒有就趕緊去path配置環境變數

4、創建本地倉庫

下面,我教你創建一個文件夾用於存放項目文件,新建一個myporject的文件夾

cd ~/myproject/

初始化myporject的文件夾

git init

會創建一個.git的隱藏文件,關於版本控制的文件都存放在這裡,絕對不要改動

沒有這東西,你的Git就不能用了。

5、配置個人資訊

你可以配置全局資訊或者本項目個人資訊

配置全局資訊直接--global

git config --global user.name 'MaoliRunsen'
git config --global user.email '[email protected]'

配置資訊會保存在家目錄下,名字和Email跟註冊Github的一致。

cat ~/.gitconfig

配置本項目個人資訊

git config user.name 'MaoliRunsen'
git config user.email '[email protected]'

配置資訊存儲在當前目錄下的.git/config下

cat .git/config

6、 添加文件

創建好了本地倉庫,就準備開始開發了。

在項目文件加下創建readme.txt文件,輸入以下內容。

我是Runsen,一個化工的專業的碼農
這是一個git學習的項目。
將所有的部落格進行匯總整理

先添加到暫存區

git add readme.txt

提交到倉庫

git commit -m '第一次提交文件'

述

git commit命令的,-m參數後輸入的內容是提交說明。命令執行成功後顯示幾個文件被改動,加了多少行。每提交一次就會生成一個版本。

git add . 可以一次性把當前目錄中所有有改動的文件都添加到暫存區。

7、修改文件

按照這個操作流程,修改readme.txt內容如下

我是Runsen,一個化工的專業的碼農
這是一個git學習的項目。
將所有的部落格進行匯總整理
然後刪除之前Git的部落格。

然後再次提交,Git add 和Git commit

8、錯誤提交

結果我在提交的時候,發現了commit錯誤了,這不是第一次提交,而是第二次,其實我是故意的。

辛勤的工作一段時候,我提交了2次了,有2個的版本,怎麼查看這些提交記錄呢?

git log是 查看歷史版本

從上圖中看到,我們需要刪除第二次的Commit,如何刪除呢,答案就是版本回退

9、 版本回退

這是就reset就可以了,

git reset --hard HEAD^

重要點終於來了:

  • HEAD表示當前最新版本
  • HEAD^表示當前最新版本的前一個版本
  • HEAD^^表示當前最新版本的前兩個版本,以此類推
  • HEAD~1表示當前最新版本的前一個版本
  • HEAD~8表示當前最新版本的前8個版本,以此類推

這是我們查看Git lo 就發現只有第一次的提交,可以看日期時間區別。

git reset –hard 版本號

當版本非常多時選擇這種方法。版本號就是每次commit生成的hash值,只用取前幾位數。

這是查看readdme.txt

沒有了然後刪除之前Git的部落格。

這樣就會產生一個問題,如果你提交錯誤和選擇回退,這樣你辛苦寫的程式碼會消失。

因此,如果Commit錯誤了,回退是錯誤的辦法。

10、回到原來版本

既然回退是錯誤,那麼就需要回到原來最新版本,不然你寫的程式碼全沒了

只要上面的命令行窗口還沒有被關掉,你就可以順著往上找到上面最新的commit id是 af316a589238fffca87806ceed36a96992cf66b9,於是就可以指定回到未來的某個版本,只要前八個:af316a58

readdme就回到第二次的狀態。

假如你是一個大傻逼,不小心關閉了窗口,就後悔了,想恢復到新版本怎麼辦?找不到新版本的commit id怎麼辦?

Git提供了一個命令git reflog用來記錄你的每一次命令,然後你可以根據對應的commit id回到你想要的版本:

af316a58同樣可以找的到。如果你刪除了git的隱藏文件,那你真的涼涼了,回家睡覺去吧。

11、正確方法

上面都是演示一些git的常見錯誤,我們現在是回到了錯誤提交的commit上,所以還沒有解決。

直接用git commit –amend 就可以了,修改本地最近一次已提交的注釋

下面把第一次改為第二次,這是Vim的用法。

你再看看Git log,OK 解決。

每次在做一些大動作(rebasing)之前,建議備份整個版本庫,以防萬一。

git的歷史記錄是不可修改的,也就是說你不能更改任何已經發生的事情。你做的任何操作都只是在原來的操作上修改。也就是說,即使你刪除了一個分支,修改了一個提交,或者強制重置,你仍然可以回滾這些操作。

12、 總結

今天簡單了入了Git的坑,還沒完,下面還是要繼續把Git搞定,才能開始學習程式語言。

下篇的內容跟下圖幾張圖有關。


本文已收錄 GitHub,傳送門~ ,裡面更有大廠面試完整考點,歡迎 Star。

Tags: