1. 程式人生 > >Git的使用五:版本回退、提交以及實際應用場景

Git的使用五:版本回退、提交以及實際應用場景

一、 reset回退

# 檢視歷史版本
git log		#可以加上 --pretty=oneline 引數 顯示比較少的資訊。comiit id(即為版本號,一大串的那個)

# 回退到某個歷史版本,reset指標回退,
git reset --hard #後面加上某個版本的版本號

# 這時候提交程式碼會提示當前版本落後
	#On branch master
	#Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded.
	#  (use "git pull" to update your local branch)
	#nothing to commit, working directory clean

# 強制提交到遠端倉庫 慎用!!!
git push -f
 

二、revert

# revert是把此次的回退作為新的提交
	git revert commit #後面跟HEAD最近一次 或者版本號
# 直接提交
	git push

三、實際應用場景

情況1:檔案已作出修改 但是沒進行 add操作 想要還原檔案

git checkout 檔名或者目錄名 (還原相應的檔案或者目錄下的檔案)

git checkout .    還原全部檔案

情況2:檔案作出修改 已進行add操作 但是沒有 commit 想要刪除add

git reset HEAD     撤銷全部已提交修改

git reset HEAD filename    撤銷對指定檔案的修改

情況3:檔案作出修改 已進行過 commit 操作但是沒有push 想要刪除commit

# 檢視節點 
git log 

	# commit xxxxxxxxxxxxxxxxxxxxxxxxxx 
	# Merge: 
	# Author: 
	# Date:
	
# reset
git reset commit_id

情況4:檔案作出修改已push到倉庫

  此次操作之前和之後的commit和history都會保留,並且把這次撤銷作為一次最新的提交


git revert HEAD  撤銷前一次 commit 
git revert HEAD^  撤銷前前一次 commit 
git revert commit-id  (撤銷指定的版本,撤銷也會作為一次提交進行儲存) 
git revert是提交一個新的版本,將需要revert的版本的內容再反向修改回去,版本會遞增,不影響之前提交的內容。

也可以使用reset 

git reset --hard HEAD^     reset是指將HEAD指標指到指定提交,歷史記錄中不會出現放棄的提交記錄。