git系列---基礎使用

注: 該系列文章整理自《Pro Git》,非原創。git

在開始學習 Git 的時候,請努力分清你對其它版本管理系統的已有認識,如 Subversion 和 Perforce 等;這麼作能幫助你使用工具時避免發生混淆。 Git 在保存和對待各類信息的時候與其它版本控制系統有很大差別,儘管操做起來的命令形式很是相近,理解這些差別將有助於防止你使用中的困惑github

git系列:

git系列--基礎使用

git系列--分支

1、git思想和基本工做原理

1.1 直接記錄快照,而非差別比較

Git 和其它版本控制系統(包括 Subversion 和近似工具)的主要差異在於 Git 對待數據的方法。其它大部分系統以文件變動列表的方式存儲信息, 這類系統(CVS、Subversion、Perforce、Bazaar 等等)將它們保存的信息看做是一組基本文件和每一個文件隨時間逐步累積的差別。數據庫

Git 更像是把數據看做是對小型文件系統的一組快照。每次你提交更新,或在Git中保存項目狀態時,它主要對當時的所有文件製做一個快照並保存這個快照的索引。 爲了高效,若是文件沒有修改,Git再也不從新存儲該文件,而是隻保留一個連接指向以前存儲的文件。 Git 對待數據更像是一個快照流。安全

這種對待數據的方式,使得git分支管理特別強大。bash

1.2 近乎全部操做都是本地執行

在 Git 中的絕大多數操做都只須要訪問本地文件和資源,通常不須要來自網絡上其它計算機的信息,等有網絡時,再更新到服務器上。由於你在本地磁盤上就有項目的完整歷史,因此大部分操做看起來瞬間完成。服務器

1.3 三種狀態和三個工做區域

Git 有三種狀態,你的文件可能處於其中之一:已提交(committed)、已修改(modified)和已暫存(staged)。已提交表示數據已經安全的保存在本地數據庫中。已修改表示修改了文件,但還沒保存到數據庫中。已暫存表示對一個已修改文件的當前版本作了標記,使之包含在下次提交的快照中。網絡

由此引入 Git 項目的三個工做區域的概念:Git倉庫工做目錄以及暫存區域工具

Git 倉庫目錄是 Git 用來保存項目的元數據和對象數據庫的地方。 這是 Git 中最重要的部分,從其它計算機克隆倉庫時,拷貝的就是這裏的數據。post

工做目錄是對項目的某個版本獨立提取出來的內容。 這些從 Git 倉庫的壓縮數據庫中提取出來的文件,放在磁盤上供你使用或修改。學習

暫存區域是一個文件,保存了下次將提交的文件列表信息,通常在 Git 倉庫目錄中。 有時候也被稱做「索引」,不過通常說法仍是叫暫存區域。

基本的 Git 工做流程以下:

  1. 在工做目錄中修改文件。
  2. 暫存文件,將文件的快照放入暫存區域。
  3. 提交更新,找到暫存區域的文件,將快照永久性存儲到 Git 倉庫目錄。

若是 Git 目錄中保存着特定版本的文件,就屬於已提交狀態。若是做了修改並已放入暫存區域,就屬於已暫存狀態。若是自上次取出後,做了修改但尚未放到暫存區域,就是已修改狀態。

1.4 用戶信息

當安裝完 Git 應該作的第一件事就是設置你的用戶名稱與郵件地址。 這樣作很重要,由於每個Git的提交都會使用這些信息,而且它會寫入到你的每一次提交中,不可更改:

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
複製代碼

若是想要檢查你的配置,可使用 git config --list 命令來列出全部 Git 當時能找到的配置。

$ git config --list
user.name=John Doe
user.email=johndoe@example.com
color.status=auto
color.branch=auto
color.interactive=auto
color.diff=auto
...
複製代碼

你能夠經過輸入 git config : 來檢查 Git 的某一項配置

$ git config user.name
John Doe
複製代碼

2、git基礎使用

本章目標:配置並初始化一個倉庫(repository)、開始或中止跟蹤(track)文件、暫存(stage)或提交(commit)更改。 本章也將向你演示如何配置Git來忽略指定的文件和文件模式、如何迅速而簡單地撤銷錯誤操做、如何瀏覽你的項目的歷史版本以及不一樣提交(commits)間的差別、如何向你的遠程倉庫推送(push)以及如何從你的遠程倉庫拉取(pull)文件

2.1 獲取Git倉庫

有兩種取得 Git 項目倉庫的方法。

  1. 第一種是在現有項目或目錄下導入全部文件到 Git 中;
  2. 第二種是從一個服務器克隆一個現有的 Git 倉庫。

2.1.1 在現有目錄中初始化倉庫

若想對現有的項目進行管理,只須要進入該項目目錄並輸入:

$ git init

該命令將會建立初始倉庫。會建立一個名爲 .git(隱藏文件) 的子目錄,這個子目錄含有你初始化的Git倉庫中全部的必須文件,這些文件是Git倉庫的骨幹。

可是,在這個時候,咱們僅僅是作了一個初始化的操做,你的項目裏的文件尚未被跟蹤維護。若是該文件夾已經存在文件,你能夠開始跟蹤這些文件並提交。

$ git add *.c  //添加後綴爲.c的文件
$ git add LICENSE //添加LICENSE
$ git add . //添加全部文件
$ git commit -m 'initial project version' //提交
複製代碼

如今,你已經獲得了一個實際維護(或者說是跟蹤)着若干個文件的 Git 倉庫。

2.1.2 克隆現有倉庫

若是你想得到一份已經存在了的Git倉庫的拷貝,好比github上某個開源項目。這時就要用到git clone命令。Git克隆的是該Git倉庫服務器上的幾乎全部數據,而不是僅僅複製完成你的工做所須要文件。 當你執行 git clone命令的時候,默認配置下遠程 Git 倉庫中的每個文件的每個版本都將被拉取下來。事實上,若是你的服務器的磁盤壞掉了,你一般可使用任何一個克隆下來的用戶端來重建服務器上的倉庫。

克隆倉庫的命令格式是 git clone [url]。 好比,要克隆 Git 的可連接庫 ,能夠用下面的命令:

$ git clone https://github.com/XWayne/TapeView.git
複製代碼

這會在當前目錄下建立一個名爲 「TapeView」 的目錄,幷包含項目中的文件。 若是你想在克隆遠程倉庫的時候,自定義本地倉庫的名字,你可使用以下命令:

$ git clonehttps://github.com/XWayne/TapeView.git myTape

複製代碼

這將執行與上一個命令相同的操做,不過在本地建立的倉庫名字變爲 myTape。

2.2 記錄每次更新到倉庫

工做目錄下的全部文件,對於git來講,只有兩種狀態:已跟蹤或未跟蹤 ;已跟蹤文件指那些被歸入版本控制的文件,上次快照中有他們的記錄,工做一段時間後,可能處於未修改,已修改或已放入暫存區;除已跟蹤文件之外的全部其它文件都屬於未跟蹤文件,它們既不存在於上次快照的記錄中,也沒有放入暫存區。對於初次克隆某個倉庫的時候,工做目錄中的全部文件都屬於已跟蹤文件,並處於未修改狀態。

編輯已跟蹤文件後,Git將它們標記爲已修改文件,咱們將這些修改文件放入暫存區後就處於已放入暫存區,提交後,就又恢復成未修改狀態。

2.2.1 檢查當前文件狀態

要查看哪些文件處於什麼狀態,能夠用git status命令。如在克隆倉庫後當即使用此命令,會看到相似的輸出:

$ git status
On branch master
nothing to commit, working directory clean
複製代碼

這說明你如今的工做目錄至關乾淨。換句話說,全部已跟蹤文件在上次提交後都未被更改過,也沒有出現任何處於未跟蹤狀態的新文件

如今,建立一個新的README文件,若是以前不存在,再次運行git status命令,會看到新的未跟蹤文件:

$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

    README

nothing added to commit but untracked files present (use "git add" to track)
複製代碼

在狀態報告中能夠看到新建的 README 文件出如今 Untracked files 下面。

2.2.2 跟蹤新文件

使用命令 git add 開始跟蹤一個文件。 因此,要跟蹤 README文件,運行:

$ git add README
複製代碼

此時再運行git status命令,會看到README文件已被跟蹤,並處於暫存狀態:

$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   README
複製代碼

在 Changes to be committed 這行下面的,就說明是已暫存狀態。

2.2.3 暫存已修改文件

如今修改一個已被跟蹤的,名爲 CONTRIBUTING.md的文件而後運行 git status 命令,會看到下面內容:

$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   README

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:   CONTRIBUTING.md
複製代碼

文件 CONTRIBUTING.md 出如今 Changes not staged for commit這行下面,說明已跟蹤文件的內容發生了變化,但尚未放到暫存區。

要暫存此次更新,須要運行git add命令。這是個多功能命令:

  1. 能夠用它開始跟蹤新文件,或者把已跟蹤的文件放到暫存區
  2. 還能用於合併時把有衝突的文件標記爲已解決狀態等。

將這個命令理解爲 「添加內容到下一次提交中」 而不是「將一個文件添加到項目中」要更加合適。

咱們運行 git add 將"CONTRIBUTING.md"放到暫存區,而後再看看 git status 的輸出:

$ git add CONTRIBUTING.md
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   README
    modified:   CONTRIBUTING.md
複製代碼

如今兩個文件都已暫存,下次提交時就會一併記錄到倉庫。

2.2.4 提交更新

提交命令:

$ git commit -m "你要寫的本次提交的備註信息"
複製代碼

請記住,提交時記錄的是放在暫存區域的快照。任何還未暫存的仍然保持已修改狀態,能夠在下次提交時歸入版本管理。每一次運行提交操做,都是對你項目做一次快照,之後能夠回到這個狀態,或者進行比較。

2.2.5 跳過使用暫存區域

Git 提供了一個跳過使用暫存區域的方式,只要在提交的時候,給git commit 加上 -a 選項,Git就會自動把全部已經跟蹤過的文件暫存起來一併提交,從而跳過 git add 步驟:

2.2.6 忽略文件

通常咱們總會有些文件無需歸入Git的管理,也不但願它們總出如今未跟蹤文件列表。 一般都是些自動生成的文件,好比日誌文件,或者編譯過程當中建立的臨時文件等。 在這種狀況下,咱們能夠建立一個名爲 .gitignore 的文件,列出要忽略的文件模式。

參考:

  1. 忽略特殊文件
  2. 官方準備的各類配置文件

2.2.7 移除文件

要從 Git 中移除某個文件,即要從已跟蹤文件清單中移除,並連帶從工做目錄中刪除指定的文件,可使用命令git rm <file>

$ git rm PROJECTS.md
rm 'PROJECTS.md'
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    deleted:    PROJECTS.md
複製代碼

提交以後即完成這次操做。

若只想從Git倉庫中刪除,但仍但願保留在工做目錄即磁盤中(當你忘記添加 .gitignore 文件,不當心把一個很大的日誌文件或一堆.a這樣的編譯生成文件添加到暫存區時,這一作法尤爲有用),使用 --cached 選項:

$ git rm --cached README.txt
rm 'README.txt'

$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        deleted:    README.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        README.txt

複製代碼

2.2.8 查看提交歷史

查看提交歷史,是git log命令

$ git log
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Mon Mar 17 21:52:11 2008 -0700

    changed the version number

commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Sat Mar 15 16:40:33 2008 -0700

    removed unnecessary test

commit a11bef06a3f659402fe7563abf99ad00de2209e6
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Sat Mar 15 10:31:28 2008 -0700

    first commit
複製代碼

默認不用任何參數的話,git log會按提交時間列出全部的更新,最近的更新排在最上面。正如你所看到的,這個命令會列出每一個提交的SHA-1校驗和、做者的名字和電子郵件地址、提交時間以及提交說明。

更多git log 使用,參考:查看提交歷史:git log

2.3 撤消操做

在任何一個階段,你都有可能想要撤消某些操做。

注意:有些撤消操做是不可逆的。這是在使用 Git 的過程當中,會由於操做失誤而致使以前的工做丟失的少有的幾個地方之一。

2.3.1 從新提交

有時候咱們提交完了才發現漏掉了幾個文件沒有添加,或者提交信息寫錯了。此時,能夠運行帶有 --amend 選項的提交命令嘗試從新提交:

$ git commit --amend -m '新的提交信息'
複製代碼

這個命令會將暫存區中的文件提交。若是自上次提交以來你還未作任何修改(例如,在上次提交後立刻執行了此命令),那麼快照會保持不變,而你所修改的只是提交信息。將代替上一次提交的結果。

2.3.2 取消暫存的文件

命令:git reset HEAD <file>...來取消暫存

你已經修改了兩個文件而且想要將它們做爲兩次獨立的修改提交,可是卻意外地輸入了 git add * 暫存了它們兩個。如何只取消暫存兩個中的一個呢? git status 命令提示了你:

$ git add *
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    renamed:    README.md -> README
    modified:   CONTRIBUTING.md
複製代碼

在 「Changes to be committed」 文字正下方,提示使用 git reset HEAD <file>...來取消暫存。 因此,咱們能夠這樣來取消暫存 CONTRIBUTING.md 文件:

$ git reset HEAD CONTRIBUTING.md
Unstaged changes after reset:
M	CONTRIBUTING.md
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    renamed:    README.md -> README

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:   CONTRIBUTING.md
複製代碼

2.3.3 撤銷對文件的修改

使用git checkout -- <file>命令來撤銷文件的修改

若不想保留對文件的修改,即想恢復到上一次提交的樣子,能夠經過該命令取消(git status亦有提示)

$ git checkout -- CONTRIBUTING.md
複製代碼

注意: 在Git中任何已提交的東西幾乎老是能夠恢復的。甚至那些被刪除的分支中的提交或使用--amend選項覆蓋的提交也能夠恢復。然而,任何你未提交的東西丟失後極可能再也找不到

2.4 遠程倉庫的使用

爲了能在任意Git項目上協做,你須要知道如何管理本身的遠程倉庫。遠程倉庫是指託管在因特網或其餘網絡中的你的項目的版本庫。你能夠有好幾個遠程倉庫,一般有些倉庫對你只讀,有些則能夠讀寫。與他人協做涉及管理遠程倉庫以及根據須要推送或拉取數據。管理遠程倉庫包括瞭解如何添加遠程倉庫、移除無效的遠程倉庫、管理不一樣的遠程分支並定義它們是否被跟蹤等等。

2.4.1 查看遠程倉庫

若是想查看已經配置好的遠程倉庫服務器,能夠運行git remote命令,會羅列出你配好的每個遠程服務器的簡寫。(若是你已經克隆了本身的遠程倉庫,那麼至少應該能看到origin,這是Git給你克隆的倉庫服務器的默認名字)

$ git remote
origin
複製代碼

你也能夠指定選項 -v,會顯示須要讀寫遠程倉庫使用的Git保存的簡寫與其對應的 URL。

$ git remote -v
origin  https://github.com/XWayne/TapeView.git (fetch)
origin  https://github.com/XWayne/TapeView.git (push)
複製代碼

2.4.2 添加遠程倉庫

運行 git remote add <shortname> <url>添加一個新的遠程Git倉庫,同時指定一個你能夠輕鬆引用的簡寫:

$ git remote add pb  https://github.com/XWayne/TapeView.git
$ git remote -v
origin  https://github.com/XWayne/TapeView.git (fetch)
origin  https://github.com/XWayne/TapeView.git (push)
pb      https://github.com/XWayne/TapeView.git (fetch)
pb      https://github.com/XWayne/TapeView.git (push)

複製代碼

如今你能夠在命令行中使用字符串 pb 來代替整個 URL。

2.4.3 從遠程倉庫中抓取與拉取

從遠程倉庫中得到數據,能夠執行: $ git fetch [remote-name]

這個命令會訪問遠程倉庫,從中拉取全部你尚未的數據。 執行完成後,你將會擁有那個遠程倉庫中全部分支的引用,能夠隨時合併或查看。

注意: git fetch命令會將數據拉取到你的本地倉庫——它並不會自動合併或修改你當前的工做。當準備好時你必須手動將其合併入你的工做。

若是你有一個分支設置爲跟蹤一個遠程分支,可使用git pull命令來自動的抓取而後合併遠程分支到當前分支。

TODO:更多細節,後期分支再講

2.4.4 推送到遠程倉庫

當你想分享你的項目時,必須將其推送到上游。 這個命令很簡單:git push [remote-name] [branch-name]。 當你想要將 master 分支推送到 origin 服務器時(再次說明,克隆時一般會自動幫你設置好那兩個名字),那麼運行這個命令就能夠將你所作的備份到服務器:

TODO:更多細節,後期分支再講

2.4.5 查看某個遠程倉庫

若是想要查看某一個遠程倉庫的更多信息,可使用 git remote show [remote-name]命令

$ git remote show origin
* remote origin
  Fetch URL: https://github.com/schacon/ticgit
  Push  URL: https://github.com/schacon/ticgit
  HEAD branch: master
  Remote branches:
    master                               tracked
    dev-branch                           tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)
複製代碼

它一樣會列出遠程倉庫的 URL 與跟蹤分支的信息。 這些信息很是有用,它告訴你正處於 master 分支,而且若是運行 git pull,就會抓取全部的遠程引用,而後將遠程 master 分支合併到本地 master 分支。 它也會列出拉取到的全部遠程引用。

2.4.6 遠程倉庫的移除與重命名

若是想要重命名引用的名字能夠運行git remote rename 去修改一個遠程倉庫的簡寫名。 例如,想要將 pb 重命名爲 paul,能夠用 git remote rename 這樣作:

$ git remote rename pb paul
$ git remote
origin
paul
複製代碼

值得注意的是這一樣也會修改你的遠程分支名字。 那些過去引用 pb/master 的如今會引用 paul/master。

若是由於一些緣由想要移除一個遠程倉庫——你已經從服務器上搬走了或再也不想使用某一個特定的鏡像了,又或者某一個貢獻者再也不貢獻了——可使用 git remote rm

$ git remote rm paul
$ git remote
origin
複製代碼

注: 更多遠程倉庫的使用,參考:遠程倉庫的使用

2.5 打標籤

Git 能夠給歷史中的某一個提交打上標籤,以示重要。比較有表明性的是人們會使用這個功能來標記發佈結點(v1.0 等等)。

2.5.1 列出標籤

在 Git 中列出已有的標籤是很是簡單直觀的。 只須要輸入 git tag以字母順序列出標籤):

$ git tag
v0.1
v1.3
複製代碼

你也可使用特定的模式查找標籤。 例如,Git 自身的源代碼倉庫包含標籤的數量超過 500 個。 若是隻對 1.8.5 系列感興趣,能夠運行:

$ git tag -l 'v1.8.5*'
v1.8.5
v1.8.5-rc0
v1.8.5-rc1
v1.8.5-rc2
v1.8.5-rc3
v1.8.5.1
v1.8.5.2
v1.8.5.3
v1.8.5.4
v1.8.5.5
複製代碼

2.5.2 建立標籤

Git 使用兩種主要類型的標籤:輕量標籤(lightweight)與附註標籤(annotated)。

一個輕量標籤很像一個不會改變的分支——它只是一個特定提交的引用。

然而,附註標籤是存儲在 Git 數據庫中的一個完整對象。 它們是能夠被校驗的;其中包含打標籤者的名字、電子郵件地址、日期時間;還有一個標籤信息;而且可使用 GNU Privacy Guard (GPG)簽名與驗證。 一般建議建立附註標籤,這樣你能夠擁有以上全部信息;可是若是你只是想用一個臨時的標籤,或者由於某些緣由不想要保存那些信息,輕量標籤也是可用的。

(1)附註標籤

在 Git 中建立一個附註標籤是很簡單的。 最簡單的方式是當你在運行 tag 命令時指定 -a 選項:

$ git tag -a v1.4 -m "my version 1.4"
$ git tag
v0.1
v1.3
v1.4
複製代碼

經過使用git show命令能夠看到標籤信息與對應的提交信息:

$ git show v1.4
tag v1.4
Tagger: Ben Straub <ben@straub.cc>
Date:   Sat May 3 20:19:12 2014 -0700

my version 1.4

commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Mon Mar 17 21:52:11 2008 -0700

    changed the version number
複製代碼
(2)輕量標籤

輕量標籤本質上是將提交校驗和存儲到一個文件中——沒有保存任何其餘信息。只須要提供標籤名字:

$ git tag v1.99
$ git tag
v0.1
v1.3
v1.4
v1.5
v1.99
複製代碼

這時,若是在標籤上運行 git show,你不會看到額外的標籤信息。 命令只會顯示出提交信息:

$ git show v1.99
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Mon Mar 17 21:52:11 2008 -0700

    changed the version number
複製代碼

2.5.3 後期打標籤

你也能夠對過去的提交打標籤。 假設提交歷史是這樣的:

$ git log --pretty=oneline
15027957951b64cf874c3557a0f3547bd83b3ff6 Merge branch 'experiment'
a6b4c97498bd301d84096da251c98a07c7723e65 beginning write support
0d52aaab4479697da7686c15f77a3d64d9165190 one more thing
6d52a271eda8725415634dd79daabbc4d9b6008e Merge branch 'experiment'
0b7434d86859cc7b8c3d5e1dddfed66ff742fcbc added a commit function
4682c3261057305bdd616e23b64b0857d832627b added a todo file
166ae0c4d3f420721acbb115cc33848dfcc2121a started write support
9fceb02d0ae598e95dc970b74767f19372d61af8 updated rakefile
964f16d36dfccde844893cac5b347e7b3d44abbc commit the todo
8a5cbc430f1a9c3d00faaeffd07798508422908a updated readme
複製代碼

如今,假設在 v1.2 時你忘記給項目打標籤,也就是在 「updated rakefile」 提交。 你能夠在以後補上標籤。 要在那個提交上打標籤,你須要在命令的末尾指定提交的校驗和(或部分校驗和):

$ git tag -a v1.2 9fceb02 -m "version 1.2"
複製代碼

2.5.4 共享標籤

默認狀況下,git push命令並不會傳送標籤到遠程倉庫服務器上。 在建立完標籤後你必須顯式地推送標籤到共享服務器上。 這個過程就像共享遠程分支同樣——你能夠運行git push origin [tagname]

$ git push origin v1.0
複製代碼

可在github項目的「release」中看到:

若是想要一次性推送不少標籤,也可使用帶有 --tags選項的 git push 命令。 這將會把全部不在遠程倉庫服務器上的標籤所有傳送到那裏。

$ git push origin --tags
複製代碼

如今,當其餘人從倉庫中克隆或拉取,他們也能獲得你的那些標籤。

2.5.5 刪除標籤

要刪除掉你本地倉庫上的標籤,可使用命令 git tag -d <tagname>。例如,可使用下面的命令刪除掉一個輕量級標籤:

$ git tag -d v1.0
Deleted tag 'v1.0' (was 4e28e8f)
複製代碼

應該注意的是上述命令並不會從任何遠程倉庫中移除這個標籤,你必須使用 git push <remote> :refs/tags/<tagname>來更新你的遠程倉庫:

$ git push origin :refs/tags/v1.0
To https://github.com/XWayne/TapeView.git
 - [deleted]         v1.0

複製代碼

2.6 Git別名

Git 並不會在你輸入部分命令時自動推斷出你想要的命令。 若是不想每次都輸入完整的 Git 命令,能夠經過 git config 文件來輕鬆地爲每個命令設置一個別名。

$ git config --global alias.ci commit
複製代碼

這意味着,當要輸入 git commit 時,只須要輸入 git ci

注: 更多別名的使用,參考:Git別名

備註

該系列文章筆記整理自《Pro Git》,非原創。

相關文章
相關標籤/搜索