1. 程式人生 > 其它 >Git 基礎指令

Git 基礎指令

Git 基礎指令



獲取 Git 倉庫

在已存在目錄中初始化倉庫

  進入到需求目錄(想要建立倉庫的目錄),必須是空資料夾。如果在一個而非空資料夾中進行版本控制,你應該開始追蹤這些檔案並進行初始提交。

命令:

$ git init

  該命令將建立一個名為 .git 的子目錄,這個子目錄含有你初始化的 Git 倉庫中所有的必須檔案.

.git 的目錄典型結構:

.git/
    config              # 檔案包含專案特有的配置選項
    description         # 僅供 GitWeb 程式使用
    HEAD                # 指向目前被檢出的分支
    
    hooks/              # 包含客戶端或服務端的鉤子指令碼(hook scripts)
    info/               # 包含一個全域性性排除(global exclude)檔案
    objects/            # 儲存所有資料內容
    refs/               # 儲存指向資料(分支、遠端倉庫和標籤等)的提交物件的指標

克隆現有的倉庫

  Git 克隆的是該 Git 倉庫伺服器上的幾乎所有資料,而不是僅僅複製完成你的工作所需要檔案。 當你執行克隆命令的時候,預設配置下遠端 Git 倉庫中的每一個檔案的每一個版本都將被拉取下來。

先進入到需求目錄(想要建立倉庫的目錄)

命令:

git clone <url> [name]

<url> 指想要克隆的倉庫地址,Git 支援多種協議,包括 https

[name] 可選,克隆後在你本地的名字(你想要一個不一樣的名字)

記錄倉庫與倉庫的更新

倉庫的記錄

  工作目錄下的每一個檔案都不外乎這兩種狀態:已記錄 或 未記錄。

  • 已記錄的檔案:是指那些被納入了版本控制的檔案,在上一次快照中有它們的記錄,在工作一段時間後。它們的狀態可能是未修改,已修改或已放入暫存區。簡而言之,已記錄的檔案就是 Git 已經記錄的檔案。

  • 未記錄檔案:工作目錄中除已記錄檔案外的其它所有檔案都屬於未記錄檔案。它們既不存在於上次快照的記錄中,也沒有被放入暫存區。

注意:初次克隆某個倉庫的時候,工作目錄中的所有檔案都屬於已記錄檔案,並處於未修改狀態,因為 Git 剛剛檢出了它們,而你尚未編輯。

更新過程:


    未記錄     ->  編輯
    已編輯     ->  暫存區
    暫存區     ->  提交
    已提交     ->  已記錄

檢查當前檔案狀態

  想要檢視哪些檔案處於什麼狀態

命令:

git status

初次克隆的倉庫

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean

  這說明你現在的工作目錄相當乾淨。否則 Git 會在這裡列出來。

三部曲


  工作區  - git add ->  暫存區  - git commit -> 歷史區  - git push -> 遠端倉庫

    | <- git checkout --  |                       |                       |
    |                                             |                       |
    |    <----   git checkout HEAD   ----         |                       |
    |                                                                     |
    |                <----------    git pull   ----------                 |

跟蹤新檔案

  命令:

git add <files>

開始跟蹤一個檔案,將檔案從工作區儲存到暫存區。

可以使用正則表示式一次性完成多個提交。

可以使用 git status 驗證操作

提交更新

  命令:

git commit

將暫存區內容提交到歷史區,
命令執行後需要填寫提交資訊

想要快速提交可以:

git commit -m <str>

<str> 為提交資訊

移除檔案

  如果你直接從工作目錄中刪除檔案,執行 git status 時就會在 “Changes not staged for commit” 部分

$ rm PROJECTS.md
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        deleted:    PROJECTS.md

no changes added to commit (use "git add" and/or "git commit -a")

需要使用 git rm 這樣以後就不會出現在未跟蹤檔案清單中了。

如果要刪除之前修改過或已經放到暫存區的檔案,則必須使用強制刪除選項 -f

推送到遠端倉庫

  命令:

git push <remote> <branch>

<remote> 地址或倉庫簡稱,

<branch> 推送分支


  如果想檢視你已經配置的遠端倉庫伺服器,執行 git remote 命令

指定選項 -v,會顯示需要讀寫遠端倉庫使用的 Git 儲存的簡稱與其對應的 URL。

執行:

git remote add <shortname> <url> 

新增一個新的遠端 Git 倉庫,

<shortname> 給遠端倉庫設定的簡稱

<url> 地址


  執行 git remote rename 可以修改一個遠端倉庫的簡寫名

$ git remote rename pb paul
$ git remote
origin
paul

這同樣也會修改你所有遠端跟蹤的分支名字。


  使用 git remote removegit remote rm 可以刪除配置的遠端倉庫伺服器


  使用 git fetch <remote> 能同步遠端倉庫。

記錄倉庫與倉庫的撤消操作

在任何一個階段,你都有可能想要撤消某些操作。
這裡,我們將會學習幾個撤消你所做修改的基本工具。

注意,有些撤消操作是不可逆的。
這是在使用 Git 的過程中,會因為操作失誤而導致之前的工作丟失的少有的幾個地方之一。

  命令:

git reset HEAD <file>

我們可以這樣來取消暫存

  撤消對檔案的修改,將它還原成上次提交時的樣子(或者剛克隆完的樣子,或者剛把它放入工作目錄時的樣子)

git checkout -- <file>

你對那個檔案在本地的任何修改都會消失——Git 會用最近提交的版本覆蓋掉它。 除非你確實清楚不想要對那個檔案的本地修改了,否則請不要使用這個命令。

注意:這並不是最好的方法,在 Git 分支儲存進度,這通常是更好的做法。