Git學習筆記(一) 安裝及版本庫介紹

安裝Git

最早Git是在Linux上開發的,很長一段時間內,Git也只能在Linux和Unix系統上跑。不過,慢慢地有人把它移植到了Windows上。現在,Git可以在Linux、Unix、Mac和Windows這幾大平臺上正常運行了。

 在Linux上安裝Git

?  首先,你可以試著輸入?git?,看看系統有沒有安裝Git:

$ git
The program 'git' is currently not installed. You can install it by typing:
sudo apt-get install git

  像這樣就表明沒有安裝git,安裝命令:?sudo apt-get install git?

  當然你也可以在git官網上找到源碼進行安裝。官網地址:https://git-scm.com/

 在Mac上安裝Git

  有兩種安裝方法:

  1.安裝homebrew后通過homebrew安裝Git,具體方法請參考homebrew的文檔:http://brew.sh/。

  2.直接從AppStore下載Xcode。Xcode自帶git,注意:下載好后運行一次。才能安裝好。

 在Windows上安裝Git

  略,同時后面的筆記中也不記錄有關Windows相關的用法。請見諒。

?

 安裝完成后,設置你的昵稱及郵箱。

bogon:hello zuxingyu$ git config --global user.name "zuxingyu"
bogon:hello zuxingyu$ git config --global user.email "zuxingyu@gmail.com"

因為Git是分布式版本控制系統,所以,每個機器都必須自報家門:你的名字和Email地址。你也許會擔心,如果有人故意冒充別人怎么辦?這個不必擔心,首先我們相信大家都是善良無知的群眾,其次,真的有冒充的也是有辦法可查的。

注意?git config?命令的?--global?參數,用了這個參數,表示你這臺機器上所有的Git倉庫都會使用這個配置,當然也可以對某個倉庫指定不同的用戶名和Email地址。

版本庫

 創建版本庫

什么是版本庫呢?版本庫又名倉庫,英文名repository,你可以簡單理解成一個目錄,這個目錄里面的所有文件都可以被Git管理起來,每個文件的修改、刪除,Git都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻可以“還原”。

所以,創建一個版本庫非常簡單,首先,選擇一個合適的地方,先創建一個空目錄:

bogon:Documents zuxingyu$ mkdir GitWorkSpace
bogon:Documents zuxingyu$ cd GitWorkSpace/
bogon:GitWorkSpace zuxingyu$ pwd
/Users/zuxingyu/Documents/GitWorkSpace

然后通過?git init?命令將此文件夾變為Git倉庫進行管理。

bogon:GitWorkSpace zuxingyu$ git init
Initialized empty Git repository in /Users/zuxingyu/Documents/GitWorkSpace/.git/

可以通過?ls -a?命令查看到當前目錄結構

bogon:GitWorkSpace zuxingyu$ ls -a
.    ..    .git

?.git?是一個隱藏的目錄。里面的文件不做修改。

 將文件添加至版本庫

  我們可以寫一個?README?文件,放入版本庫中,內容如下:

this is my frist git file
I'm so excited

    注:README文件一定要放在之前創建好的資源庫中。

  第一步:將文件添加至版本庫中?git add README?

bogon:GitWorkSpace zuxingyu$ git add README 

    注:執行上面的命令,沒有任何顯示,這就對了,Unix的哲學是“沒有消息就是好消息”,說明添加成功。

  第二步:將文件提交至版本庫中?git commit README -m "frist version"?

bogon:GitWorkSpace zuxingyu$ git commit README -m "frist version"
[master (root-commit) 5d9a431] frist version1 file changed, 2 insertions(+)create mode 100644 README

    注:1.?git commit?命令中,?-m?后面的字符表示本次提交的說明,一般輸入的內容是修改了什么等等。雖然可以不寫,但強烈建議要寫上去。

      2.?git add?和?git commit?分開的原因是,你一次修改的文件可能有很多個所以你可以add很多文件,但是commit就一次,把你add的文件全部提交上去,如下:

$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."

  注:

   1.如果你修改了一個文件后?git add?了,然后你又修改了該文件,那么?git commit?的時候添加的只是第一次修改的內容。因為只有?git add?之后才把修改的文件放入暫存區中(后面會說明),正確的做法是將所有要修改的文件都修改完成之后?git add?下,然后再?git commit?,如果你add之后又修改了,那么只能再add下了。?    2.如果你想撤銷之前修改的內容。可以使用:

bogon:GitWorkSpace zuxingyu$ git checkout -- README 

    來撤銷當前的修改,這時候再查看下版本庫里的內容時就會變成:

bogon:GitWorkSpace zuxingyu$ git status
On branch master
nothing to commit, working tree clean

   3.如果你已經?git add?了,那么可以使用?git reset HEAD README?進行撤銷修改,意思就是版本回到最新版。

 查看版本庫狀態

  當我們在資源庫中修改了?README?文件后,我們可以通過?git status?來查看資源庫中文件的修改狀態

bogon:GitWorkSpace zuxingyu$ git status
On branch master
Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git checkout -- <file>..." to discard changes in working directory)modified:   READMEno changes added to commit (use "git add" and/or "git commit -a")

    注:上面的文字已經告訴我們README這個文件已經被修改過了。

   如果你已經忘記了之前修改了文件的哪里,可以通過?git diff?命令來查看文件的修改情況。

bogon:GitWorkSpace zuxingyu$ git diff README 
diff --git a/README b/README
index a289834..745208d 100644
--- a/README
+++ b/README
@@ -1,2 +1,2 @@this is my frist git file
-I'm so execute
+I updated this file

    注:?git diff?就是查看文件的不同。后面跟著的是文件名。-代表刪除,+代表添加。記得修改后?git add?和?git commit?下

 版本回退  

  在實際操作中我們可能無法知道之前都提交了哪些版本,改了什么內容。這時候我們就需要用?git log?命令來查看之前的操作了。

bogon:GitWorkSpace zuxingyu$ git log
commit eac61c6c7cae26dbb03acf08ca10359db9be9d34
Author: zuxingyu <zuxingyu@gmail.com>
Date:   Sat Nov 5 20:48:08 2016 +0800thridcommit f8cda47b31831bd42bceb59602145056f87623b2
Author: zuxingyu <zuxingyu@gmail.com>
Date:   Sat Nov 5 20:37:54 2016 +0800secondcommit 5d9a431a6a3aa47a3adee6bbdea167522e16ec55
Author: zuxingyu <zuxingyu@gmail.com>
Date:   Sat Nov 5 17:10:35 2016 +0800frist version

 在這個log中我們可以看到我提交了兩個版本的內容,如果嫌輸出信息太多,看得眼花繚亂的,可以試試加上--pretty=oneline參數:

bogon:GitWorkSpace zuxingyu$ git log --pretty=oneline
eac61c6c7cae26dbb03acf08ca10359db9be9d34 thrid
f8cda47b31831bd42bceb59602145056f87623b2 second
5d9a431a6a3aa47a3adee6bbdea167522e16ec55 frist version

 這里我們要說下幾個版本內容

   第一版本:frist

this is my frist git file
I'm so execute

   第二版本:second

this is my second git file
I updated this file

   第三版本:third(最新)

this is my second git file
I updated this file
this is my thrid git file

  現在我想把第三版本回退到第二版本。操作步驟如下:

?bogon:GitWorkSpace zuxingyu$ git reset --hard HEAD^?

 注:

  1.?HEAD?代表當前版本(本文中指第三版本),那上一個版本(第二版本)就是?HEAD^?,上上個版本就是?HEAD^^?,當然如果你要回退到前10個版本的時候寫?HEAD^……?這樣就不太好了。我們可以寫成?HEAD~10?

  2.如果回退錯誤,想回到當前版本(本文中指第三版本),那就必須得記住當前版本的?commit id?,這個ID是提交時出現的。所以回到當前版本的辦法就是控制臺沒有關閉,我在提交第三個版本的時候?commit id?是?eac61c6?,所以我的命令是

bogon:GitWorkSpace zuxingyu$ git reset --hard eac61c6
HEAD is now at eac61c6 thrid

  注:如果你提交版本后控制臺關閉了,可以通過?git reflog?命令找到?commit id?

bogon:GitWorkSpace zuxingyu$ git reflog
eac61c6 HEAD@{0}: reset: moving to eac61c6
f8cda47 HEAD@{1}: reset: moving to HEAD^
eac61c6 HEAD@{2}: commit: thrid
f8cda47 HEAD@{3}: commit: second
5d9a431 HEAD@{4}: commit (initial): frist version

  在這里我們就發現最新版本的ID是?eac61c6?

工作區和暫存區

  Git和其他版本控制系統如SVN的一個不同之處就是有暫存區的概念。

  先來看名詞解釋。

 工作區(Working Directory)

  就是你在電腦里能看到的目錄,比如我的?GitWorkSpace?這個文件夾就是一個工作區: 

 版本庫(Repository) 

  工作區有一個隱藏目錄?.git?,這個不算工作區,而是Git的版本庫。

  Git的版本庫里存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區,還有Git為我們自動創建的第一個分支master,以及指向master的一個指針叫HEAD

  當我們將文件?git add?的時候,實際上就是將需要提交的文件放到了暫存區(Stage),不管?git add?幾次,都是提交到暫存區中。然后?git commit?的時候一次性提交到分支中去。

?

小結

  本章節只是介紹了Git的安裝及簡單提交、回退方法。本筆記涉及到的命令有:

git init                           // 創建Git倉庫
git add file                     // 添加文件到git倉庫中
git commit -m "note"      // 將添加或修改的文件提交到Git倉庫中
git status                       // 查看Git倉庫的狀態
git diff file                      // 查看文件的修改信息
git log                            // 查看Git倉庫中版本的提交日志
git log --pretty=oneline   // 查看Git倉庫中版本的提交日志(簡略寫法)
git reset --hard HEAD^   // 將文件回退到當前版本的前一個版本

  東西不多但是也需要大家消化消化,下節筆記將介紹創建分支及遠程倉庫的相關內容。

?

參考網址:廖雪峰的官方網站

?

轉載于:https://www.cnblogs.com/zuxingyu/p/6034498.html

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

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

相關文章

python基礎:迭代器、生成器(yield)詳細解讀

1. 迭代器 迭代器是訪問集合元素的一種方式。迭代器對象從集合的第一個元素開始訪問&#xff0c;知道所有的元素被訪問完結束。迭代器只能往前不會后退&#xff0c;不過這也沒什么&#xff0c;因為人們很少在迭代途中往后退。 1.1 使用迭代器的優點 對于原生支持隨機訪問的數據…

LazyInitializationException的四種解決方案–第2部分

本文從教程??的第1部分繼續。 使用PersistenceContextType.EXTENDED的有狀態EJB加載收集 該方法只能應用于與Full JEE環境兼容的應用程序&#xff1a;將EJB與PersistenceContextType.EXTENDED一起使用。 檢查下面的代碼&#xff0c;DAO的樣子&#xff1a; package com.ejb…

Linux將硬盤轉化為pv,Linux擴展硬盤 物理卷(PV) 卷組(VG) 邏輯卷(LV)

1、給虛擬機添加兩塊新的sata虛擬硬盤&#xff0c;容量8G和10G# fdisk -l 命令2、分別在這兩個硬盤上建立pvPvcreate /dev/sdb 創建一個物理卷/dev/sdb 磁盤名是 fdisk -l 查詢出來的Pvscan 查看當前所有物理卷Pvdisplay 查看當前所有物理卷的詳情3、創建VG&#xff0c;使得…

ubuntu 16.10 shu rufa meiy ou l e geng xi zhi hou

轉載于:https://www.cnblogs.com/ganmk--jy/p/6035894.html

ZOJ Monthly, November 2012

A.ZOJ 3666 Alice and Bob 組合博弈&#xff0c;SG函數應用#include<vector> #include<cstdio> #include<cstring> #include<algorithm>using namespace std;const int maxn 10000 100; int SG[maxn]; vector<int> g[maxn];int mex(int u) { /…

使用Aspect和Spring Profile進行電子郵件過濾

在Web應用程序開發期間&#xff0c;經常需要發送電子郵件。 但是&#xff0c;有時數據庫中會包含來自生產的數據&#xff0c;并且存在在電子郵件測試執行期間向真實客戶發送電子郵件的風險。 這篇文章將解釋如何避免在沒有在發送電子郵件功能中明確編寫代碼的情況下避免這種情…

紅旗linux 進不去圖形界面,進不了紅旗Linux6.0的圖形界面請高手幫忙

習生 于 2008-11-02 11:08:42發表:引用:原帖由 zhaoruiqi 于 2008-11-2 10:03 發表 我的也是進不了圖形界面&#xff0c;用文本安裝后進系統也一樣正常按rtl的方法對xorg.conf進行修改,已經能進入圖形界面。你看看樓上rtl的回復的能否對你有幫助。zhaoruiqi 于 2008-11-02 10:0…

總結繼承的幾種方式

簡單總結繼承的幾種方式 JavaScript作為一門弱類型的語言&#xff0c;本著精簡的原則&#xff0c;它取消了類的概念&#xff0c;只有對象的概念&#xff0c; 更是有萬物皆對象的說法。在基于類的面向對象方式中&#xff0c;對象&#xff08;object&#xff09;依靠類&#xff0…

Oracle SQL精妙SQL語句講解(二)

- 如果存在就更新&#xff0c;不存在就插入用一個語句實現 DROP TABLE t_mg; CREATE TABLE t_mg(code VARCHAR2(10), NAME VARCHAR2(10)); SELECT * FROM t_mg; MERGE INTO t_mg a USING (SELECT the code code, the name NAME FROM dual) b ON (a.code b.code) WHEN M…

Spring Security –在一個應用程序中有兩個安全領域

這篇博客文章主要是關于Spring Security配置的。 更具體地說&#xff0c;它打算顯示如何在一個Web應用程序中配置兩個不同的安全領域。 第一安全領域是針對瀏覽器客戶端的。 它使我們能夠在登錄頁面中登錄并訪問受保護的資源。 第二安全領域旨在處理來自android應用程序的REST…

基于Activiti工作流引擎實現的請假審核流程

概要 本文檔介紹的是某商用中集成的Activiti工作流的部署及使用&#xff0c;該框架用的Activiti版本為5.19.0。本文檔中主要以一個請假流程為例子進行說明&#xff0c;該例子的流程圖如下&#xff1a; 這是一個可以正常運作的工作流業務了&#xff0c;但是它也有不足的地方&…

linux編譯ffmpeg成so,「ffmpeg」一 mac 環境下編譯ffmpeg,生成so庫文件

1.下載ffmpeg源碼,官網&#xff0c;我這里直接采用git 方式下載&#xff1a;下載ffmpeg.png終端輸入git命令&#xff1a;靜靜等待~最后下載的版本為3.4.6 。image.png這里注意一下&#xff0c;剛開始我用的ndk版本是ndk-17b&#xff0c;在編譯該版本的ffmpeg時始終失敗&#xf…

4Web Service中的幾個重要術語

4.1WSDL: web service definition language 直譯:Webservice定義語言 1.對應一種類型的文件.wsdl 2.定義了webservice的服務端與客戶端應用交互傳遞請求和響應數據的格式和方式 3.一個webservice對應一個唯一的esdl文檔 4.2SOAP: simple object access protocal 直譯:簡單對象訪…

云端:亞馬遜,谷歌應用引擎,Windows Azure,Heroku,Jelastic

您想在云端嗎&#xff1f; 您有很多選擇。 我已經評估或使用了許多方法&#xff0c;因此這里有幾句話。 &#xff08;當我使用Java時&#xff0c;我將包括一些與Java相關的注釋&#xff0c;但大多數情況適用于所有&#xff08;受支持的&#xff09;語言。&#xff09; 但是在深…

JS-字符串操作-替換

<!DOCTYPE HTML><html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8"><title>無標題文檔</title><style>p { border:10px solid #ccc; background:#FFC; width:400px; padding:20px;…

linux下kegg注釋軟件,KEGG數據中全部代謝反應和代謝物注釋信息的下載

# 加載函數與R包 -----------------------------------------------------------------library(KEGGREST)library(plyr)source("./RbioRXN-master/RbioRXN-master/R/get.kegg.all.R")source("./RbioRXN-master/RbioRXN-master/R/get.kegg.byId.R")## KEGG數…

java常見異常

算術異常類&#xff1a;ArithmeticExecption空指針異常類&#xff1a;NullPointerException 類型強制轉換異常&#xff1a;ClassCastException 數組負下標異常&#xff1a;NegativeArrayException 數組下標越界異常&#xff1a;ArrayIndexOutOfBoundsException 違背安全原則異常…

Spring Security 3 Ajax登錄–訪問受保護的資源

我看過一些有關Spring Security 3 Ajax登錄的博客&#xff0c;但是我找不到解決如何調用基于Ajax的登錄的博客&#xff0c;匿名用戶正在Ajax中訪問受保護的資源。 問題 – Web應用程序允許匿名訪問某些部分&#xff0c;并且某些部分是受保護的資源&#xff0c;需要用戶登錄。 …

測試環境下將centos6.8升級到centos7的操作記錄(轉)

在測試環境下安裝openstack&#xff0c;由于在centos6下安裝openstack&#xff0c;針對源的問題有很多&#xff0c;安裝起來很不順利&#xff01; 但是在centos7下安裝卻很順利&#xff0c;所以考慮將服務器由centos6升級到centos7 這個我是在測試機中運行的&#xff0c;建議不…

linux運維選擇題,初學Linux練習題

1、將/etc/issue文件中的內容轉換為大寫后保存至/tmp/issue.out文件中tr ‘a-z’ ‘A-Z’ < /etc/issue > /tmp/issue.out2、將當前系統登錄用戶的信息轉換為大寫后保存至/tmp/who.out文件中3、一個linux用戶給root發郵件&#xff0c;要求郵件標題為”help”&#xff0c…