• <nav id="wkkge"><strong id="wkkge"></strong></nav>
  • <menu id="wkkge"></menu>
  • Git教程
    Git標簽管理
    Git分支
    Git操作
    Git應用
    GitHub應用
    IDEA對于Git&GitHub的支持
    Git與GitHub使用注意事項

    Git基本操作

     

     

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

     

    一、獲取與創建項目命令

     

    ⒈ git init

     

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

     

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

     

    $ mkdir bjpowernode
    $ cd bjpowernode/
    $ git init
    Initialized empty Git repository in /Users/tianqixin/www/bjpowernode/.git/
    # 在 /www/bjpowernode/.git/ 目錄初始化空 Git 倉庫完畢。

     

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

     

    ls -a
    .    ..    .git

     

    ⒉ git clone

     

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

     

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

     

     git clone [url]

     

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

     

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

     

    $ git clone git@github.com:schacon/simplegit.git
    Cloning into 'simplegit'...
    remote: Counting objects: 13, done.
    remote: Total 13 (delta 0), reused 0 (delta 0), pack-reused 13
    Receiving 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 的工作就是創建和保存你的項目的快照及與之后的快照進行對比。本章將對有關創建與提交你的項目的快照的命令作介紹。

     

    ⒈ 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

     

    在 README 添加以下內容:# bjpowernode Git 測試,然后保存退出。

     

    再執行一下 git status:

     

    $ git status -s
    AM README
    A  hello.php

     

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

     

    $ git add .
    $ git status -s
    A  README
    A  hello.php

     

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

     

    ⒉ git status

     

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

     

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

     

    $ git status
    On branch master
    
    Initial commit
    
    Changes to be committed:
      (use "git rm --cached <file>..." to unstage)
    
        new file:   README
        new file:   hello.php

     

    ⒊ git diff

     

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

     

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

     

    ① 尚未緩存的改動:git diff

     

    ② 查看已緩存的改動: git diff --cached

     

    ③ 查看已緩存的與未緩存的所有改動:git diff HEAD

     

    ④ 顯示摘要而非整個 diff:git diff --stat

     

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

     

    <?php
    echo '動力節點:www.povk5b.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.povk5b.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/README
    new file mode 100644
    index 0000000..8f87495
    --- /dev/null
    +++ b/README
    @@ -0,0 +1 @@
    +# bjpowernode Git 測試
    diff --git a/hello.php b/hello.php
    new file mode 100644
    index 0000000..69b5711
    --- /dev/null
    +++ b/hello.php
    @@ -0,0 +1,3 @@
    +<?php
    +echo '動力節點:www.povk5b.com';
    +?>

     

    ⒋ git commit

     

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

     

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

     

    $ git config --global user.name 'bjpowernode'
    $ git config --global user.email test@bjpowernode.com

     

    接下來我們寫入緩存,并提交對 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.povk5b.com';
    echo '動力節點:www.povk5b.com';
    ?>

     

    再執行以下命令:

     

    git commit -am '修改 hello.php 文件'
    [master 71ee2cb] 修改 hello.php 文件
     1 file changed, 1 insertion(+)

     

    ⒌ git reset HEAD

     

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

     

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

     

    # bjpowernode Git 測試
    # 動力節點 

     

    hello.php 文件修改為:

     

    <?php
    echo '動力節點:www.povk5b.com';
    echo '動力節點:www.povk5b.com';
    echo '動力節點:www.povk5b.com';
    ?>

     

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

     

    $ git status -s
     M README
     M hello.php
    $ git add .
    $ git status -s
    M  README
    M  hello.php
    $ 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 status
    On branch master
    nothing to commit, working directory clean

     

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

     

    ⒍ git rm

     

    如果只是簡單地從工作目錄中手工刪除文件,運行 git status 時就會在 Changes not staged for commit 的提示。

     

    要從 Git 中移除某個文件,就必須要從已跟蹤文件清單中移除,然后提交。可以用以下命令完成此項工作

     

    git rm <file>

     

    如果刪除之前修改過并且已經放到暫存區域的話,則必須要用強制刪除選項 -f

     

    git rm -f <file>

     

    如果把文件從暫存區域移除,但仍然希望保留在當前工作目錄中,換句話說,僅是從跟蹤清單中刪除,使用 --cached 選項即可

     

    git rm --cached <file>

     

    如我們刪除 hello.php文件:

     

    $ git rm hello.php 
    rm 'hello.php'
    $ ls
    README

     

    不從工作區中刪除文件:

     

    $ git rm --cached README 
    rm 'README'
    $ ls
    README

     

    可以遞歸刪除,即如果后面跟的是一個目錄做為參數,則會遞歸刪除整個目錄中的所有子目錄和文件:

     

    git rm –r * 

     

    進入某個目錄中,執行此語句,會刪除該目錄下的所有文件和子目錄。

     

    ⒎ git mv

     

    git mv 命令用于移動或重命名一個文件、目錄、軟連接。

     

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

     

    $ git add README 

     

    然后對其重名:

     

    $ git mv README  README.md
    $ ls
    README.md

     

    全部教程
  • <nav id="wkkge"><strong id="wkkge"></strong></nav>
  • <menu id="wkkge"></menu>
  • 面对面棋牌游戏