git 基礎運用
一、git檔案狀態
在說git的檔案狀態前,首先要了解整個git的操作空間,git將空間分為工作區、暫存區、git倉庫
•工作區是指儲存在磁碟上供你使用修改的區域,一般就指從伺服器轉殖下來的資料
•暫存區是乙個檔案,儲存了下次要提交的檔案列表資訊
•git倉庫就是指本地倉庫,儲存了commit提交的各個版本,個人理解git倉庫指的是.git/objects資料夾,
儲存專案的元資料和物件資料庫。
git的檔案狀態有兩種,追蹤(track)和未追蹤(untrack),追蹤的意思是該檔案已經納入git的版本控制,git已經知道這個檔案,未追蹤是指該檔案未納入git的版本控制,git不知道這個檔案,這是個新的檔案。同時檔案在被追蹤到後又有三種狀態,根據git的三個區間可以分為已提交(committed)、已修改(modified)和已暫存(staged)。怎麼理解這三種狀態和前兩種狀態?舉個例子假如你初始化了乙個git倉,裡面什麼都沒有,建立乙個新的a.c檔案,這個檔案屬於untrack,使用git add後這個檔案屬於track並且暫存狀態,然後git commit提交屬於已提交狀態,最後你再次修改這個檔案屬於已修改未暫存狀態。
•已修改表示修改了檔案,但是還沒有儲存到資料庫
•已暫存表示對乙個已修改的檔案在當地版本做了標記,使之包含在下次提交的快照中
•已提交表示資料已經安全地儲存在本地資料庫中
二、git基礎命令
•git help
,git --help
,man git-
這三個命令可以用來查詢git手冊,-h
可以查詢精簡手冊。
•git config
是用來設定git外觀和行為的配置變數,通過三個不同的檔案配置。下面的路徑都是linux系統路徑。
1./etc/gitconfig
檔案:系統上的每個使用者的通用配置,–system選項相關
2.~/.gitconfig
:當前使用者配置,–global選項相關,~代表home路徑
3../.git/config
:當前倉庫的配置,–local選項相關
上述三個配置檔案的額優先順序依次遞增,git config有很多選項設定在這就不贅述。
•git init
初始化git倉庫
•git clone
從遠端伺服器轉殖git倉庫,後面接多種資料傳輸方式,https://、ssh等協議。
•git add
有兩個功能,乙個是追蹤(track),後面接路徑時,遞迴地追蹤該目錄下的所有檔案。乙個是把已跟蹤的檔案放到暫存區,可接檔名。
•git status
檢視檔案狀態,不多贅述。
•git diff
不加引數,比較的是工作目錄當前檔案和暫存區檔案之間的差異,也就是修改之後未暫存的變化。加引數--staged
,比較的是已暫存的檔案和最後一次提交的檔案的差異。
•git commit
將暫存區的改動提交給本地版本庫,--amend
修改提交資訊。
•git rm
從git中移除檔案,如果直接在本地刪除檔案,在git中並不會完全刪除,會顯示"changes not staged for commit"。執行git rm
可以清楚該提示。值得注意對於已經放入暫存區的檔案需要使用命令git rm -f
。如果想在本地儲存該檔案,不想被git追蹤可以使用git rm --cached
。可以使用glob正則來提高匹配範圍,詳細看git的正則匹配方式。
•git mv
移動檔案位置,也可重新命名檔案。
•git log
不加引數按照時間先後列出所有的提交。git log -p 或者--patch
列出每次提交的改動,加入-2
限定顯示幾筆提交。git log --stat
對每筆提交進行總結,列出修改了哪些地方等總結性的資訊。git log --pretty
可以使用不同的方式顯示提交歷史,pretty
可以取多種值如oneline、short、full等
。其中git log --pretty=format:" "
可以定製化格式輸出,詳細見文件。oneline 和 format
與graph
結合時可以顯示分支、合併歷史。與下圖中的引數結合可以過濾某些資訊。
•git reset
回退版本,git reset head
將暫存的檔案回退成未追蹤。如果想將檔案回退到沒修改的狀態使用git checkout --
。
•git tag
打標籤,打標籤分為輕量標籤和附註標籤,輕量標籤就是簡單的標籤只需要提供標籤名不需要描述,使用git show 《標籤》
顯示標籤也不會有額外的資訊,使用命令git tag 《標籤名》
。附註標籤就是詳細的標籤,在git中使用乙個完整的物件儲存,使用git tag -a 《標籤名》 -m 《描述》
。如果想對過去的提交打標籤可以使用git tag -a 《標籤名》 《雜湊值》
。共享標籤:將標籤上傳到遠端伺服器git push origin 《標籤名》
,git push origin --tags
可以傳送多個標籤。刪除標籤:git tag -d 《標籤名》
,要刪除遠端倉儲的標籤使用git push :refs/tags/
這個命令的含義是將:前的空白標籤推送到遠端標籤,從而刪除它;也可以使用git push --delete
刪除。標籤檢出的detached head問題不清楚
Git運用高階
git建立本地分支 git checkout b x 或git branch x git checkout x git從倉庫轉殖 轉殖專案 git clone git ip 專案.git 轉殖專案並在本地建立開發分支 git clone git ip 專案.git b develop git更新本地...
git的簡單運用
記得是在當前目錄 就是需要你上傳的檔案目錄 下開啟git bash here git clone ssh 此處為把你遠端的原件轉殖到本地 git status 檢視當前狀態 git add all 上傳當前所有檔案 git commit m 此處填寫為你上傳檔案的簡單說明 git pull orig...
C 執行緒運用基礎
threadstart ts new threadstart a.f threadstart 是乙個委託,用以關聯a.f方法 thread th new thread ts thread是乙個類,例項化物件時呼叫的構造函式引數為ts這個委託物件 th.start 執行緒開始 執行緒的同步控制 1.使...