GIt 入門

来源:http://www.cnblogs.com/fk530/archive/2017/08/10/7341041.html
-Advertisement-
Play Games

關於GIT GIT 是一個分散式版本控制軟體,最初由林納斯·托瓦茲(Linus Torvalds)創作,於2005年以GPL發佈。最初目的是為更好地管理Linux內核開發而設計。是目前世界上最先進的分散式版本控制系統. 什麼是版本控制 版本控制(Revision control)是維護工程藍圖的標準 ...


關於GIT

GIT 是一個分散式版本控制軟體,最初由林納斯·托瓦茲(Linus Torvalds)創作,於2005年以GPL發佈。最初目的是為更好地管理Linux內核開發而設計。是目前世界上最先進的分散式版本控制系統.

什麼是版本控制

版本控制(Revision control)是維護工程藍圖的標準作法,能追蹤工程藍圖從誕生一直到定案的過程。此外,版本控制也是一種軟體工程技巧,藉此能在軟體開發的過程中,確保由不同人所編輯的同一代碼文件案都得到同步。

集中式和分散式

再說分散式是什麼前, 我們前看一下什麼是集中式.

集中式

集中式版本控制系統,版本庫是集中存放在中央伺服器的,而幹活的時候,用的都是自己的電腦,所以要先從中央伺服器取得最新的版本,然後開始幹活,幹完活了,再把自己的活推送給中央伺服器。中央伺服器就好比是一個圖書館,你要改一本書,必須先從圖書館借出來,然後回到家自己改,改完了,再放回圖書館。

集中式版本控制系統最大的毛病就是必須聯網才能工作,如果在區域網內還好,帶寬夠大,速度夠快,可如果在互聯網上,遇到網速慢的話,可能提交一個10M的文件就需要5分鐘,這還不得把人給憋死啊。

分散式

那分散式版本控制系統與集中式版本控制系統有何不同呢?首先,分散式版本控制系統根本沒有“中央伺服器”,每個人的電腦上都是一個完整的版本庫,這樣,你工作的時候,就不需要聯網了,因為版本庫就在你自己的電腦上。既然每個人電腦上都有一個完整的版本庫,那多個人如何協作呢?比方說你在自己電腦上改了文件A,你的同事也在他的電腦上改了文件A,這時,你們倆之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。

和集中式版本控制系統相比,分散式版本控制系統的安全性要高很多,因為每個人電腦里都有完整的版本庫,某一個人的電腦壞掉了不要緊,隨便從其他人那裡複製一個就可以了。而集中式版本控制系統的中央伺服器要是出了問題,所有人都沒法幹活了。

在實際使用分散式版本控制系統的時候,其實很少在兩人之間的電腦上推送版本庫的修改,因為可能你們倆不在一個區域網內,兩臺電腦互相訪問不了,也可能今天你的同事病了,他的電腦壓根沒有開機。因此,分散式版本控制系統通常也有一臺充當“中央伺服器”的電腦,但這個伺服器的作用僅僅是用來方便“交換”大家的修改,沒有它大家也一樣幹活,只是交換修改不方便而已。

安裝GIT

  1. sudo apt-get install git

 

創建版本庫

第一步, 先要創建一個目錄, 這個目錄就是用來存放倉庫的.

 

  1. $ mkdir git         創建一個名叫git的目錄
  2. $ cd git    


第二步, 使用git init命令, 將當前目錄創建成git倉庫.

 

  1. $ git init

 

馬上就把倉庫創建成功了, 並提示這是一個空倉庫.

 

  1. $ ls -al           al表示列出所有的文件,包括隱藏文件,就是文件前面第一個字元為.的文件
  2. 總用量 12
  3. drwxrwxr-x  3 linux linux 4096 8  10 18:14 .    
  4. drwxr-xr-x 43 linux linux 4096 8  10 18:00 ..
  5. drwxrwxr-x  8 linux linux 4096 8  10 18:00 .git           .git為隱藏文件夾, 表示創建成功

 

配置用戶信息

配置用戶名, 這個用戶名是你的提交patch的名子, 最好寫真的名了, 不是網名, 如果有一天你成為名人了,那這個東西會一直印著你的足跡.

  1. $ git config --global user.name "你的名字"

 

配置用戶郵箱, 這個郵箱最好寫你最常用的郵箱, 說不定會有人給你寫郵件的, 這個是可能來自世界的任何角落, 可能是任何膚色和眼睛.

  1. $ git config --global user.email "你的郵箱"

 

配置編輯提交信息的編輯器, 我們熟悉的編輯器是vim. 使用這個去編輯提交信息, 最好把每一次提交信息填寫寫的全面, 不是為了給別人看, 萬一那天自己想回顧一下. 也需要詳細的信息.

  1. $ git config --global core.editor vim

 

Git用戶名郵箱的全局配置和單倉庫配置

  1. Git可以配置了一個全局的用戶名和郵箱:
  2. $ git config --global user.name "xxxxx"
  3. $ git config --global user.email "[email protected]"
  4. $ git config --list
  5. 但是你的項目可能是公司自己搭建的gitlab進行管理的,那就需要單獨針對這個項目單獨配置用戶名和郵箱。
  6. 在項目根目錄下進行單獨配置:
  7. $ git config user.name "gitlab's Name"
  8. $ git config user.email "[email protected]"
  9. $ git config --list
  10. git config --list查看當前配置, 在當前項目下麵查看的配置是全局配置+當前項目的配置, 使用的時候會優先使用當前項目的配置

 

增加文件

當前目錄里沒有文件, 那麼我們先創建一個文件README.

 

  1. $ touch README

 

編輯這個文件, 寫一點東西在裡面.

 

  1. $ vim README

 

先用查看當前狀態的命令, 查看一下現在目錄下文件的狀態.

 

  1. $ git status
  1. 位於分支 master
  2. 未跟蹤的文件:
  3.  (使用 "git add <文件>..." 以包含要提交的內容)
  4. README
  5. 提交為空,但是存在尚未跟蹤的文件(使用 "git add" 建立跟蹤)

 

把文件加到倉庫中去, 只有加到倉庫中了, 才可能看一下文件的變化.

 

  1. $ git add README

 

現在使用查看狀態的命令, 看一下目錄下文件的狀態.

 

  1. $ git status
  2. 位於分支 master
  3. 要提交的變更:
  4.  (使用 "git reset HEAD <文件>..." 以取消暫存)
  5. 新文件:   README

 

提交

  1. $ git commit

 

現在使用查看狀態的命令, 看一下目錄下文件的狀態.

 

  1. 位於分支 master
  2. 無文件要提交,乾凈的工作區

 

查看提交信息

  1. $ git log
  2. commit 50f37204c0a3f056f799683415f577a3a6bfb11b id
  3. Author: klous <klous530.outlook.com> 我們的用戶名,郵箱
  4. Date: Thu Aug 10 19:10:13 2017 +0800
  5. Add file README
  6. 新文件: README

刪除文件恢復

有時候, 我們不小心把文件給刪除了. 想恢復這個文件時, 需要用到下麵的命令.

我現在把倉庫里的README這個文件給刪除了. 然後再使用ls命令查看文件, 看看這個文件是否還存在.

  1. $ rm README
  2. $ ls
  3. $ ls -al


文件已經被刪除了, 這是我們使用linux基本命令去查看文件是不是還存在這個目錄中.現在我們使用git去查看一下現在倉庫是什麼狀態

  1. $ git status
  2. 位於分支 master
  3. 尚未暫存以備提交的變更:
  4. (使用 "git add/rm <文件>..." 更新要提交的內容)
  5. (使用 "git checkout -- <文件>..." 丟棄工作區的改動)
  6. 刪除: README
  7. 修改尚未加入提交(使用 "git add" 和/或 "git commit -a"


發現這個文件是誤刪了, 我們想把它恢復回來, 現在我們有辦法嗎? 如果沒有將這個文件提交到倉庫里, 我們是沒有辦法將它恢復的.

  1. $ git checkout README

 

然後我們再用ls查看一下文件是否存在.

  1. $ ls -al ==> ll
  2. 總用量 16
  3. drwxrwxr-x 3 linux linux 4096 8 10 19:20 ./
  4. drwxr-xr-x 44 linux linux 4096 8 10 19:10 ../
  5. -rw-rw-r-- 1 linux linux 9 8 10 19:20 README
  6. drwxrwxr-x 8 linux linux 4096 8 10 19:20 .git/

 

再查看git倉庫狀態

  1. $ git status
  2. 位於分支 master
  3. 無文件要提交,乾凈的工作區

 

版本回退

 

什麼叫版本, 一次提交就相當於一個版本. 如果更準確的說是提交的回退. 每一次提交都會將修改的狀態提交到倉庫中保存著, 這些信息都保存那裡呢?都保存在.git的目錄下.

如果想回退到上次提交的版本, 那麼需要使用git reset命令.

  1. $ git reset --hard commit ID


註意: 使用這個命令後,再使用git log命令不會查看到所有log的相關信息, 那麼我們沒有辦法獲取到後一個提交的CommitID.


在這裡我們需要使用git reflog命令查看後一次提交的CommitID, 如果已經有了後一次提交的CommitID, 那麼我們需要使用git reset命令恢復到前面提交版本.

 

  1. $ git reflog

 

版本之間對比

  1. $ git diff commitID1 commitID2
 



 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 題目描述 對於一個五位數a1a2a3a4a5,可將其拆分為三個子數: sub1=a1a2a3 sub2=a2a3a4 sub3=a3a4a5 例如,五位數20207可以拆分成 sub1=202 sub2=020(=20) sub3=207 現在給定一個正整數K,要求你編程求出10000到30000之 ...
  • 題目背景 第二次世界大戰時期.. 題目描述 英國皇家空軍從淪陷國徵募了大量外籍飛行員。由皇家空軍派出的每一架飛機都需要配備在航行技能和語言上能互相配合的2 名飛行員,其中1 名是英國飛行員,另1名是外籍飛行員。在眾多的飛行員中,每一名外籍飛行員都可以與其他若幹名英國飛行員很好地配合。如何選擇配對飛行 ...
  • I'm changing the background color based on the data but it makes my text hard to read so I need to change the font color (to white if I have a darker ...
  • 案例1: 演示FileInputStream類的使用(用FileInputStream的對象把文件讀入到記憶體) 首先要在E盤新建一個文本文件,命名為test.txt,輸入若幹字元 運行程式,控制台輸出test.txt中輸入的字元。 案例2: 演示FileOutputStream的使用(把輸入的字元串 ...
  • 題目描述 經過千辛萬苦小 A 得到了一塊切糕,切糕的形狀是長方體,小 A 打算攔腰將切糕切成兩半分給小 B。出於美觀考慮,小 A 希望切麵能儘量光滑且和諧。於是她找到你,希望你能幫她找出最好的切割方案。 出於簡便考慮,我們將切糕視作一個長 P、寬 Q、高 R 的長方體點陣。我們將位於第 z層中第 x ...
  • 在JVM中類載入過程中,在解析階段,Java虛擬機會把類的二級制數據中的符號引用替換為直接引用。 1.符號引用(Symbolic References): 符號引用以一組符號來描述所引用的目標,符號可以是任何形式的字面量,只要使用時能夠無歧義的定位到目標即可。例如,在Class文件中它以CONSTA ...
  • 題目鏈接 Problem Description The center coordinate of the circle C is O, the coordinate of O is (0,0) , and the radius is r.P and Q are two points not out ...
  • Description 高一一班的座位表是個n*m的矩陣,經過一個學期的相處,每個同學和前後左右相鄰的同學互相成為了好朋友。這學期要分文理科了,每個同學對於選擇文科與理科有著自己的喜悅值,而一對好朋友如果能同時選文科或者理科,那麼他們又將收穫一些喜悅值。作為電腦競賽教練的scp大老闆,想知道如何分 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...