一井辜、git add
git add . :他會監(jiān)控工作區(qū)的狀態(tài)樹绎谦,使用它會把工作時的所有變化提交到暫存區(qū),包括文件內(nèi)容修改(modified)以及新文件(new)粥脚,但不包括被刪除的文件窃肠。
git add -u :他僅監(jiān)控已經(jīng)被add的文件(即tracked file),他會將被修改的文件提交到暫存區(qū)刷允。add -u 不會提交新文件(untracked file)冤留。(git add --update的縮寫)
git add -A :是上面兩個功能的合集(git add --all的縮寫)
二、git commit
git commit -m "message":message即是我們用來簡要說明這次提交的語句树灶。
git commit -a -m "massage":其他功能如-m參數(shù)纤怒,加的-a參數(shù)可以將所有已跟蹤文件中的執(zhí)行修改或刪除操作的文件都提交到本地倉庫,即使它們沒有經(jīng)過git add添加到暫存區(qū)
三天通、git reset
git reset命令既可以回退版本泊窘,也可以把暫存區(qū)的修改回退到工作區(qū)。當我們用HEAD時像寒,表示最新的版本烘豹。
git reset HEAD -- 文件:撤銷暫存區(qū)‘此文件’的修改
git reset --hard HEAD:回退到上一次服務(wù)器版本
git reset --hard 版本號:徹底回退到某個服務(wù)器版本
git reflog會記錄所有HEAD的歷史,也就是說當你做 reset萝映,checkout等操作的時候吴叶,這些操作會被記錄在reflog中。
eg.執(zhí)行g(shù)it reflog命令:
$ git reflog
b7057a9 HEAD@{0}: reset: moving to b7057a9
98abc5a HEAD@{1}: commit: more stuff added to foo
b7057a9 HEAD@{2}: commit (initial): initial commit
回滾reset:
git reset --hard 98abc5a
即可恢復先前操作的commits序臂。
git log --pretty=oneline 查看歷史信息
四蚌卤、丟棄工作區(qū)修改
git checkout -- readme.txt:丟棄工作區(qū)readme.txt的修改
git checkout .:丟棄工作區(qū)的全部修改
五、創(chuàng)建分支
git checkout命令加上-b參數(shù)表示創(chuàng)建并切換奥秆,相當于以下兩條命令:
$ git branch dev
$ git checkout dev
在本地創(chuàng)建和遠程分支對應的分支逊彭,使用git checkout -b branch-name origin/branch-name,本地和遠程分支的名稱最好一致构订;
git branch命令會列出所有分支侮叮,當前分支前面會標一個*號
當前分支dev.png
//關(guān)聯(lián)遠程庫
git remote add origin git@git.xxxx.xiaoming/git-test-project.git
//推送到遠程倉庫origin
git push -u origin dev
//從現(xiàn)在起,只要本地作了提交悼瘾,就可以通過命令推送到遠程
$ git push origin dev
六囊榜、合并分支
git merge ''分支x” 命令用于合并'分支x”指定分支到當前分支审胸。
git merge –no-commit <branch>相當于一次快進式合并,不會生成一次提交
七卸勺、存儲修改
git stash可以把當前工作現(xiàn)場“儲藏”起來砂沛,等以后恢復現(xiàn)場后繼續(xù)工作
git stash list查看所有暫存列表
git stash apply stash@{0} 恢復到指定暫存修改0,1....
八曙求、刪除
//如果要丟棄一個沒有被合并過的分支碍庵,可以通過
git branch -D <name>強行刪除。
//刪除本地的遠程分支:
git branch -r -D origin/'分支名'
//遠程刪除git服務(wù)器上的分支:
git push origin -d '分支名'
九悟狱、多人協(xié)作
//要查看遠程庫的信息静浴,用git remote:
$ git remote
origin
遠程倉庫的默認名稱是origin。
//用git remote -v顯示更詳細的信息:
$ git remote -v
origin git@github.com:xxxx/xxx.git (fetch)
origin git@github.com:xxxx/xxx.git (push)
//推送分支
$ git push origin '分支名'
1.首先挤渐,可以試圖用git push origin <branch-name>推送自己的修改苹享;
2.如果推送失敗,則因為遠程分支比你的本地更新挣菲,需要先用git pull試圖合并富稻;
3.如果合并有沖突,則解決沖突白胀,并在本地提交;
4.沒有沖突或者解決掉沖突后抚岗,再用git push origin <branch-name>推送就能成功或杠!
5.如果git pull提示no tracking information,則說明本地分支和遠程分支的鏈接關(guān)系沒有創(chuàng)建宣蔚,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>向抢。
十、標簽控制
$git tag <tagname> 用于新建一個標簽胚委,默認為HEAD挟鸠,也可以指定一個commit id;
$git tag -a <tagname> -m "blablabla..." 可以指定標簽信息亩冬;
$ git tag -a v0.1 49e0cd22f6bd9510fe65084e023d9c4316b446a6 -m "blablabla..." 補打標簽
$git tag 可以查看所有標簽艘希。
$ git show v0.1 查看標簽v0.1的版本信息
$ git checkout [tagname] 切換到tagname標簽
$ git tag -d v0.1 刪除本地v0.1標簽
$ git push origin :refs/tags/v001刪除遠程v001標簽
默認情況下,git push 并不會把標簽傳送到遠端服務(wù)器上硅急,只有通過顯式命令才能分享標簽到遠端倉庫覆享。其命令格式如同推送分支,運行 git push origin [tagname] 即可:
$ git push origin v1.5
如果要一次推送所有本地新增的標簽上去营袜,可以使用 --tags 選項:
$ git push origin --tags