git常用命令
一、 創(chuàng)建與合并分支(轉(zhuǎn)自:http://www.rzrgm.cn/lovychen/p/9051601.html)
1、 從master分支創(chuàng)建dev分支并切換到dev分支:
git checkout master git checkout -b dev
其中,git checkout -b dev 等價(jià)于:
git branch dev git checkout dev
查看本地當(dāng)前的分支,分支前面帶“*”表示當(dāng)前分支,剩下的分支表示本地有的分支:
git branch
查看遠(yuǎn)程全部的分支,白色的表示本地有的,紅色的表示本地沒有,僅在遠(yuǎn)程存在:
git branch -a
2、修改代碼、提交代碼(當(dāng)前的操作是在dev分支上進(jìn)行)
git add a.html git commit -m "提交文件a.html"
3、分支合并(將dev合并到master)
git checkout master git merge dev
4、合并完成后,刪除dev分支.(刪除dev分支時(shí),注意我們當(dāng)前所在的分支不能是dev分支)
git branch -d dev
5、刪除后,查看分支(此時(shí)看不到dev分支了)
git branch
6、總結(jié) :工作中經(jīng)常從master創(chuàng)建新的分支,具體操作如下:
git checkout master git checkout -b issues1234 git push origin issues1234 git add .. git commit -m "***" git push origin issues1234
注意:將本地分支branch1推到遠(yuǎn)端的branch2操作步驟:
git push origin branch1:branch2
7、刪除分支
git branch -D issues1234 //本地強(qiáng)制刪除分支issues1234 git push origin :issues1234 //推到遠(yuǎn)程
二、 解決沖突
1、發(fā)生沖突的文件
-
<<<<<<< HEAD -
Creating a new branch is quick & simple. -
======= -
Creating a new branch is quick AND simple. -
>>>>>>> feature1
其中,git使用<<<<<<<,=======,>>>>>>>標(biāo)記文件中自己和別人產(chǎn)生沖突的部分。
在<<<<<<<,=======之間為自己的代碼;
=======,>>>>>>>之間為別人的代碼。
如果保留自己的代碼,將別人的代碼刪掉即可。
2、沖突解決后提交
git status git add *** git commit -m "fix conflict" git push origin 分支名
三、Bug分支
1、儲(chǔ)藏更改:將當(dāng)前更改的代碼儲(chǔ)藏起來,等以后恢復(fù)使用
git stash
2、恢復(fù)儲(chǔ)藏的代碼
git stash pop //恢復(fù)的同時(shí)把stash內(nèi)容刪掉 或者 git stash apply //恢復(fù)stash,但是stash內(nèi)容并不刪除 git stash drop //在上面操作的基礎(chǔ)上,以此來刪除stash
注: git stash list //查看全部的stash列表。
3、將stash空間清空
git stash clear
4、git stash pop 和 git stash apply 區(qū)別
原來git stash pop stash@{id}命令會(huì)在執(zhí)行后將對應(yīng)的stash id 從stash list里刪除,而 git stash apply stash@{id} 命令則會(huì)繼續(xù)保存stash id。
四、版本回退
1、回退至上一個(gè)版本
git reset --hard HEAD
2、回退至指定版本
git reset --hard 版本號(hào)
3、查看以往版本號(hào)(本地的commit)
git reflog
4、查看各版本號(hào)及信息(所有的commit:本地commit + 其他同事的commit)
git log
五、撤銷修改
1、撤銷修改(git add/rm 之前)
如果git add 之前修改了文件:
git checkout -- file_name
指定文件 或者 git checkout -- .
撤銷所有
如果git add 之前刪除了文件:直接使用了rm刪除(在本地版本庫中)和上面的撤回命令一樣
git checkout -- file_name 指定文件 或者 git checkout -- . 撤銷所有
2、git add/rm 之后,還未git commit
第一步:從暫存區(qū)撤出
git reset HEAD <file>
reset 某個(gè)文件
或者
git reset HEAD .
reset 所有
第二步:如果是 git rm 的文件,需要執(zhí)行下面的,把它撤回來,add 的文件不能用(用了會(huì)撤回修改,如果想撤回修改前的,也可以用下面的命令)
git checkout -- file_name
注:如果執(zhí)行 git checkout -- . 則會(huì)吧,之前add 更改的文件也給撤回了;
3、撤銷修改 git commit -m "" 、還未執(zhí)行g(shù)it push
- 1. 找到上次git commit的 id
git log
找到你想撤銷的commit_id
- 2. git reset --hard commit_id
完成撤銷,同時(shí)將代碼恢復(fù)到前一commit_id 對應(yīng)的版本。(不保留commit 之前修改的代碼,reset之后,代碼回滾到上個(gè)版本)
- 3. git reset commit_id
完成Commit命令的撤銷,但是不對代碼修改進(jìn)行撤銷,可以直接通過git commit 重新提交對本地代碼的修改。(保留commit之前修改的代碼,撤銷后,代碼是修改后的狀態(tài),還能繼續(xù)修改;)
六、對于已經(jīng)push的版本,進(jìn)行回退
1、第一步:
git reset --hard 版本號(hào) //本地回退到指定的版本
2、第二步:
git push -f origin dev //將遠(yuǎn)程的也回退到指定版本
七、本地同步遠(yuǎn)程刪除的分支
git fetch origin -p
//用來清除已經(jīng)沒有遠(yuǎn)程信息的分支,這樣git branch -a 就不會(huì)拉取遠(yuǎn)程已經(jīng)刪除的分支了
八、刪除掉沒有與遠(yuǎn)程分支對應(yīng)的本地分支
從gitlab上看不到的分支在本地可以通過git branch -a 查到,刪掉沒有與遠(yuǎn)程分支對應(yīng)的本地分支:
git fetch -p
九、查看遠(yuǎn)程庫的一些信息,及與本地分支的信息
git remote show origin
十、git stash臨時(shí)保存本地操作
1、使用git stash就可以將你當(dāng)前未提交到本地(和服務(wù)器)的代碼推入到Git的棧中,這時(shí)候你的工作區(qū)間和上一次提交的內(nèi)容是完全一樣的。
2、再切換到別的分支改緊急bug。
3、改完后,切到剛才的分支,使用git stash apply將以前一半的工作應(yīng)用回來。
也許有的人會(huì)說,那我可不可以多次將未提交的代碼壓入到棧中?答案是可以的。當(dāng)你多次使用git stash命令后,你的棧里將充滿了未提交的代碼,這時(shí)候你會(huì)對將哪個(gè)版本應(yīng)用回來有些困惑,git stash list命令可以將當(dāng)前的Git棧信息打印出來,你只需要將找到對應(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è)對應(yīng)的補(bǔ)丁,如果git format-patch-2那么便會(huì)生成2個(gè)補(bǔ)丁,當(dāng)然前提是你的log上有至少有兩個(gè)記錄。
十一、git revert、git reset和git checkout的區(qū)別

十二、git 清除緩存
清空 git緩存
git add .
git commit -m 'update .gitignore'
讀了下git文檔,才發(fā)現(xiàn),這些東西其實(shí)很簡單,很容易理解。cached其實(shí)就是暫存區(qū),然后一個(gè)是工作的目錄,你的工作目錄的東西做出修改時(shí),會(huì)和緩存區(qū)進(jìn)行對比,因此你git status時(shí),會(huì)顯示出來這個(gè)差異,
因此為了使.gitignore中的內(nèi)容生效,那么就刪除掉暫存區(qū),然后將所有本地文件追蹤一下,就得到最新的暫存區(qū)文件。(用于處理 gitignore 沒有生效)
十三、git 忽略文件夾或者文件 ".gitignore"
如果 git 文件夾的根目錄下有這個(gè)文件,則直接填入進(jìn)去;如果沒有的話,git根目錄新建文件 .gitignore (和.git 在同一文件夾下面)
|
1
2
3
4
5
6
7
8
9
|
#忽略該后綴的文件*.xml*.log*.apk# 忽略文件(文件名相對路徑,*表示忽略文件夾下的所有文件,) 這個(gè)是注釋data/*debug_test/*log/* |


浙公網(wǎng)安備 33010602011771號(hào)