git分支提交回退

2021-09-02 08:42:52 字數 3437 閱讀 9419

1.本地提交回退,與第二次提交合併為同一次提交

有時寫完**,把**提交之後,發現還有需要再改的,或者還有檔案還沒提交,但你又不想在增加一次提交記錄,這是可以用一下命令:

(1)$ git commit -m 'initial commit'(第一次提交,發現提交錯了)

(2)$ git add forgotten_file(重新增加要提交的檔案)

(3)$ git commit --amend(再次提交,git commit --amend -m "0.01 version for show")

2.在上面的基礎上,如果commit了之後並且已經push到遠端分支

在上面的基礎上加上命令:

git push origin +master:master(分支名)

3.git倉庫如何恢復到前一次提交

(本地)

通過使用git版本恢復命令reset,可以回退版本。

reset命令有3種方式:

(1)git reset –mixed:此為預設方式,不帶任何引數的git reset,即時這種方式,它回退到某個版本,只保留原始碼,回退commit和index資訊  

(2)git reset –soft:回退到某個版本,只回退了commit的資訊,不會恢復到index file一級。如果還要提交,直接commit即可  

(3)git reset –hard:徹底回退到某個版本,本地的原始碼也會變為上乙個版本的內容    

(4)git reset

僅用head指向的目錄樹重置暫存區,工作區不受影響,相當於將之前用git add命令更新到暫存區的內容撤出暫存區.引用也未改變,因為引用重置到head相當於沒有重置.

git reset head

同上以下是一些reset的示例:

#回退所有內容到上乙個版本    

git  reset  head^      

#回退a.py這個檔案的版本到上乙個版本      

git  reset  head^  a.py      

#向前回退到第3個版本      

git  reset  –soft  head~3      

#將本地的狀態回退到和遠端的一樣      

git  reset  –hard  origin/master      

#回退到某個版本      

git  reset  057d      

#回退到上一次提交的狀態,按照某一次的commit完全反向的進行一次commit      

git  revert  head 

4.如果我們某次修改了某些內容,並且已經commit到本地倉庫,而且已經push到遠端倉庫了

如果僅僅你自己在使用,那麼強制push,命令是git push -f(就是reset之後)

如果是與人合作,更漂亮的做法是revert,給個例子供參考

當前的commit記錄

$ git log

commit e7c8599d29b61579ef31789309b4e691d6d3a83f

author: fsword date: sat jun 8 14:27:11 2013 +0800

補充後續計畫和調整方案

commit d501310d245fe50959e8bcc1f5465bb64d67d1c8

author: fsword date: fri jun 7 14:36:49 2013 +0800

完成基本的設計

...

決定放棄最近提交的 e7c8599d29b61579ef31789309b4e691d6d3a83f

git revert e7c8599d29b61579ef31789309b4e691d6d3a83f

現在檢視log,發現多了一次commit,其內容就是回到了原來的那個階段

commit 7752d450a91a4c9663f5cd03f7ef3ff6d4848a12

author: fsword date: tue jun 11 01:35:58 2013 +0800

revert "補充後續計畫和調整方案"

this reverts commit e7c8599d29b61579ef31789309b4e691d6d3a83f.

commit e7c8599d29b61579ef31789309b4e691d6d3a83f

author: fsword date: sat jun 8 14:27:11 2013 +0800

補充後續計畫和調整方案

commit d501310d245fe50959e8bcc1f5465bb64d67d1c8

author: fsword date: fri jun 7 14:36:49 2013 +0800

完成基本的設計

...

比較一下,發現已經和提交前一樣了

$ git diff d501310d245fe50959e8bcc1f5465bb64d67d1c8

$

擴充套件:

(1)

git revert 撤銷 某次操作,此次操作之前和之後的commit和history都會保留,並且把這次撤銷

作為一次最新的提交

* git revert head 撤銷前一次 commit

* git revert head^ 撤銷前前一次 commit

* git revert commit (比如:fa042ce57ebbe5bb9c8db709f719cec2c58ee7ff)撤銷指定的版本,撤銷也會作為一次提交進行儲存。

git revert是提交乙個新的版本,將需要revert的版本的內容再反向修改回去,

版本會遞增,不影響之前提交的內容

-----------------------------------------

(2)git revert 和 git reset的區別

1. git revert是用一次新的commit來回滾之前的commit,git reset是直接刪除指定的commit。

2. 在回滾這一操作上看,效果差不多。但是在日後繼續merge以前的老版本時有區別。因為git revert是用一次逆向的commit「中和」之前的提交,因此日後合併老的branch時,導致這部分改變不會再次出現,但是git reset是之間把某些commit在某個branch上刪除,因而和老的branch再次merge時,這些被回滾的commit應該還會被引入。

3. git reset 是把head向後移動了一下,而git revert是head繼續前進,只是新的commit的內容和要revert的內容正好相反,能夠抵消要被revert的內容。

git回退到歷史版本並提交到遠端分支

實際開發過程中,有時候我們會發現歷史版本是對的,當前版本和遠端分支是錯的情況。我們這時候需要回滾到歷史版本,並且讓遠端分支也回退到歷史版本,下面來說一種解決辦法。1,先把本地的分支回退到歷史版本 1.1 使用 git log pretty oneline命令檢視歷史版本 1.2 使用下面命令回滾,我...

git回退到歷史版本並提交到遠端分支

實際開發過程中,有時候我們會發現歷史版本是對的,當前版本和遠端分支是錯的情況。我們這時候需要回滾到歷史版本,並且讓遠端分支也回退到歷史版本,下面來說一種解決辦法。1,先把本地的分支回退到歷史版本 1.1 使用 git log pretty oneline命令檢視歷史版本 1.2 使用下面命令回滾,我...

git回退到歷史版本並提交到遠端分支

實際開發過程中,有時候我們會發現歷史版本是對的,當前版本和遠端分支是錯的情況。我們這時候需要回滾到歷史版本,並且讓遠端分支也回退到歷史版本,下面來說一種解決辦法。1,先把本地的分支回退到歷史版本 1.1 使用 git log pretty oneline命令檢視歷史版本 1.2 使用下面命令回滾,我...