Git命令
[TOC]
參考廖雪峰的git教程
1.1 git初始化
$ git config --global user.name "Your name"
指定全局提交用戶名
$ git config --global user.email "email@example.com"
指定全局提交郵箱 , 注意
git config
命令的--global
參數(shù)涮瞻,用了這個(gè)參數(shù),表示你這臺(tái)機(jī)器上所有的Git倉(cāng)庫(kù)都會(huì)使用這個(gè)配置雷激,當(dāng)然也可以對(duì)某個(gè)倉(cāng)庫(kù)指定不同的用戶名和Email地址赁豆。
1.2 創(chuàng)建版本庫(kù)
$ mkdir learngit
創(chuàng)建目錄
$ cd learngit
進(jìn)入目錄
$ pwd
顯示當(dāng)前目錄:
/d/learngit
$ git init
通過(guò)
git init
命令將該目錄變成Git可以管理的倉(cāng)庫(kù)醇蝴,多了一個(gè).git
目錄物邑,這個(gè)目錄是Git來(lái)跟蹤管理版本庫(kù)的弃理。.git
目錄默認(rèn)隱藏的溃论,可以通過(guò) ls -ah命令可以看見(jiàn)
$ git add readme.txt
將文件添加到版本倉(cāng)庫(kù)
git commmit -m "wrote a readme file"
-m
后面輸入的是本次的提交說(shuō)明
為什么Git添加文件需要add
,commit
一共兩步呢痘昌?因?yàn)?code>commit可以一次提交很多文件钥勋,所以你可以多次add
不同的文件,比如:
$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."
2.1 時(shí)光機(jī)穿梭
$ git status
查看倉(cāng)庫(kù)當(dāng)前狀態(tài)
$ git diff
查看當(dāng)前修改的內(nèi)容
2.2 版本回退
$ git log
查看 Git提交的歷史
commit e550f1e8500e0ffc8b655bb5eae71be60979c5da
Author: markzl zhoulong2312@163.com
Date: Thu Oct 19 11:19:20 2017 +0800append GPL
commit d06169b9ae751b98189c55d1ea3931f2f9d76105
Author: markzl zhoulong2312@163.com
Date: Thu Oct 19 11:15:44 2017 +0800add distributed
commit 677947b74b1824d81f0cea908426f69c1d5940fa
Author: markzl zhoulong2312@163.com
Date: Thu Oct 19 11:02:19 2017 +0800worte a readme file
$ git log --pretty=oneline
一行查看
git
的提交歷史e550f1e8500e0ffc8b655bb5eae71be60979c5da append GPL
d06169b9ae751b98189c55d1ea3931f2f9d76105 add distributed
677947b74b1824d81f0cea908426f69c1d5940fa worte a readme file
$ git reset --hard HEAD^
回退到上一個(gè)版本辆苔,上上個(gè)版本是HEAD^^算灸,往上100個(gè)版本是 HEAD~100
$ cat readme.txt
查看該文檔內(nèi)容
$ git reset --hard e550f1e
回到
commitid
對(duì)應(yīng)的版本
$ git reflog
可以查詢之前操作的commitid
$ git diff HEAD --readme.txt
比較工作區(qū)和版本庫(kù)里面最新版本的區(qū)別
$ git checkout -- readme.txt
將
readme.txt
文件在工作區(qū)的修改全部撤銷(xiāo),這里有兩種情況:一種是
readme.txt自修改后還沒(méi)有被放到暫存區(qū)驻啤,現(xiàn)在菲驴,撤銷(xiāo)修改就回到和版本庫(kù)一模一樣的狀態(tài)
3.1 遠(yuǎn)程倉(cāng)庫(kù)
$ git remote add origin git@github.cocm.xxxxx/learngit.git
添加遠(yuǎn)程倉(cāng)庫(kù)
$ git push -u origin master
把本地庫(kù)的內(nèi)容推送到遠(yuǎn)程,用
git push
命令街佑,實(shí)際上是把當(dāng)前分支master
推送到遠(yuǎn)程谢翎。由于遠(yuǎn)程庫(kù)是空的,我們第一次推送master
分支是沐旨,加上了-u
參數(shù)森逮,Git不但會(huì)把本地的master
分支內(nèi)容推送的遠(yuǎn)程新的master
分支,還會(huì)把本地的master
分支和遠(yuǎn)程的master
的分支關(guān)聯(lián)起來(lái)磁携,在以后的推送或者拉取時(shí)就可以簡(jiǎn)化命令:$ git push origin master
$ git clone git@github.cocm.xxxxx/learngit.git
克隆一個(gè)倉(cāng)庫(kù)在本地
4.1 分支管理
$ git checkout -b dev
$ git checkout
命令加上-b
參數(shù)表示創(chuàng)建并切換褒侧,相當(dāng)于以下兩條命令:
$ git branch dev
$ git checkout dev
$ git branch
查看當(dāng)前分支
在dev
分支上修改過(guò)后,切換到master
分支上
$ git merge dev
git merge
命令用于合并指定分支到當(dāng)前分支
合并完成后,可以刪除dev
分支了:
$ git branch -d dev
刪除
dev
分支
$ git log --graph --pretty=onelint --abbrev-commit
git log --graph
命令可以看到分支合并圖
$ git merge --no-ff -m "merge with no-ff" dev
注意
--no-ff
參數(shù) 表示禁用Fast forward
$ git stash
儲(chǔ)存當(dāng)前工作區(qū)內(nèi)容
$ git stash list
查看儲(chǔ)存工作區(qū)的內(nèi)容
$ git stash pop
恢復(fù)工作區(qū)之前保存的內(nèi)容闷供,和這個(gè)步驟:
$ git stash apply
: 恢復(fù) stash, 但是 stash內(nèi)容并沒(méi)有刪除
$ git stash drop
: 刪除stash內(nèi)容
$ git branch -d feature-vulcan
安全刪除分支烟央,沒(méi)有合并到主干提示錯(cuò)誤信息,無(wú)法刪除
$ git branch -D feature-vulcan
強(qiáng)制刪除該分支
5.1 標(biāo)簽管理
$ git tag v1.0
git tag <name>
打個(gè)標(biāo)簽
$ git tag
查看所有標(biāo)簽
$ git tag v0.9 76868723
根據(jù)對(duì)應(yīng)的 commit id 打標(biāo)簽
$ git show v0.9
查看標(biāo)簽信息
- 命令
git push origin <tagname>
可以推送一個(gè)本地標(biāo)簽歪脏; - 命令
git push origin --tags
可以推送全部未推送過(guò)的本地標(biāo)簽疑俭; - 命令
git tag -d <tagname>
可以刪除一個(gè)本地標(biāo)簽; - 命令
git push origin :refs/tags/<tagname>
可以刪除一個(gè)遠(yuǎn)程標(biāo)簽婿失。