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