git原理浅析及命令介绍
狀態(tài)描寫敘述
請記住,工作文件夾以下的全部文件都不外乎這兩種狀態(tài):已跟蹤或未跟蹤。已跟蹤的文件是指本來就被納入版本號控制管理的文件,在上次快照中有它們的記錄,工作一段時間后,它們的狀態(tài)可能是未更新。已改動或者已放入暫存區(qū)。而全部其它文件都屬于未跟蹤文件。
它們既沒有上次更新時的快照,也不在當前的暫存區(qū)域。
初次克隆某個倉庫時。工作文件夾中的全部文件都屬于已跟蹤文件。且狀態(tài)為未改動。
在編輯過某些文件之后。Git 將這些文件標為已改動。
我們逐步把這些改動過的文件放到暫存區(qū)域,直到最后一次性提交全部這些暫存起來的文件。如此反復。
假設此時新加入一個文件,那么它并不在git監(jiān)管之下,屬于未追蹤的。使用add能夠將文件納入到暫存之下。這時候使用git commit會將暫存之下的改動提交,這個時候即使有改動,可是沒有git add過。那么commit之后。git也不會存在它的快照。所以。要想將文件改動加入到本地倉庫中,須要先add,然后再commit。當然。這樣有點繁瑣,能夠直接使用git commit -a命令將工作文件夾中的改動保存到本地倉庫中。
一般我們總會有些文件無需納入 Git 的管理,也不希望它們總出如今未跟蹤文件列表。通常都是些自己主動生成的文件,比方日志文件,或者編譯過程中創(chuàng)建的暫時文件等。
我們能夠創(chuàng)建一個名為 .gitignore 的文件,列出要忽略的文件模式。
要查看尚未暫存的文件更新了哪些部分,不加參數直接輸入 git diff。此命令比較的是工作文件夾中當前文件和暫存區(qū)域快照之間的差異,也就是改動之后還沒有暫存起來的變化內容。若要看已經暫存起來的文件和上次提交時的快照之間的差異,能夠用 git diff --cached 命令。
(Git 1.6.1 及更高版本號還同意使用 git diff --staged。效果是同樣的,但更好記些。)
請注意。單單 git diff 只是是顯示還沒有暫存起來的修改。而不是這次工作和上次提交之間的差異。所以有時候你一下子暫存了全部更新過的文件后。執(zhí)行 git diff 后卻什么也沒有。就是這個原因。
文件提交
git commit -m "Story 182: Fix benchmarks for speed" 能夠提交暫存的改動。 git commit -a -m 'added new benchmarks' 上面的命令加了a參數,能夠將工作文件夾中的改動直接提交,等同于跳過了add過程。移除文件
要從 Git 中移除某個文件,就必需要從已跟蹤文件清單中移除(確切地說。是從暫存區(qū)域移除)。然后提交。能夠用 git rm 命令完畢此項工作,并連帶從工作文件夾中刪除指定的文件。這樣以后就不會出如今未跟蹤文件清單中了。
假設僅僅是簡單地從工作文件夾中手工刪除文件,執(zhí)行 git status 時就會在 “Changes not staged for commit” 部分(也就是未暫存清單)看到。
然后再執(zhí)行 git rm 記錄此次移除文件的操作 git rm filename
假設刪除之前改動過而且已經放到暫存區(qū)域的話。則必需要用強制刪除選項 -f(譯注:即 force 的首字母)。以防誤刪除文件后丟失改動的內容。
第二種情況是。我們想把文件從 Git 倉庫中刪除(亦即從暫存區(qū)域移除)。但仍然希望保留在當前工作文件夾中。換句話說。僅是從跟蹤清單中刪除。比方一些大型日志文件或者一堆 .a 編譯文件,不小心納入倉庫后,要移除跟蹤但不刪除文件,以便稍后在 .gitignore 文件里補上。用 --cached 選項就可以
git rm --cached readme.txt 移動文件要在 Git 中對文件改名。能夠這么做:
git mv file_from file_to 事實上,執(zhí)行 git mv 就相當于執(zhí)行了以下三條命令:mv README.txt README git rm README.txt git add README
查看提交歷史
git log git log 有很多選項能夠幫助你搜尋感興趣的提交,接下來我們介紹些最經常使用的。git log -p -2 我們經常使用 -p 選項展開顯示每次提交的內容差異。用 -2 則僅顯示近期的兩次更新.
某些時候,單詞層面的對照,比行層面的對照,更加easy觀察。Git 提供了 --word-diff 選項。我們能夠將其加入到 git log -p 命令的后面,從而獲取單詞層面上的對照。在程序代碼中進行單詞層面的對照經常是沒什么用的。只是當你須要在書籍、論文這樣的非常大的文本文件上進行對照的時候。這個功能就顯出用武之地了。
新添加的單詞被 {+ +} 括起來。被刪除的單詞被 [- -] 括起來。在進行單詞層面的對照的時候,你可能希望上下文( context )行數從默認的 3 行。減為 1 行。那么能夠使用 -U1 選項。
還有個經常使用的 --pretty 選項,能夠指定使用全然不同于默認格式的方式展示提交歷史。
比方用 oneline 將每一個提交放在一行顯示,這在提交數非常大時非常實用。
以上僅僅是簡介了一些 git log 命令支持的選項。表 2-2 還列出了一些其它經常使用的選項及其釋義。
轉載于:https://www.cnblogs.com/jzdwajue/p/7363170.html
總結
以上是生活随笔為你收集整理的git原理浅析及命令介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java开源框架Netty
- 下一篇: 儿童书