Git必須知道當(dāng)前版本是哪個(gè)版本屈尼,在Git中册着,用HEAD表示當(dāng)前版本,脾歧,上一個(gè)版本就是HEAD甲捏,上上一個(gè)版本就是HEAD,當(dāng)然往上100個(gè)版本寫(xiě)100個(gè)比較容易數(shù)不過(guò)來(lái)鞭执,所以寫(xiě)成HEAD~100司顿。
現(xiàn)在,我們要把當(dāng)前版本A 兄纺,回退到上一個(gè)版本“B”大溜,就可以使用git reset命令:
` git reset --hard HEAD^`
HEAD is now at ea34578 B
也可以查詢版本 :git log pretty =oneline
顯示出 所有 提交 版本記錄,選擇 id
執(zhí)行 git rest --hard id
即可估脆。
HEAD指向的版本就是當(dāng)前版本钦奋,因此,Git允許我們?cè)诎姹镜臍v史之間穿梭疙赠,使用命令git reset --hard commit_id
付材。
穿梭前,用git log
可以查看提交歷史圃阳,以便確定要回退到哪個(gè)版本厌衔。
要重返未來(lái),用git reflog
查看命令歷史限佩,以便確定要回到未來(lái)的哪個(gè)版本葵诈。
git clean -fd
git clean -xdf
用于刪除本地未提交到trunk的文件
git push origin --delete <BranchName>
刪除遠(yuǎn)程分支
git branch -r
查看遠(yuǎn)程分支
分支拉取master分支的代碼
git checkout master
git pull
git checkout Usage-Report
git merge master
git push
遠(yuǎn)程倉(cāng)庫(kù)相關(guān)命令
檢出倉(cāng)庫(kù):git clone git://github.com/jquery/jquery.git
查看遠(yuǎn)程倉(cāng)庫(kù):git remote -v
添加遠(yuǎn)程倉(cāng)庫(kù): git remote add [name] [url]
刪除遠(yuǎn)程倉(cāng)庫(kù):git remote rm [name]
修改遠(yuǎn)程倉(cāng)庫(kù):git remote set-url -- push [name][newUrl]
拉取遠(yuǎn)程倉(cāng)庫(kù):git pull [remoteName] [localBranchName]
推送遠(yuǎn)程倉(cāng)庫(kù):git push [remoteName] [localBranchName]
分支(branch)操作相關(guān)命令
查看遠(yuǎn)程分支git branch -r
查看遠(yuǎn)程和本地的所有分支git branch -a
查看本地分支和當(dāng)前分支 帶*的為當(dāng)前分支git branch
創(chuàng)建本地分支git branch branchName
注意新分支創(chuàng)建后不會(huì)自動(dòng)切換為當(dāng)前分支
切換分支 git checkout branchName
創(chuàng)建新分支并立即切換到新分支git checkout -b branchName
刪除本地分支 git branch -d /-D branchName
刪除遠(yuǎn)程分支git push origin --delete BranchName
創(chuàng)建遠(yuǎn)程分支(本地分支push到遠(yuǎn)程)git push origin branchName
git push origin test:master
// 提交本地test分支作為遠(yuǎn)程的master分支 //好像只寫(xiě)這一句,遠(yuǎn)程的github就會(huì)自動(dòng)創(chuàng)建一個(gè)test分支
git push origin test:test
// 提交本地test分支作為遠(yuǎn)程的test分支
如果想刪除遠(yuǎn)程的分支呢祟同?類似于上面作喘,如果:左邊的分支為空,那么將刪除:右邊的遠(yuǎn)程的分支晕城。
git push origin :test
// 剛提交到遠(yuǎn)程的test將被刪除泞坦,但是本地還會(huì)保存的,不用擔(dān)心
git checkout -b 本地分支名 origin/遠(yuǎn)程分支名
拉取遠(yuǎn)程分支到本地某個(gè)分支上
git fetch origin master:tmp
//在本地新建一個(gè)temp分支砖顷,并將遠(yuǎn)程origin倉(cāng)庫(kù)的master分支代碼下載到本地temp分支
git diff tmp
//來(lái)比較本地代碼與剛剛從遠(yuǎn)程下載下來(lái)的代碼的區(qū)別
git merge tmp
//合并temp分支到本地的master分支
git branch -d temp
//如果不想保留temp分支 可以用這步刪除
查看當(dāng)前詳細(xì)分支信息(可看到當(dāng)前分支與對(duì)應(yīng)的遠(yuǎn)程追蹤分支):
git branch -vv
查看當(dāng)前遠(yuǎn)程倉(cāng)庫(kù)信息
git remote -vv
git pull
相當(dāng)于git fetch 和merge的結(jié)合
版本(tag)操作相關(guān)命令
查看版本:git tag
創(chuàng)建版本:git tag [name]
刪除版本:git tag -d [name]
查看遠(yuǎn)程版本:git ls-remote --tags origin
創(chuàng)建遠(yuǎn)程版本(本地版本push到遠(yuǎn)程):git push origin [name]
刪除遠(yuǎn)程版本:git push origin :refs/tags/[name]
若存在很多未推送的本地標(biāo)簽贰锁,你想一次全部推送的話,可以使用一下的命令:
git push origin --tags
子模塊(submodule)相關(guān)操作命令
添加子模塊:git submodule add [url] [path]
如:$ git submodule add git://github.com/soberh/ui-libs.git src/main/webapp/ui-libs
初始化子模塊:git submodule init
----只在首次檢出倉(cāng)庫(kù)時(shí)運(yùn)行一次就行
更新子模塊:git submodule update
----每次更新或切換分支后都需要運(yùn)行一下
刪除子模塊:(分4步走哦)
1)git rm --cached [path]
- 編輯“.gitmodules”文件滤蝠,將子模塊的相關(guān)配置節(jié)點(diǎn)刪除掉
- 編輯“.git/config”文件豌熄,將子模塊的相關(guān)配置節(jié)點(diǎn)刪除掉
- 手動(dòng)刪除子模塊殘留的目錄
忽略一些文件、文件夾不提交
在倉(cāng)庫(kù)根目錄下創(chuàng)建名稱為“.gitignore”的文件物咳,寫(xiě)入不需要的文件夾名或文件锣险,每個(gè)元素占一行即可,如
target
bin
*.db