git 基本操作----git reset、log


我們可以用 rest來滾動git版本。使用log來查看本地倉庫的版本

$ git log

 

 會給出對此倉庫的所有操作。如果日志比較多,就無法顯示完全,linux 翻頁的常規操作:空格:下一頁,p 前一頁,q 退出

我們可以美化一下

git log --pretty=oneline

 

 則會在一行中打印出日志。還可以更簡單一點:

git log --oneline

 

 還有一個常用的,查看所有日志

git reflog

 

我們可以使用reset設置當前的版本,以刪除文件找回為例。

我們新建一個c.txt,並把它添加到倉庫。

touch c.txt

git add c.txt

git commit -m "add c.txt"

#使用reflog查看
git reflog

 

 

 

然后我們刪除 c.txt.並且提交到本地倉庫。

 

rm c.txt

git commit -am "del c.txt"

 

 

我們使用 git reset --hard (指針位置) 就可以回滾。

git reset --hard bb9181d

 

 

這樣我們刪掉的c.txt就找回了。

 

我們注意到有個參數

--hard  :  同時修改  工作區  緩存區  本地倉庫的文件內容

--mixed:  同時修改  緩存區  本地倉庫的文件內容

--soft:     只修改本地倉庫的文件內容

 

此外,如果我們有修改提交到緩存區(add),但是還沒有提交到本地倉庫(commit).我們可以直接reset,清空緩存區的內容

git reset HEAD

 

 如上圖示,我們刪掉了c.txt,並且add到緩存區,還沒有commit到本地倉庫。則。可以使用  git reset HEAD ,清空緩存區。

還可以 指定文件名,清空某個文件的緩存。

例如:

我們先改動文件 README 文件,內容如下:

# Runoob Git 測試
# 菜鳥教程 
 

hello.php 文件修改為:

<?php
echo '菜鳥教程:www.runoob.com';
echo '菜鳥教程:www.runoob.com';
echo '菜鳥教程:www.runoob.com';
?>

現在兩個文件修改后,都提交到了緩存區,我們現在要取消其中一個的緩存,操作如下:

$ git status -s
 M README
 M hello.php
$ git add .
$ git status -s
M  README
M  hello.php
$ git reset HEAD hello.php 
Unstaged changes after reset:
M    hello.php
$ git status -s
M  README
 M hello.php

 

 

現在你執行 git commit,只會將 README 文件的改動提交,而 hello.php 是沒有的。

$ git commit -m '修改'
[master f50cfda] 修改
 1 file changed, 1 insertion(+)
$ git status -s
 M hello.php

 

可以看到 hello.php 文件的修改並未提交。

這時我們可以使用以下命令將 hello.php 的修改提交:

$ git commit -am '修改 hello.php 文件'
[master 760f74d] 修改 hello.php 文件
 1 file changed, 1 insertion(+)
$ git status
On branch master
nothing to commit, working directory clean

 

 

簡而言之,執行 git reset HEAD 以取消之前 git add 添加,但不希望包含在下一提交快照中的緩存。

 


免責聲明!

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



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