給分支 標記tag
git checkout branchName
切換到 分支-
git log
查看分支 提交記錄
git tag -a 標簽名 -m "標簽注釋" d5a65e9(提交哈希值)
打tag
git tag -a pre_v1.0 -m "預(yù)生產(chǎn)環(huán)境版本1.0tag" a26c46416caf351af6cdbeb751a13bfec085baec
- 把本地的分支tag push 到 遠端服務(wù)器上
1 push 單個tag,命令格式為
git push origin tag_20170908
2 push 所有tag,命令格式為
git push [origin] --tags
git push --tags
或
git push origin --tags
通過標簽 恢復(fù)代碼
1.查看標簽的詳情,找出打標簽的那次提交的 commit id
git tag
查看本地所有標簽
git show tagName
查看某個標簽的詳細信息
- 版本回退(將主干分支回退到某個版本)
下面 我們就通過 commit id 回到發(fā)版本(commit id 為 38ce7582791cff7890aaff8c96ba533440740650 )時候的代碼去
git reset --hard 38ce7582791cff7890aaff8c96ba533440740650
當然寫commit id是可以回滾到任何版本,但在真實環(huán)境下我們用的比較多的應(yīng)該是返回到上個版本即最后一次提價的版本這個我們可以使用如下命令
git reset --hard HEAD
特別注意:通過標簽回退版本后缤底,要馬上拉一個分支,然后當前主干分支要立即回到原來的位置暇检,否則正在開發(fā)的代碼可能白干了,接著在剛拉的分支上修改bug婉称,修改完畢合并到主干上
git log 和 git reflog的區(qū)別
git reflog 可以查看所有分支的所有操作記錄(包括commit和reset的操作)块仆,包括已經(jīng)被刪除的commit記錄,git log則不能察看已經(jīng)刪除了的commit記錄
具體一個例子酿矢,假設(shè)有三個commit,git commit -m"add test1.c",git commit -m"add test2.c",git commit -m"add test3.c":
commit3: add test3.c
commit2: add test2.c
commit1: add test1.c
這樣提交了三個怎燥,也就是有三個commit id瘫筐,commit3是最后提交的。
如果執(zhí)行g(shù)it reset --hard HEAD~1則 刪除了commit3铐姚,如果發(fā)現(xiàn)刪除錯誤了策肝,需要恢復(fù)commit3,這個時候就要使用git reflog 因為回退原因git log是看不到commit3的commit id的
強推 push -f
情況理解:當我們的master分支想回退到某個之前的版本時需要做如下流程:
1隐绵、git checkout master :本地切換到master分支
2之众、git pull : 本地分支跟新為最新(非必須,只是習(xí)慣)
3依许、git log 棺禾、git reflog :查看提交記錄,尋找合適的commitId (注意這里的commitid一定要注意峭跳,因為我們開發(fā)分支的版本號在合并的時候也會被合并過來)
4膘婶、git reset --hard commitid :回滾到指定的版本、git reset --hard HEAD:會滾到之前一個版本
5蛀醉、git push : 將本地代碼推到遠程悬襟,但是這時會報錯誤,不會讓你推因為你的本地版本比遠程低一個版本拯刁,所以他會要求你更新為最新的在push但是這樣的話就會有問題啊脊岳,吧我們回滾的又覆蓋了,所以我們不能更新,所以不能使用這個命令割捅,只能使用下面的6這個命令了D糖!棺牧!
6巫糙、git push -f origin master(修改這里的master為你的分支名稱,不要把master強推到你的分支) :將本地代碼強制推到遠程颊乘,也就是用本地代碼覆蓋遠程