Git筆記 必知習慣和版本回退

2021-09-29 14:29:55 字數 3041 閱讀 3469

假設在上篇learn.txt.txt的原文有如下內容:(版本1)

git is a version control system.

git is free software.

更改:(版本2)內容沒變但是修改了檔案名字改回正常的learn.txt。在git bash輸入:

可以看到我們在master分支,與遠端的master資料共享,修改了檔案名字,可以看到訊息是:相當是刪除了,然後新建了乙個readme.txt

git reset 命令:

git reset --hard head^  /

/回退到上個版本

git reset --hard /

/回退到指定的版本

git log 命令:

git log  /

/檢視commit的歷史記錄

git log --pretty=oneline /

/檢視提交日誌

git reflog /

/記錄你的每一條命令

場景1:

已經提交了不合適的修改到版本庫時,同時,你還沒有把自己的本地版本庫推送到遠端,想要撤銷本次提交。

更改(版本3)並提交:

git is a distributed version control system.

git is free software distributed under the gpl.

完蛋,改錯了!git的commit好比乙個快照。一旦你把檔案改亂了,或者誤刪了檔案,還可以從最近的乙個commit恢復,然後繼續工作,而不是把幾個月的工作成果全部丟失。

想檢視提交日誌怎麼辦?這時我們用git log命令檢視:

還可以使用git log --pretty=oneline,它比git log表達的資訊量少些。

注意:

看到的一大串類似b3cc477b8567…的是commit id(版本號),是乙個sha1計算出來的乙個非常大的數字,用十六進製制表示。

每提交乙個新版本,實際上git就會把它們自動串成一條時間線。如果使用視覺化工具(如,sourcetree)檢視git歷史,就可以更清楚地看到提交歷史的時間線。

場景2:

已經提交了不合適的修改到版本庫時,同時已經push到遠端。希望能夠回退到以前的版本。

step 1:先在本地回退到相應的版本

git reset --hard 《版本號》
注意:

git push origin 《分支名》 --force
因為,如果此時使用三步走的最後一步的話,會提示本地的版本落後於遠端的版本;

git push origin 《分支名》
1、工作區

在電腦裡能看到的目錄,比如我的learngit資料夾就是乙個工作區:

2、版本庫(repository)

工作區有乙個隱藏目錄 .git,這個不算工作區,而是git的版本庫。git的版本庫里存了很多東西,最重要的就是稱為stage(或者叫index)的暫存區,還有git為我們自動建立的第乙個分支master,以及指向master的乙個指標叫head

前面講了我們把檔案往git版本庫里新增的時候,是分兩步執行的:

因為我們建立git版本庫時,git自動為我們建立了唯一乙個master分支,所以,現在git commit就是往master分支上提交更改。總結一句話:需要提交的檔案修改通通放到暫存區,然後,一次性提交暫存區的所有修改。大兄弟,來實踐一波,更改learn.txt(版本4)

git is a distributed version control system.

git is free software distributed under the gpl.

git has a mutable indexcalled stage.

然後,在工作區新增乙個license文字檔案(內容隨便寫)。先用git status檢視一下狀態:

git清楚地告訴我們在master分支,learn.txt被修改了,而license還從來沒有被新增過到版本區,所以它的狀態是untracked。

使用命令git add .,把learn.txt和license都新增後,用git status再檢視一下:

現在,暫存區的狀態就變成這樣了。

所以,git add命令實際上就是把要提交的所有修改放到暫存區(stage),然後,執行git commit就可以一次性把暫存區的所有修改提交到分支。

現在版本庫變成了這樣,暫存區就沒有任何內容了。

Git 版本回退(筆記)

1 可以使用git log命令檢視歷史日誌 git log命令顯示從最近到最遠的提交日誌。git log pretty oneline 命令將記錄壓縮成一行,便於觀察另 顯示出的 63a5pgfdtetr86733c827ed32a8cd576c5ee85 add version63a5pgfdte...

Git版本回退

1 檢視檔案修改歷史 git log 返回的是commit後的操作記錄 git log pretty oneline 也可以使用這個命令格式化日誌輸出 2 版本回退 git reset hard head 回退到上乙個版本 git reset hard head 100 會退到第100個版本,例如現...

git版本回退

先說今天遇到的問題,看到乙個config.php的配置檔案一直在修改的狀態下,但是和遠端的config.php是不一致的,我不需要提交它,但是看它在 modified的狀態下,很不爽,想刪除它,git rm config.php,然後git push了下,結果不僅把本地的config.php乾掉了,...