四、學程式語言前,不了解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。