導航:首頁 > 版本升級 > git刪除某一個版本

git刪除某一個版本

發布時間:2024-08-20 18:15:45

Ⅰ git獲取歷史版本的幾種方式

我們簡單的描述一個例子:

a)初始化操作

有兩個文件file1.txt和file2.txt

1, 初始化的時候就有首配這兩個文件

操作:

git init

git status

git add .

git mit -m 「init version」

2, 在master分支上修改了file1.txt,並提交

操作:

(修改file1.txt)

git add file1.txt

git mit -m 「change file1」

3, 然後新建分支banana,並切換到banana分支上

操作:

git branch banana

git checkout banana

4, 修改file1.txt和file2.txt,並提交。

操作:

(修改file1.txt和file2.txt)

git add file1.txt file2.txt

git mit -m 「change by banana」

這個時候,我們可以輸入 gitk,查看一下當前的版本情況。

如下圖:git-001

5, 然後,切換到master分支上,修改file2.txt,並提交。

操作:

git checkout master

(修改file2.txt)

git add file2.txt

git mit -m 「change by master」

輸入gitk,查看當前版本情況,如下圖:git-002

b)發現問題需要查看歷史版本

我們現在發現當前的版本有點問題,還不能提交到版本庫。

1,我們需要從git mit中返回.

則輸入:

git reset --soft HEAD^

解釋一下,HEAD是當前分支的最新版本。

^表示父節點。

當前節點的父節點,就是上一次提交的版本。

也就是標記為「change file1」的版本。

問為什麼不是」change by banana」這個版本呢者扒指?不同的分支哦。

」change by banana」是banana分支的最新代碼,和master分支不同的。

這個時候輸入

git status

看看,是不是顯示file2.txt修改了沒有提交呢。

2,我們需要從git add中返回

再仔細查看之後,我們發現file2.txt真的寫錯了,需要返回到此悔git add之前的狀態。

輸入:

git reset -q file2.txt

這個時候,file2.txt就回到了解放前了。

用git status查看一下,file2.txt是」change not staged for mit」狀態。

3,回到沒有做過的情況

我們最終確定,最後一次修改的file2.txt是無用的代碼,我們需要廢棄掉。

注意,這個操作不能恢復的哦。

git reset --hard

這個命令,不能指定具體的文件。

是把當前的修改全部清除,恢復到最後一次提交的版本。

這個時候,用gitk查看一下:git-003

已經徹底回復到了「change file 1」的版本了。

4,直接回復到某個版本

我們現在切換到banana分支。

git checkout banana

然後用gitk看一下。

可以看出,我們之前的操作,對banana分支一點影響也沒有。

現在我們需要把banana分支回復到初始狀態,但是當前的改動的代碼還是需要留著。

我們可以看,init版本是當前版本的父節點的父節點。

我們可以這么操作:

git reset --soft HEAD^^

然後用gitk看一下:git-004

最近的版本已經變成了init version了。

所有的改動都是add未提交狀態。

5,得到當前最新代碼

最後。

我們把file1.txt和file2.txt都刪掉。

我們需要從版本庫中取得當前最新的代碼。

很簡單:

git checkout master

如果是要banana分支的最新代碼,則:

git checkout banana

以上的操作,我們知道了如何查看版本分支,和如何回復到以前的版本。

Ⅱ git如何撤銷pull命令。

git撤銷pull命令的方法和操作步驟如下:

1、首先,輸入1,然後按Enter鍵進入項目的git存儲庫所版在的文件夾,如下圖權所示。

Ⅲ git 代碼上傳後,怎麼回退版本

總有一天你會遇到下面的問題.
(1)改完代碼匆忙提交,上線發現有問題,怎麼辦? 趕緊回滾.
(2)改完代碼測試也沒有問題,但是上線發現你的修改影響了之前運行正常的代碼報錯,必須回滾.
這些開發中很常見的問題,所以git的取消提交,回退甚至返回上一版本都是特別重要的.
大致分為下面2種情況:
1.沒有push
這種情況發生在你的本地代碼倉庫,可能你add ,commit 以後發現代碼有點問題,准備取消提交,用到下面命令
reset
git reset [--soft | --mixed | --hard

上面常見三種類型
--mixed
會保留源碼,只是將git commit和index 信息回退到了某個版本.
git reset 默認是 --mixed 模式
git reset --mixed 等價於 git reset

--soft
保留源碼,只回退到commit 信息到某個版本.不涉及index的回退,如果還需要提交,直接commit即可.
--hard
源碼也會回退到某個版本,commit和index 都回回退到某個版本.(注意,這種方式是改變本地代碼倉庫源碼)
當然有人在push代碼以後,也使用 reset --hard <commit...> 回退代碼到某個版本之前,但是這樣會有一個問題,你線上的代碼沒有變,線上commit,index都沒有變,當你把本地代碼修改完提交的時候你會發現權是沖突.....
所以,這種情況你要使用下面的方式
2.已經push
對於已經把代碼push到線上倉庫,你回退本地代碼其實也想同時回退線上代碼,回滾到某個指定的版本,線上,線下代碼保持一致.你要用到下面的命令
revert
git revert用於反轉提交,執行evert命令時要求工作樹必須是干凈的.
git revert用一個新提交來消除一個歷史提交所做的任何修改.
revert 之後你的本地代碼會回滾到指定的歷史版本,這時你再 git push 既可以把線上的代碼更新.(這里不會像reset造成沖突的問題)
revert 使用,需要先找到你想回滾版本唯一的commit標識代碼,可以用 git log 或者在adgit搭建的web環境歷史提交記錄里查看.
git revert

通常,前幾位即可
git revert c011eb3

git revert是用一次新的commit來回滾之前的commit,git reset是直接刪除指定的commit
看似達到的效果是一樣的,其實完全不同.
第一:
上面我們說的如果你已經push到線上代碼庫, reset 刪除指定commit以後,你git push可能導致一大堆沖突.但是revert 並不會.
第二:
如果在日後現有分支和歷史分支需要合並的時候,reset 恢復部分的代碼依然會出現在歷史分支里.但是revert 方向提交的commit 並不會出現在歷史分支里.
第三:
reset 是在正常的commit歷史中,刪除了指定的commit,這時 HEAD 是向後移動了,而 revert 是在正常的commit歷史中再commit一次,只不過是反向提交,他的 HEAD 是一直向前的.

Ⅳ 【學了就忘】Git後悔葯 — 34.版本回退操作(三)

git reset --hardcommit-id 命令:回退到指定版本。(hard:強硬,嚴格的回退)

該命令不僅移動了分支中HEAD指針的位置,還將工作區和暫存區中數據也回退到了指定的版本。

(提示:該命令慎用。)

示例開始:

首先在版本庫中的 readme.txt 文件中添加一行內容,並提交該內容。我們的目的就是要再回退到該版本。

1)查看本地版本庫日誌

2)向 readme.txt 文件中新增一行數據,並提交到本地版本庫

3)現在比對工作區與暫存區、暫存區與本地版本庫的差異

我們可以看到此時,工作區、暫存區與本地版本庫中的 readme.txt 文件狀態無差異。

4)開始回退操作,退回到V3版本

使用 git reset --hard HEAD^ 命令,退回到前一個版本。

說明:

HEAD is now at 529ad74 第3次提交,新增內容:readme.txt file v3

意思:HEAD現在位於commit-id為 529ad74 的提交,提交說明為: 第3次提交,新增內容:readme.txt file v3 。

5)回退後,對比工作區、暫存區與本地庫中版本中文件的差異

回退後,我們再次對比了工作區、暫存區與本地庫中版本中文件的差異:沒有內容差異,完全一樣。

說明:工作區、暫存區和本地庫中的內容,都回退到了之前的版本。(重要)

6)查看本地版本庫的提交日誌信息

從上我們可以看到:(重點)

7)恢復到回退前版本

上面說了,使用 git reset --hard 命令回退,做了三個操作:

我們現在來查看一下工作目錄中的文件狀態。

可以看到工作目錄中是非常干凈的。

所以若要恢復到回退之前的版本,只能使用 git reset --hard 命令回退。

我們查看到, readme.txt 文件的內容已經完全恢復。

Ⅳ 如何用 Git 將代碼恢復到一個歷史的版本

有些時候,在一些特殊情況下,我們需要將代碼恢復到一個歷史的提交版本上。而這個歷史提交版本,離最新的提交已經比較久遠了。
比如,我希望將如下的倉庫的提交,恢復到上上上上次提交。當然,我可以一次一次的 revert,但是有沒有更快更簡單的辦法呢?

暴力的方式
如果你的倉庫是自己在用(不影響別人),那麼你可以使用 git reset --hard <target_commit_id> 來恢復到指定的提交,再用 git push -f 來強制更新遠程的分支指針。為了保證萬一需要找回歷史提交,我們可以先打一個 tag 來備份。
對於剛剛的例子,需要執行的命令就是:
// 備份當前的分支到 backup_commit
git tag backup_commit
git push origin backup_commit
// 重置 source 分支
git reset --hard 23801b2
// 強制 push 更新遠程分支
git push origin source -f

溫和的方式
如果你的倉庫是多人在協作,那麼你這么操作會使用別人本地的代碼庫混亂,所以只能建一個新的提交,這個新的提交中把想取消的提交都 revert 掉,那麼具體應該如何做呢?方法如下:
首先,和剛剛一樣,用 git reset --hard 23801b2 將代碼切換到目標提交的 id。接下來,用 git reset --soft origin/source 命令,將當前代碼切換回最新的提交。
執行完上面兩步後,你的倉庫還是最新的提交,但是工作區變成了歷史的提交內容,這個時候用 git add 和 git commit 即可。最終完成的效果如下:

不過經過念茜的提醒,該方法需要保證 reset 的時候沒有別人做新的提交,如果有的話,會一並把別人的提交也撤銷了。所以還是挺危險的,慎用。
雖然用到的時候很少,但是理解它的原理有助於大家理解 Git 的工作區,暫存區和版本庫的各種指針操作的意義,希望對大家有用。

Ⅵ Android studio項目怎麼使用git版本返回到上個版本

如果開發當前的項目中,對項目的代碼編寫錯誤了,導致這些功能無法返回了,如果對項目沒有很好進行管理的話,那麼這樣整個文件就需要重新開發了,如果有通過git提交代碼倉庫中,就可以使用git的方法,把對項目版本進行回退上一次提交的版本中,就可以再次對上一個版本開發。
1、需要在項目中導入正在開、項目文件,也已提交的項目到倉庫中文件,然後就可點擊菜單中的「CVS」的選項。
2、點擊完菜單中CVS的選項之後,就會彈出了一個下拉的菜單中,進行下拉的菜單中的git的選項。
3、這樣就會彈出了一個下一級的菜單,在下一級的菜單中找到一個為「reset HEAD」的選項,點擊進入這個菜單。
4、彈出了一個reset Head的選項中,要把項目到電腦中路徑的,在git root的進行選擇路徑。對需要進行回退的版本信息進行確認,可以進行點擊「Validate」的選項。
5、彈出一個上一個版的提交的過的文件的信息,根據這些文件是否需要把這些的文件回退到當前到項目中,確認完成之後,點擊close關閉窗口。
6、開始進行對把項目回退到上一個版本中,如果要進行回退到上上一個版本話,可以把to commit的中HEAD~1,就可以回退到上上一個版本,點擊Reset開始回退。
7、可以通過查看log的信息項目從代碼倉庫中是否回退成功,可以在log信息並沒有提示錯誤信息,是回退成功的。也可以通過代碼的代碼來查看是否回退成功。

閱讀全文

與git刪除某一個版本相關的資料

熱點內容
win10攝像頭不能拍照 瀏覽:56
雲陽數控編程培訓哪裡學 瀏覽:519
文件的存放路徑怎麼改 瀏覽:583
cad字體文件如何導出 瀏覽:236
cs16需要cdkey哪個文件里 瀏覽:817
如何讓另一個表格的數據關聯 瀏覽:368
來自app的快捷指令是怎麼有的 瀏覽:844
保留文件的原始文字圖片 瀏覽:385
國外網站的店怎麼看呢 瀏覽:56
ps入門必備文件 瀏覽:348
以前的相親網站怎麼沒有了 瀏覽:15
蘋果6耳機聽歌有滋滋聲 瀏覽:768
怎麼徹底刪除linux文件 瀏覽:379
編程中字體的顏色是什麼意思 瀏覽:534
網站關鍵詞多少個字元 瀏覽:917
匯川am系列用什麼編程 瀏覽:41
筆記本win10我的電腦在哪裡打開攝像頭 瀏覽:827
醫院單位基本工資去哪個app查詢 瀏覽:18
css源碼應該用什麼文件 瀏覽:915
編程ts是什麼意思呢 瀏覽:509

友情鏈接