Git操作命令1-在Git倉庫里管理文件歷史-常見操作


一.創建版本庫

1.創建空目錄(這里目錄名為learngit)

$ mkdir learngit

2.進入目錄

$ cd learngit

3.顯示當前目錄

$ pwd

4.將當前目錄變為Git可以管理的倉庫

$ git init

 .git目錄是Git來跟蹤管理版本庫的,要放到Git倉庫的文件要放在該目錄或者其子目錄下

二.把文件添加到版本庫

1.在分支中新建文件(這里文件為readme.txt)

$ touch readme.txt

2.vim編輯文件

$ vi readme.txt

按 “i” 進入編輯,按  “esc”  “:wq”保存並推出

3.把文件添加到倉庫

$ git add readme.txt

4.把文件提交到倉庫

$ git commit -m "wrote a readme file"

commit可以一次提交很多文件,所以你可以多次add不同的文件

Git告訴我們當前沒有需要提交的修改nothing to commit),而且,工作目錄是干凈(working tree clean)的。

三.修改文件、查看修改

1.查看倉庫當前的狀態(如:是否修改了文件、修改是否已提交、刪除了什么文件、沖突的文件等)

$ git status

2.查看具體修改了什么內容

$ git diff readme.txt 

四.版本回退

每當你覺得文件修改到一定程度的時候,就可以“保存一個快照”,這個快照在Git中被稱為commit。一旦你把文件改亂了,或者誤刪了文件,還可以從最近的一個commit恢復,然后繼續工作,而不是把幾個月的工作成果全部丟失。

1.查看提交日志的歷史記錄

$ git log

簡略版

$ git log --pretty=oneline

一大串類似1094adb...的是commit id(版本號)

在Git中,用HEAD表示當前版本,最新的提交上一個版本是HEAD^上上一個版本就是HEAD^^

2.回退到上一個版本

$ git reset --hard HEAD^

3.指定回到未來的某個版本

(1)只要上面的命令行窗口還沒有被關掉,你就可以順着往上找,找到那個未來版本的commit id,這里1094adb...

$ git reset --hard 1094a

(2)已經關閉了命令行,想恢復到新版本

  • 查看命令日志的歷史記錄(為了找commit id)
$ git reflog
  • 找到待恢復版本的commit id,用$ git reset --hard 1094a回到新版本

五.撤銷修改

1.丟棄工作區的修改

$ git checkout -- readme.txt

自修改后還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態

git checkout -- file命令中的--很重要,沒有--,就變成了“切換到另一個分支”的命令

2.修改后已經git add到暫存區,但是還沒有提交

$ git reset HEAD readme.txt

git reset命令既可以回退版本,也可以把暫存區的修改回退到工作區。當我們用HEAD時,表示最新的版本。

接下來通過命令$ git checkout -- readme.txt丟棄工作區的修改

3.已經提交到版本庫(前提是沒有推送到遠程庫)

想要撤銷本次提交,參考四.版本回退

六.刪除文件

1.從工作空間刪除文件(和直接在文件管理器刪除相同)

$ rm test.txt

2.從版本庫刪除文件

如果該文件已經提交到了版本庫,從工作空間刪除文件后,那么此時工作區和版本庫就不一致了

$ git rm test.txt
然后
$ git commit -m "remove test.txt"

文件就從版本庫中被刪除了

3.從版本庫恢復工作空間誤刪的文件

$ git checkout -- test.txt

git checkout其實是用版本庫里的版本替換工作區的版本,無論工作區是修改還是刪除,都可以“一鍵還原”。

注意:從來沒有被添加到版本庫就被刪除的文件,是無法恢復的!

補充概念:

1.工作區和暫存區:

在這里learngit文件夾就是一個工作區。工作區的隱藏目錄.git不算工作區,而是Git的版本庫

  • 第一步是用git add把文件添加進去,實際上就是把文件修改添加到暫存區;
  • 第二步是用git commit提交更改,實際上就是把暫存區的所有內容提交到當前分支。

2.Git管理的是修改,那么Git如何跟蹤修改

每次修改,如果不用git add到暫存區,那就不會加入到commit中。

  • 第一次修改 -> git add -> 第二次修改 -> git commit

。當你用git add命令后,在工作區的第一次修改被放入暫存區,准備提交,但是,在工作區的第二次修改並沒有放入暫存區,所以,git commit只負責把暫存區的修改提交了,也就是第一次的修改被提交了,第二次的修改不會被提交。

  • 第一次修改 -> git add -> 第二次修改 -> git add -> git commit

現在把第二次修改也提交了。

 參考資料:廖雪峰老師博客


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM