本章主要介紹git的基本結構和基本指令。
如下圖(記為圖1)所示,乙個git工程可以分為三個區域:工作目錄,快取區域,git倉庫。
工作目錄就是你的所有檔案,快取區域是暫存下一次commit要更改的內容的區域,git倉庫則存著所有的commits。
在上圖介於working directory 和 staging area之間的檔案的狀態大致可以分為如下幾種(記為圖2):
untracked表示該檔案還未被git跟蹤,不會進行版本管理。後面的unmodified、modified、staged均為 tracked之後的狀態。staged即表面加入了staging area。
我們可以使用這個命令來檢視當前工程中所有檔案的狀態。它的結果大致如下(記為圖3):
如圖2所示,add的作用是將各種狀態的檔案變成staged狀態。它可以新增多個檔案或使用萬用字元:
git add *.cpp
git add a.doc b.txt
# 以下兩個都代表所有檔案
git add .
git add *
用於將staging area中的檔案存到git倉庫中。
基礎用法如下:
# -m 表示該commit的 message
git commit -m 「 add new files」
# -a 表示將已經跟蹤(tracked)的檔案都加入staging area,比如圖3中「changes not staged for
commit」中的檔案。可以省去git add的步驟。
git commit -a -m 「 change some files「
# 可以將這兩個指令合併
git commit -am 「change some files」
用於刪除檔案。常用
# 不能刪除圖2中 untracked 和 staged 的檔案
git rm a.cpp
# 強制刪除(如untracked 和 staged 的檔案)
git rm -f a.cpp
# 只從staging area中刪除,而不從working directory中刪除
git rm --cached a.cpp
# 刪除所有檔案(不能刪除資料夾)
git rm *
# 刪除所有檔案包括資料夾
git rm \*
# 和上面效果相同
git rm * -r 或 git rm . -r
# 刪除log資料夾下的.log檔案,不包括子目錄
git rm log/*.log
# 包括子目錄中的
git rm log/\*.log
顯示working directory與staging area中的內容的不同之處。如下圖所示:
# 顯示 staging area和 上一次提交(commit)之間的區別
git diff --cached
# 顯示 working directory和 上一次提交(commit)之間的區別
git diff head
# 顯示兩個
(或 commit)之間的區別
git diff
..如 git diff master..origin/master
顯示commits的歷史記錄,效果如下圖所示:
顯示指定範圍的log(注:a..b在git中的意思是b中含有的而a中不含有的那些commits,如master..test表示test分支含有的,而master分支不含有的那些commits)
git log --stat
同時顯示改動的統計資訊
同時顯示改動的詳細資訊
git log --oneline
每個commit 一行
可以使用alias來給這個命令取乙個別名。方法是在.gitconfig中新增
python零基礎教程之Python練習例項1
題目 有四個數字 1 2 3 4,能組成多少個互不相同且無重複數字的三位數?各是多少?程式分析 可填在百位 十位 個位的數字都是1 2 3 4。組成所有的排列後再去 掉不滿足條件的排列。程式源 usr bin python coding utf 8 for i in range 1,5 for j ...
喜大普奔!python零基礎教程來了!
python語言是一種典型的指令碼語言,簡潔,語法約束少,接近人類語言。有豐富的資料結構,例如列表 字典 集合等。具有可移植性,支援面向過程和物件導向程式設計,並且開源。最近兩年python的關注度上公升得非常快,越來越多的人想要學習python,這裡向大家介紹一下,如何才能快速入門python?成...
iOS開發零基礎教程之Git的一些常用命令
在使用git之前我們首先要先註冊一下git的使用者資訊 git config global user.name 你的名字 git config global user.email 你的郵箱 輸入完成之後可以輸入如下命令檢視使用者資訊 git config list 如下圖所示 當團隊在進行協作開發的...