Git 分佈式版本控制 -- (一、基本使用)

    一個很適合入門的教程。即便你不知道什麼叫版本控制,看完也應該能會使用Git了。筆記之後再作吧。git

    http://www.liaoxuefeng.com shell

    一下內容比較混亂,強烈建議直接閱讀上面的網址連接中的 Git相關部分。
vim


windows 8 的 PowerShell 仍是挺不錯的。中文支持也挺好~windows

> mkdir g_test # 建立 目錄 g_test
> cd g_test # 切換到 目錄 g_test
> git init

幾個經常使用命令:緩存

> git init # 初始化一個git倉庫
> vim a.py # 建立一個文件
>
> git add a.py # 將a.py 文件,添加到暫存區。
> 
> git commit -m 'init' # 將暫存區的全部文件添加到當前分支, 

> git status # 查看當前倉庫狀態,是否有文件改動沒有提交

> git status
On branch master
nothing to commit, working directory clean
> vim a.py
> 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:   a.py

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

        a.py~

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

# 想要查看 a.py 到底修改了哪些內容,使用以下命令
> git diff a.py
WARNING: terminal is not fully functional
diff --git a/a.py b/a.py
index 49033be..016ad7e 100644
--- a/a.py
+++ b/a.py
@@ -2,3 +2,4 @@ import socket

 if __name__ == '__main__':
        print socket.gethostname()
+       print 'hi'

# 查看日誌
> git log

# 全部執行命令日誌
> git reflog  # 返回記錄執行的每一條命令

    工做區與暫存區、socket

工做區(Working Directory):就是能看到的文件夾。或者說是在使用 git init 的文件夾,除了裏面隱藏的 .git 文件夾。翻譯

版本庫(Repository):就是一個隱藏目錄 .git。版本控制

在 .git 版本庫中存在不少信息。
stage 或者叫作 index 的暫存區。
還有git默認建立的一個分支 master。以及指向這個分支master的指針 HEAD。

在使用 git add xx 時,就是將文件添加到stage暫存區。
使用 git commit xx 時,將暫存區的全部內容提交到當前分支。
(由於在git init 時,GIT自動建立了 master 分支)

 管理修改:
指針

    git 管理的是修改,而不是文件。能夠經過一個小實驗進行驗證。日誌

    對一個已經提交的文件進行修改--》執行git add --》再次對該文件進行修改 --》 再執行 git commit。

    執行 git diff HEAD -- xx.x 會發現兩個文件時不一樣的,而且能看到文件與第一次修改後的文件時相同的。所以能夠得知,git commit 提交的只是在add以前對文件進行的修改。

    對文件的修改,若是不add到緩存區,是不會到加入到commit中的。

> git add a.py # 將a.py 或 對a.py的修改 提交到緩存區
> git commit # 將修改提交到當前分支

> git diff HEAD -- a.py # 查看分支中文件 與 當前工做區中文件 的區別

撤銷修改:

    在修改完工做區文件時,使用 git status 能夠看到以下信息。

> 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:   a.py

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

        a.py~

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

# 在 master 分支中
# 一些修改沒有爲提交到分支中而放到緩衝區中的東西
    # (能夠看到提示:使用 git add <file> 去更新將要被提交到分支中的文件)
    # (使用 git checkout -- <file> 丟棄在工做區中的文件修改)
        # 被修改的: a.py
# 沒有被跟蹤的文件
    # (使用 git add <file> 加入到將會被提交到分支中去)
        #  a.py

# ... 深深的被本身的翻譯水平折服,簡直不能直視 ~~~~~

 刪除文件:

    工做區刪除文件以後,使用 git status

> git status
On branch 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)

        modified:   a.py
        deleted:    js.py

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

        a.py~

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

# 使用 git rm <file> 刪除文件
# 使用 git checkout -- <file> 覆蓋工做區文件

    # 使用溫 git rm <file> 只是將暫存區中的操做,還須要將修改提交到當前分支中。
    # git commit -m 'del <file>'
相關文章
相關標籤/搜索