GIT基本操作

来源:http://www.cnblogs.com/lbweb/archive/2016/10/23/5990296.html
-Advertisement-
Play Games

Git 的工作就是創建和保存你項目的快照及與之後的快照進行對比,簡單的說Git就是源代碼管理工具。下麵是工作中經常用到的簡單的Git命令,如有不足,希望提出交流,謝謝。 一.獲取與創建項目命令 1.git init 用 git init 在目錄中創建新的 Git 倉庫。 你可以在任何時候、任何目錄中 ...


Git 的工作就是創建和保存你項目的快照及與之後的快照進行對比,簡單的說Git就是源代碼管理工具。下麵是工作中經常用到的簡單的Git命令,如有不足,希望提出交流,謝謝。

一.獲取與創建項目命令

1.git init

git init 在目錄中創建新的 Git 倉庫。 你可以在任何時候、任何目錄中這麼做,完全是本地化的。

在目錄中執行 git init,就可以創建一個 Git 倉庫了。比如我們創建 xxxxxx項目:

$ mkdir xxxxxx

$ cd xxxxxx/

$ git initInitialized empty Git repository in /Users/tianqixin/www/runoob/.git/# 在 /www/runoob/.git/ 目錄初始化空 Git 倉庫完畢。

現在你可以看到在你的項目中生成了 .git 這個子目錄。 這就是你的 Git 倉庫了,所有有關你的此項目的快照數據都存放在這裡。

ls -a. .. .git

2.git clone

使用 git clone 拷貝一個 Git 倉庫到本地,讓自己能夠查看該項目,或者進行修改。

如果你需要與他人合作一個項目,或者想要複製一個項目,看看代碼,你就可以克隆那個項目。 執行命令:

 git clone [url]

[url] 為你想要複製的項目,就可以了。

例如我們克隆 Github 上的項目:

$ git clone [email protected]:schacon/simplegit.gitCloning into 'simplegit'...

remote: Counting objects: 13, done.

remote: Total 13 (delta 0), reused 0 (delta 0), pack-reused 13Receiving objects: 100% (13/13), done.Resolving deltas: 100% (2/2), done.Checking connectivity... done.

克隆完成後,在當前目錄下會生成一個 simplegit 目錄:

$ cd simplegit/ $ ls README Rakefile lib

上述操作將複製該項目的全部記錄。

$ ls -a.        ..       .git     README   Rakefile lib

$ cd .git

$ ls

HEAD        description info        packed-refs

branches    hooks       logs        refs

config      index       objects

預設情況下,Git 會按照你提供的 URL 所指示的項目的名稱創建你的本地項目目錄。 通常就是該 URL 最後一個 / 之後的項目名稱。如果你想要一個不一樣的名字, 你可以在該命令後加上你想要的名稱。

 

二.基本快照

Git 的工作就是創建和保存你的項目的快照及與之後的快照進行對比。本章將對有關創建與提交你的項目的快照的命令作介紹。

1.git add

git add 命令可將該文件添加到緩存,如我們添加以下兩個文件:

$ touch README

$ touch hello.php

$ ls

README hello.php

$ git status -s?? README?? hello.php

$

git status 命令用於查看項目的當前狀態。

接下來我們執行 git add 命令來添加文件:

$ git add README hello.php

現在我們再執行 git status,就可以看到這兩個文件已經加上去了。

$ git status -s

A  README

A  hello.php

$

新項目中,添加所有文件很普遍,我們可以使用 git add . 命令來添加當前項目的所有文件。

現在我們修改 README 文件:

$ vim README<pre><p>在 README 添加以下內容:<b># Runoob Git 測試</b>,然後保存退出。</p><p>再執行一下 git status:</p>

$ git status -s

AM README

A  hello.php

"AM" 狀態的意思是,這個文件在我們將它添加到緩存之後又有改動。改動後我們在執行 git add 命令將其添加到緩存中:

$ git add .

$ git status -s

A  README

A  hello.php

當你要將你的修改包含在即將提交的快照里的時候,需要執行 git add

2.git status

git status 以查看在你上次提交之後是否有修改。

我演示該命令的時候加了 -s 參數,以獲得簡短的結果輸出。如果沒加該參數會詳細輸出內容:

$ git statusOn branch master

Initial commit

Changes to be committed:

  (use "git rm --cached <file>..." to unstage)

 

new file:   README

new file:   hello.php

3.git diff

執行 git diff 來查看執行 git status 的結果的詳細信息。

git diff 命令顯示已寫入緩存與已修改但尚未寫入緩存的改動的區別。git diff 有兩個主要的應用場景。

  • 尚未緩存的改動:git diff 
  • 查看已緩存的改動: git diff --cached 
  • 查看已緩存的與未緩存的所有改動:git diff HEAD 
  • 顯示摘要而非整個 diffgit diff --stat 

hello.php 文件中輸入以下內容:

<?php

echo '天樹-博客:www.xxxxxx.com';?>

$ git status -s

A  README

AM hello.php

$ git diff

diff --git a/hello.php b/hello.php

index e69de29..69b5711 100644--- a/hello.php+++ b/hello.php@@ -0,0 +1,3 @@+<?php+echo '天樹-博客:www.xxxxxx.com';+?>

git status 顯示你上次提交更新後的更改或者寫入緩存的改動, 而 git diff 一行一行地顯示這些改動具體是啥。

接下來我們來查看下 git diff --cached 的執行效果:

$ git add hello.php

$ git status -s

A  README

A  hello.php

$ git diff --cached

diff --git a/README b/READMEnew file mode 100644

index 0000000..8f87495--- /dev/null+++ b/README@@ -0,0 +1 @@+# Runoob Git 測試

diff --git a/hello.php b/hello.phpnew file mode 100644

index 0000000..69b5711--- /dev/null+++ b/hello.php@@ -0,0 +1,3 @@+<?php+echo '天樹-博客:www.xxxxxx.com';+?>

4.git commit

使用 git add 命令將想要快照的內容寫入緩存區, 而執行 git commit 將緩存區內容添加到倉庫中。

Git 為你的每一個提交都記錄你的名字與電子郵箱地址,所以第一步需要配置用戶名和郵箱地址。

$ git config --global user.name 'xxxx'

$ git config --global user.email [email protected]

接下來我們寫入緩存,並提交對 hello.php 的所有改動。在首個例子中,我們使用 -m 選項以在命令行中提供提交註釋。

$ git add hello.php

$ git status -s

A  README

A  hello.php

$ $ git commit -m '第一次版本提交'[master (root-commit) d32cf1f] 第一次版本提交

 2 files changed, 4 insertions(+)

 create mode 100644 README

 create mode 100644 hello.php

 

現在我們已經記錄了快照。如果我們再執行 git status:

$ git status# On branch master

nothing to commit (working directory clean)

以上輸出說明我們在最近一次提交之後,沒有做任何改動,是一個"working directory clean:乾凈的工作目錄"

如果你沒有設置 -m 選項,Git 會嘗試為你打開一個編輯器以填寫提交信息。 如果 Git 在你對它的配置中找不到相關信息,預設會打開 vim。屏幕會像這樣:

# Please enter the commit message for your changes. Lines starting# with '#' will be ignored, and an empty message aborts the commit.# On branch master# Changes to be committed:#   (use "git reset HEAD <file>..." to unstage)## modified:   hello.php#~~".git/COMMIT_EDITMSG" 9L, 257C

如果你覺得 git add 提交緩存的流程太過繁瑣,Git 也允許你用 -a 選項跳過這一步。命令格式如下:

git commit -a

我們先修改 hello.php 文件為以下內容:

<?php

echo '天樹-博客:www.xxxxxx.com';

echo '天樹-博客:www.xxxxxx.com';?>

再執行以下命令:

git commit -am '修改 hello.php 文件'[master 71ee2cb] 修改 hello.php 文件

 1 file changed, 1 insertion(+)

5.git reset HEAD

git reset HEAD 命令用於取消已緩存的內容。

我們先改動文件 README 文件,內容如下:

# Runoob Git 測試# 天樹-博客

hello.php 文件修改為:

<?php

echo '天樹-博客:www.xxxxxx.com';

echo '天樹-博客:www.xxxxx.com';

echo '天樹-博客:www.xxxxx.com';?>

現在兩個文件修改後,都提交到了緩存區,我們現在要取消其中一個的緩存,操作如下:

$ git status -s

 M README

 M hello.php

$ git add .

$ git status -s

M  README

M  hello.pp

$ git reset HEAD -- hello.php Unstaged changes after reset:

M hello.php

$ git status -s

M  README

 M hello.php

現在你執行 git commit,只會將 README 文件的改動提交,而 hello.php 是沒有的。

$ git commit -m '修改'[master f50cfda] 修改

 1 file changed, 1 insertion(+)

$ git status -s

 M hello.php

可以看到 hello.php 文件的修改併為提交。

這時我們可以使用以下命令將 hello.php 的修改提交:

$ git commit -am '修改 hello.php 文件'[master 760f74d] 修改 hello.php 文件

 1 file changed, 1 insertion(+)

$ git statusOn branch master

nothing to commit, working directory clean

簡而言之,執行 git reset HEAD 以取消之前 git add 添加,但不希望包含在下一提交快照中的緩存。

6.git rm

git rm 會將條目從緩存區中移除。這與 git reset HEAD 將條目取消緩存是有區別的。 "取消緩存"的意思就是將緩存區恢復為我們做出修改之前的樣子。

預設情況下,git rm file 會將文件從緩存區和你的硬碟中(工作目錄)刪除。

如果你要在工作目錄中留著該文件,可以使用 git rm --cached

如我們刪除 hello.php文件:

$ git rm hello.php

rm 'hello.php'

$ ls

README

不從工作區中刪除文件:

$ git rm --cached README

rm 'README'

$ ls

README

7.git mv

git mv 命令做得所有事情就是 git rm --cached 命令的操作, 重命名磁碟上的文件,然後再執行 git add 把新文件添加到緩存區。

我們先把剛移除的 README 添加回來:

$ git add README

然後對其重名:

$ git mv README  README.md

$ ls

README.md

 


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

-Advertisement-
Play Games
更多相關文章
  • File->New->File->點擊->在編輯處出輸入:文件名.properties 文件的主要功能連接資料庫,例如: driver=oracle.jdbc.OracleDriverurl=jdbc:oracle:thin:@localhost:1521/XEusername=a001passwo ...
  • 環境:centos7 參考:http://blog.csdn.net/lk10207160511/article/details/50364088 步驟如下: 安裝redis: 打開終端 輸入 su 切換到root 用戶 輸入密碼 輸入 cd 進入root目錄 安裝gcc 已經安裝可跳過 安裝指令 ...
  • 1.添加新用戶並分配root許可權:先用root許可權登陸adduser xxx(你設置的用戶名)passwd xxx(省略輸入密碼)放到wheel組中:gpasswd -a xxx wheel切換到xxx用戶:su xxx(此時並沒有許可權)命令前面加上sudo,就有root許可權操作 2.禁止linux ...
  • Vi編輯器是Unix系統上早先的編輯器,在GNU項目將Vi編輯器移植到開源世界時,他們決定對其作一些改進。 於它不再是以前Unix中的那個原始的Vi編輯器了,開發人員也就將它重命名為Vi improved,或Vim。 為了方便使用,幾乎所有Linux發行版都創建了一個名為vi的別名,指向vim程式。 ...
  • 1、對gdb進行簽名,簽名過程詳見:http://jingyan.baidu.com/article/d169e1864dc24d436611d839.html; 2、重新啟動系統,同時按住鍵盤上的command + r 鍵進入系統恢復模式; 3、點擊上方菜單欄,實用工具-》終端,輸入命令:csru ...
  • 官方網址:https://www.elastic.co/products/elasticsearch/ 一、特性 1、支持中文分詞 2、支持多種數據源的全文檢索引擎 3、分散式 4、基於lucene的開源搜索引擎 5、Restful api 二、資源 smartcn, 預設的中文分詞 :https: ...
  • 1. 新建項目 項目名稱:MFCBaseMessage 2. 選擇基本對話框模式,如圖 ,點擊完成3. 最終如圖 4.右鍵添加類嚮導<!--StartFragment --> 5.添加滑鼠事件 6.在ON_LButtonDown添加如下代碼: 7。查看效果 8.模擬發送事件 9.查看效果 ...
  • Git分支管理簡介 幾乎每一種版本控制系統都以某種形式支持分支。使用分支意味著你可以從開發主線上分離開來,然後在不影響主線的同時繼續工作。 有人把 Git 的分支模型稱為"必殺技特性",而正是因為它,將 Git 從版本控制系統家族裡區分出來。 創建分支命令: git branch (branchna ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...