使用Git進行版本控制

參考:《Python編程從入門到實踐》

  • 前言
  • 1、安裝、配置 Git
    • 1.1 在Linux系統中安裝Git
    • 1.2 在OS X系統中安裝Git
    • 1.3 在Windows系統中安裝Git
    • 1.4 配置Git
  • 2、創建項目
  • 3、忽略文件
  • 4、初始化倉庫
  • 5、檢查狀態
  • 6、將文件加入到倉庫中
  • 7、執行提交
  • 8、查看提交歷史

前言

版本控制軟件讓你能夠拍攝處于可行狀態的項目的快照。修改項目(如實現新功能)后,如果項目不能正常運行,可恢復到前一個可行狀態。
通過使用版本控制軟件,你可以無憂無慮地改進項目,不用擔心項目因你犯了錯而遭到破壞。對大型項目來說,這顯得尤其重要,但對于較小的項目,哪怕是只包含一個文件的程序,這也大有裨益。
在本文中,你將學習到如何安裝Git,以及如何使用它來對當前開發的程序進行版本控制。Git 是當前最流行的版本控制軟件,它包含很多高級工具,可幫助團隊協作開發大型項目,但其最基本的功能也非常適合獨立開發人員使用。Git通過跟蹤對項目中的每個文件的修改來實現版本控制,如果你犯了錯,只需恢復到保存的前一個狀態即可。
說明:筆者使用的是CentOS 7的64位 Linux環境

1、安裝、配置 Git

Git可在所有操作系統上運行,但其安裝方法因操作系統而異。

1.1 在Linux系統中安裝Git

要在Linux系統中安裝Git,執行如下命令:

CentOS:
$ sudo yum install git
Ubuntu:
$ sudo apt-get install git

安裝完成后可以通過下述命令查看安裝的版本:

git --version

1.2 在OS X系統中安裝Git

OS X系統可能自帶Git,因此在安裝前先執行命令:‘git --version’。如果在輸出中查看到具體的版本號,說明系統已經安裝了Git;如果看到的是提示安裝或升級Git的信息,根據屏幕顯示的提示信息操作即可。
也可以訪問鏈接:https://git-scm.com/ ,單擊鏈接Downloads,再點擊適合你所用的系統的安裝程序。

1.3 在Windows系統中安裝Git

訪問:https://gitforwindows.org/,單擊Download。

1.4 配置Git

Git跟蹤誰修改了項目,哪怕參與項目開發的人只有一個。為此,Git需要知道你的的用戶名和電子郵件地址。用戶必須提供用戶名,但是可以使用虛構的電子郵件地址:

$ git config --global user.name "wsy"
$ git config --global user.email "username@example.com"

如果忘了這一步,在首次提交時,Git將提示用戶提供這些信息

2、創建項目

  • 在所用系統中創建一個名為 git_practice 的文件夾作為項目目錄;
  • 在項目目錄下創建空文件:module.py
  • 在項目目錄下創建一個簡單的python程序:hello_world.py 作為需要跟蹤的項目文件,輸入以下內容:
import moduleprint('Hello Git world!')

注:這里之所以需要創建一個空的module.py文件是因為在程序hello_world.py要引用他,這樣在程序運行后就會生成一個__pycache__文件夾,這個文件夾我們后續不需要讓Git跟蹤它,所以要對它做忽略操作。

關于__pycache__文件夾:python解釋器會對 *.py 文件進行編譯,并且將編譯結果保存到__pycache__目錄下。在下次執行工程時,如果發現這個 *.py 沒有被修改過,那么就會跳過編譯這一步,直接執行在__pycache__中已經完成編譯的.pyc文件。而且,只有被導入的module才會生成對應的 *.pyc文件,生成的 *.pyc 文件的命名規則是: ‘module.interpreter_version.pyc’。這樣做的好處是,如果需要執行比較大的工程文件,那么會節約很多時間。

整個創建流程如下:
在這里插入圖片描述

3、忽略文件

上面說過,擴展名為 .pyc 的文件是根據 .py 文件自動生成的,因此無需讓Git跟蹤它們。這些文件存儲在 pycache 目錄中。

為了讓Git忽略__pycache__目錄,執行下屬操作:

  • 在項目目錄下創建一個名為 .gitignore 的特殊文件,該文件以句點打頭,且沒有擴展名;
  • .gitignore 中添加下面一行內容:
__pycache__/

這讓Git忽略__pycache__目錄中的所有文件。使用 .gitignore 可避免項目混亂,開發起來更容易。

注:如果你使用的編譯器是 python2.7,請將這行內容改為 *.pyc。因為python2.7不會自動創建目錄 pycache,它將每個.pyc文件都存儲在相應.py文件所在目錄中。其中的星號(*)讓Git忽略所有擴展名為.pyc的文件。

流程如下:
在這里插入圖片描述

4、初始化倉庫

至此,我們創建了一個目錄,其中包含一個python文件和一個 .gitignore 文件,下面可以初始化一個Git倉庫了。為此,打開一個終端窗口,切換到文件夾 git_practice,并執行如下命令:

git init

如下:
在這里插入圖片描述輸出表明,Git在git_practice中初始化了一個空倉庫。倉庫里是程序中被Git主動跟蹤的一組文件。Git用來管理倉庫的文件都存儲在隱藏的 *.git/中,用戶無需與該目錄打交道,但是千萬不能刪除該目錄,否則將丟失項目的所有歷史記錄

5、檢查狀態

執行其它操作前,先執行下述命令來看一下項目的狀態:

git status

在這里插入圖片描述
在Git中,分支(master)是項目的一個版本。從上述輸出可以看出,目前項目位于分支master上。用戶每次查看項目狀態時,輸出都將指出你位于分支master上。接下來的輸出表明,我們將進行初始提交。提交是項目在特定時間點的快照。
接著,Git指出了項目中未被跟蹤的文件,因為到目前為止我們還沒有告訴它要跟蹤哪些文件。
最后,輸出提示我們“提交為空,但是存在尚未跟蹤的文件”,并告知如何建立跟蹤,即使用 git add。
所以下面的任務就是將文件加入到倉庫中。

6、將文件加入到倉庫中

下面將上述指出的文件加入到倉庫中,并再次檢查狀態。
可以通過下述兩種方法進行添加:

1、逐個文件添加
git add .gitignore
git add hello_world.py
git add module.py2、整體添加
git add .

命令 git add . 將項目中未被跟蹤的所有文件都加入到倉庫中,不需要一個文件一個文件的添加,這對于改動文件較多的項目來說很方便。它不提交這些文件,而只是讓Git開始關注它們。下面我們再檢查項目狀態時,發現Git找出了需要提交的一些修改,且標出了新添加到倉庫中的文件。
也可以理解為,通過 git add 將文件從工作目錄添加到了一個暫存區
在這里插入圖片描述

7、執行提交

下面開始執行第一次提交,提交結束后再次查看項目狀態,如下:
在這里插入圖片描述我們執行命令:commit -m "Started project." 以拍攝項目的快照。其中,標志 -m 讓Git將接下來的消息(Started project.)記錄到項目的歷史記錄中(也可以把這個消息當成是本次提交的一個title,用于辨識)。輸出表明我們在分支 master上,且有3個文件被修改了。
現在我們再檢查狀態時,發現我們在分支master上,且工作目錄是干凈的。這是用戶每次提交項目的可行狀態時都希望看到的結果。如果顯示的消息不是這樣的,請仔細閱讀,很可能是在提交前忘記了添加文件。

8、查看提交歷史

Git記錄所有的項目提交,通過命令 git log即可查看提交歷史,下面來看一下提交歷史:
在這里插入圖片描述用戶每次提交時,Git都會生成一個包含40字符的獨一無二的引用ID,它記錄提交是誰執行的、提交的時間以及提交時指定的消息。并非在任何情況下你都需要所有的這些信息,因此Git提供了一個選項,讓你能夠打印提交歷史條目更加簡單的版本:
在這里插入圖片描述標志 --pretty=oneline指定顯示兩項最重要的信息:提交的引用ID以及為提交記錄的消息(title)。

未完待續。。。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/212852.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/212852.shtml
英文地址,請注明出處:http://en.pswp.cn/news/212852.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C語言 預處理 + 條件編譯宏 + 井號運算符

預處理階段任務 預處理指令 條件編譯宏 條件編譯宏的作用在于根據編譯時的條件進行代碼的選擇性編譯,從而實現不同環境、不同配置或不同功能的編譯版本。 這可以用于實現調試模式和發布模式的切換,平臺適配,以及選擇性地編譯不同的功能模塊等…

Git merge 與 Git rebase 與 Git fetch

Git merge 與 Git rebase 看這個圖就行了 git merge、git rebase 和 git fetch 是 Git 中的三個不同的命令,它們分別用于不同的目的。以下是它們的主要區別: git merge(合并): 用途: 用于將一個分支的更改…

基于hadoop下的spark安裝

目錄 簡介 安裝準備 spark安裝 配置文件配置 簡介 Spark主要?于?數據的并?計算,?Hadoop在企業主要?于?數據的存儲(?如HDFS、Hive和HBase 等),以及資源調度(Yarn)。但是也有很多公司也在使?MR2進…

【Spring教程24】Spring框架實戰:從零開始學習SpringMVC 之 SpringMVC入門案例代碼示例

目錄 1:創建Maven項目,并導入對應的jar包2:創建控制器類3:創建配置類4:創建Tomcat的Servlet容器配置類5:配置Tomcat環境6:啟動運行項目7:瀏覽器訪問8:知識點總結 歡迎大家回到《Java教程之Spring30天快速入門》,本教程所有示例均基于Maven實現&#xff0…

【數學建模】《實戰數學建模:例題與講解》第八講-回歸分析(含Matlab代碼)

【數學建模】《實戰數學建模:例題與講解》第八講-回歸分析(含Matlab代碼) 回歸分析基本概念經典多元線性回歸(MLR)主成分回歸(PCR)偏最小二乘回歸(PLS)建模過程應用和優勢…

2023年12月11日-12月17日(項目需求+ue5底層渲染)

可以試試每小時項目需求內容ue5底層渲染交替進行。 周一: 6:11–,ue5底層渲染02A15

C# List類常用操作 之 查找

// // // 作者:鳥哥 // // email:xiaoniao2003gmail.com // // using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization.Formatters;class Program {class Student{internal string Name;internal int Ag…

Pandas實踐_pandas基礎

文章目錄 一、文件的讀取和寫入1.文件讀取2.數據寫入 二、基本數據結構1.Series2.DataFrame 三、常用基本函數1.匯總函數2.特征統計函數3.唯一值函數4.替換函數5.排序函數6.apply方法 四、窗口對象1.滑窗對象2.擴張窗口 一、文件的讀取和寫入 1.文件讀取 pandas可以讀取的文件…

rust宏(macro)詳解

前言 rust 學習曲線非常陡峭,但是基本語法也還算挺好理解,自動內存管理有點類似智能指針,基本看一下語法入門就可以大概理解,但是唯獨宏很難理解,語法非常晦澀。但是功能非常強大。聲明宏類似于c語言的宏處理&#xf…

docker-ubuntu中基于keepalived+niginx模擬主從熱備完整過程

一、環境準備 🔗在Ubuntu中安裝docker 二、主機 1、環境搭建 1.1 鏡像拉取 docker pull ubuntu:16.041.2 創建網橋 docker network create -dbridge --subnet192.168.126.0/24 br11.3 啟動容器 docker run -it --name ubuntu-1 --privileged -v /home/vac/l…

為 Compose MultiPlatform 添加 C/C++ 支持(2):在 jvm 平臺使用 jni 實現桌面端與 C/C++ 互操作

前言 在上篇文章中我們已經介紹了實現 Compose MultiPlatform 對 C/C 互操作的基本思路。 并且先介紹了在 kotlin native 平臺使用 cinterop 實現與 C/C 的互操作。 今天這篇文章將補充在 jvm 平臺使用 jni。 在 Compose MultiPlatform 中,使用 jvm 平臺的是 An…

Kubernetes實戰(十)-升級k8s集群

1 Kubernetes(k8s) 集群升級過程 Kubernetes 使用 kubeadm 工具來管理集群組件的升級。在集群節點層面,升級 Kubernetes(k8s)集群的過程可以分為以下幾個步驟: 1)檢查當前環境和配置是否滿足升級要求。 2)升級master主節點&…

如何一個例子玩明白GIT

一個例子玩明白GIT GIT的介紹和教程五花八門,但實際需要用的就是建倉、推送、拉取等操作,這兒咱可以通過一個例子熟悉這些操作,一次性搞定GIT的使用方法學習。下面這個例子的內容是內容是建立初始版本庫,然后將數據復制到 "遠…

輕量封裝WebGPU渲染系統示例<45>- 材質組裝流水線(MaterialPipeline)燈光、陰影、霧(源碼)

當前示例源碼github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/material/src/voxgpu/sample/MaterialPipelineFog.ts 當前示例運行效果: 此示例基于此渲染系統實現,當前示例TypeScript源碼如下: export class MaterialPipelineFog {pr…

數組創建方法

數組的創建 1.let a[] 2.let anew Array(5) 3.let anew Array(1,2,3) 4.let a[1,2,3] 創建數組是空還是有值是以上四種寫法。但是如果沒給值的變量是undefined,再a[0]找不到這種變量的。所以當找某一個數需要已經是數組內存。不想給值可以給空數組。只要是數組…

MEMS制造的基本工藝介紹——晶圓鍵合

晶圓鍵合是一種晶圓級封裝技術,用于制造微機電系統 (MEMS)、納米機電系統 (NEMS)、微電子學和光電子學,確保機械穩定和氣密密封。用于 MEMS/NEMS 的晶圓直徑范圍為 100 毫米至 200 毫米(4 英寸至 8 英寸),用于生產微電…

【重點】【環鏈表入口】142. 環形鏈表 II

題目 public class Solution {public ListNode detectCycle(ListNode head) {if (head null || head.next null) {return null;}ListNode slow head, fast head;while (fast ! null && fast.next ! null) {slow slow.next;fast fast.next.next;if (slow fast) …

SQL語句---更新數據

介紹 使用sql語句更新數據。 命令 update 表名 set 字段1值1[,字段2值2] [where 條件表達式];[](方括號)內的表是表示可選。 例子 將a表id值等于1的數據的名稱改為666 update a set name666 where id1;

2023-12-05 Qt學習總結7

點擊 <C 語言編程核心突破> 快速C語言入門 Qt學習總結 前言二十 QTcpSocket QTcpServer網絡庫服務端代碼:客戶端代碼 二十一 QProcess進程類二十二 QThread線程總結 前言 要解決問題: 學習qt最核心知識, 多一個都不學. 二十 QTcpSocket QTcpServer網絡庫 QTcpSocket和…

持續集成交付CICD:Jenkins流水線實現Nexus制品晉級策略

目錄 一、理論 1.開發測試運維環境 二、實驗 1.Nexus制品晉級策略 一、理論 1.開發測試運維環境 &#xff08;1&#xff09;環境 1&#xff09;持續集成開發環境&#xff08;DEV: Development Environment&#xff09; 直接通過源代碼編譯打包&#xff0c;其會跑單元測試…