1 git clone
git clone https://github.com/bcit-ci/CodeIgniter.git 只克隆
git clone https://username@github.com/bcit-ci/CodeIgniter.git 攜帶用戶名
https://username:password@github.com/bcit-ci/CodeIgniter.git 攜帶用戶名和密碼
2.git add -A
git add -A #提交所有的文件,所有tracked文件中被修改過或已刪除文件和所有untracted的文件信息添加到索引庫
git add . #提交當前目錄
git add -u #add to index only files modified or deleted and not those created
git add -i #查看中被所有修改過或已刪除文件但沒有提交的文件
[s]tatus: 查看當前的文件狀態
[u]pdate: 把已經tracked的文件添加到索引庫中
[r]evert: 把已經添加到索引庫中的文件從索引庫中剔除。
[a]dd untracked 把已經tracked的文件添加到索引庫中
[p]atch
[d]iff: 可以比較索引庫中文件和原版本的差異
[q]uit: 退出git add -i命令系統
[h]elp:
3.git commit -m
一般倉庫中的文件可能存在于這三種狀態:
1)Untracked files → 文件未被跟蹤;
2)Changes to be committed → 文件已暫存,這是下次提交的內容;
3) Changes bu not updated → 文件被修改,但并沒有添加到暫存區。如果 commit 時沒有帶 -a 選項,這個狀態下的文件不會被提交。
git commit 提交暫存區里的內容
git commit -a 除了將暫存區里的文件提交外,還提交 Changes bu not updated 中的文件。
git commit -a -m "info"
git commit --amend
git commit --amend -a #又或者我們發現在提交時忘記使用 -a 選項,導致 Changes bu not updated 中的內容沒有被提交,我們可以使用
#reference:http://www.cnblogs.com/eddy-he/archive/2012/03/22/git_commit.html
4.git push
git pull
git pull <遠程主機名> <遠程分支名>:<本地分支名>#比如,取回origin主機的next分支,與本地的master分支合并,需要寫成下面這樣。
git pull origin next:master
#如果遠程分支是與當前分支合并,則冒號后面的部分可以省略。
git pull origin next
相當于:
git fetch origin
git merge origin/next
#如果當前分支與遠程分支存在追蹤關系,git pull就可以省略遠程分支名。
git pull origin
#如果當前分支只有一個追蹤分支,連遠程主機名都可以省略。
git pull
5.git config --global user.name
git config --global user.email
git config --global credential.helper store
設置用戶名和郵箱,設置存儲密碼
6.git fetch
獲取遠程的更新
7.git merge
合并更新
8.git stash (這個功能大家爭議比較多)
備份當前的工作區的內容,從最近的一次提交中讀取相關內容,讓工作區保證和上次提交的內容一致。同時,將當前的工作區內容保存到Git棧中。
git stash pop:
從Git棧中讀取最近一次保存的內容,恢復工作區的相關內容。由于可能存在多個Stash的內容,所以用棧來管理,pop會從最近的一個stash中讀取內容并恢復。
git stash list:
顯示Git棧內的所有備份,可以利用這個列表來決定從那個地方恢復。
git stash clear:
清空Git棧。此時使用gitg等圖形化工具會發現,原來stash的哪些節點都消失了。
使用git的時候,我們往往使用branch解決任務切換問題,例如,我們往往會建一個自己的分支去修改和調試代碼, 如果別人或者自己發現原有的分支上有個不得不修改的bug,我們往往會把完成一半的代碼 commit提交到本地倉庫,然后切換分支去修改bug,改好之后再切換回來。這樣的話往往log上會有大量不必要的記錄。其實如果我們不想提交完成一半或者不完善的代碼,但是卻不得不去修改一個緊急Bug,那么使用'git stash'就可以將你當前未提交到本地(和服務器)的代碼推入到Git的棧中,這時候你的工作區間和上一次提交的內容是完全一樣的,所以你可以放心的修 Bug,等到修完Bug,提交到服務器上后,再使用'git stash apply'將以前一半的工作應用回來。也許有的人會說,那我可不可以多次將未提交的代碼壓入到棧中?答案是可以的。當你多次使用'git stash'命令后,你的棧里將充滿了未提交的代碼,這時候你會對將哪個版本應用回來有些困惑,'git stash list'命令可以將當前的Git棧信息打印出來,你只需要將找到對應的版本號,例如使用'git stash apply stash@{1}'就可以將你指定版本號為stash@{1}的工作取出來,當你將所有的棧都應用回來的時候,可以使用'git stash clear'來將棧清空。
在這里順便提下git format-patch -n , n是具體某個數字, 例如 'git format-patch -1' 這時便會根據log生成一個對應的補丁,如果 'git format-patch -2' 那么便會生成2個補丁,當然前提是你的log上有至少有兩個記錄。
stash的話一定是基于某個版本的,而且將stash從棧內拿出來,一定是需要還原到對應的版本。通過git stash list可以清晰的看到每個stash對應的版本,如:
stash@{0}: WIP on master: e95dc37 Require administrator authority...
stash@{1}: WIP on md_develop: fcaa18f Add an object to recieve md...
比如你需要恢復stash@{1}這時候你需要做的是:
git checkout fcaa18f
git stash apply stash@{1}
盡量不使用類似git stash pop的方法。如果你當前fcaa18f所在的分支有繼續往前推進的話,建議在fcaa18f上建立新的分支,然后繼續stash@{1}的修改,并將stash@{1}的內容提交到新的分支上:
git branch new_develop
git checkout new_develop
git add FILES
git commit
后續再通過cherry-pick的方式,將修改的內容應用到其他需要這個修改的分支之上
#reference :http://www.cppblog.com/deercoder/archive/2011/11/13/160007.html
9.git log
10.git status
11:git show