一個很適合入門的教程。即便你不知道什麼叫版本控制,看完也應該能會使用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>'