Git的狀態轉換


? ? ? ???近期公司用Git來管理代碼,用起來是要比svn爽一些。就是剛接觸的時候比較痛苦,特別是那些狀態(版本號的提交/合并/回退)。差點把我搞暈了。

如今回過頭來總結一下,就清楚多了。

? ? ? ???就本地倉庫來看。Git能夠分成5個不同的狀態。能夠通過$ git status來查看。這五個狀態能夠互相轉換。詳細操作詳見以下的“版本號回退/整合”。

???????? 當然。有些文件非常實用。不能刪除又不能提交,如Eclipse的項目文件. project等。

這樣的情況最好就是選擇把他們忽略掉,能夠通過改動根文件夾的.gitignore文件,或者update-index來忽略掉。

status

???????? 顯示Git的版本號管理信息:$ git status

一般分成3個區域:

a)??Changes to becommitted:暫存區中有改動的文件,但還沒commit。

b)??Changes notstaged for commit:工作區中已跟蹤且有改動的文件,但還沒add;

c)??Untrackedfiles:工作區中未跟蹤文件。未納入Git的管理,每一個新建的文件都屬于這樣的。

? ? ? ???從上面也能看出非常多操作的提示。

[Changes notstaged for commit]和[Untracked files]都能夠通過add把文件加入到[Changes to be committed]。

另外,還能夠使文件消失在Git的監控范圍(ignore掉),這樣status就看不到了。

? ? ? ???也能夠使用簡略的顯示模式:$ git status –s

版本號回退 / 整合

? ? ? ???依據之前工作區/暫存區/版本號庫的狀態跳轉圖,可知道回退也是有多種情況。

?

a)?????Untrack區回退

? ? ? ???Untrack區存放的是沒有納入Git跟蹤的文件。如新創建的還沒add的文件。一般Git是不會理會這部分文件的,假設你嫌礙眼,能夠通過clean來清楚他們:

? ? ? ???先通過$ git clean –n查看要會清楚的文件,然后把n去掉,清除。也能夠在后面指定文件名稱,文件-f,文件夾-d

b)?????工作區回退

???????? $ git checkout -- XXX意思是,把XXX文件在工作區的改動所有撤銷:先檢查暫存區有沒有XXX,假設有則把工作區的XXX恢復到暫存區的狀態;假設沒有,則到版本號庫取。

? ? ? ???$ git checkout . 撤銷所有工作區的改動。

這個命令事實上挺危急的。一運行記錄都被恢復了,改動都被丟棄了。也能夠用$ gitcheckout HEAD XXX。回退暫存區和工作區。

c)??????暫存區回退

???????? 面的checkout --僅僅是撤銷工作區的文件改動,假設我們想撤銷暫存區的,就須要使用$ gitreset HEADXXX。它會把暫存區的記錄清空掉。

我們通過$ git status就能看到Changes to be committed的內容都跑到Changes notstaged for commit中去了。

也能夠用$ git checkout HEAD XXX,回退暫存區和工作區。

???????? 對于暫存區來說。這樣的方式和commit都會清空記錄。前者直接清空,后者先往版本號庫寫。再清空。

d)?????版本號庫回退

? ? ? ???假設你不小心把臟內容commit到本地master了,上面兩種方式就無效了。這時候須要回退版本號庫:$ git reset--hardHEAD^

???????? 在Git中,用HEAD表示當前版本號。上一個版本號就是HEAD^,上上一個版本號就是HEAD^^。也能夠寫成HEAD~2。你能夠用HEAD后面加n個^。或者HEAD~n來表示回退多少個版本號。

???????? 上面是相對版本號的reset,當然也能夠指定某一個詳細版本號。這時候commitID版本號號就大派用場:? $ git reset --hard3628164

3628164僅僅是版本號的前一小部分,Git會幫我們去自己主動匹配。當然也有可能找到多條。所以還是寫全比較靠譜。

?

???????? 事實上對于Git來說。HEAD是一個當前版本號號的指針,用reset來切換版本號。實際上是調整HEAD的指向。

???????? 所以。假設你reset 到HEAD~10。還行又回去原來的HEAD,那么也能夠通過【reset+ 版本號號】的方式切換過去。

???????? 當然你要知道相應的版本號號,這時候你能夠通過 $ git relog 來查看你的命令歷史和相相應的版本號號

?

e)?????遠程版本號回退

???????? Git是分布式版本號控制系統,僅僅要你把內容push出去了,那么遠程庫就會有記錄,你也不能主動改動別人的版本號,這時候就僅僅能覆蓋了。

可是你干過的壞事也就公諸于世了。

?

回退merge

???????? 假設僅僅是在merge。則能夠直接回退: $ git reset--hard HEAD^

???????? 假設merge 以后還有別的操作和改動,則能夠使用revert:

$ git revert -m merge線的編號? (從1開始計算,或者merge前的版本號號)

?

★ 版本號整合

???????? 東西已經commit了。可是又想改動,怎么辦呢?能夠通過上面“版本號庫回退”的方法來實現:resetcommit。可是那樣commit的改動就沒有了,須要又一次改動,工作量大。

???????? 所以除此之外。我們還能夠:

l? 假設僅僅是合并已commit的版本號:$ git rebase -i HEAD~2

l? 假設有補充的改動$ git commit --amend

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/278186.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/278186.shtml
英文地址,請注明出處:http://en.pswp.cn/news/278186.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

RN自定義組件封裝 - 播放類似PPT動畫

1. 前言 近日,被安排做一個開場動畫的任務。雖然RN提供了Animated來自定義動畫,但是本次動畫中的元素頗多,交互甚煩。。。在完成任務的同時,發現很多步驟其實是重復的,于是封裝了一個小組件記錄一下,分享給…

target存放的是編譯后的.class文件地方 默認情況下不會講非class文件放入進入 如果要使用非.class文件 需要通過增加配置方式自動加入文件...

target存放的是編譯后的.class文件地方 默認情況下不會講非class文件放入進入 如果要使用非.class文件 需要通過增加配置方式自動加入文件轉載于:https://www.cnblogs.com/classmethond/p/10520615.html

dropbox mac_如何在Windows或Mac上啟動時阻止Dropbox打開

dropbox macDropbox is a handy way to synchronize files across devices via the cloud. By default, Dropbox starts whenever you turn on your Windows PC or Mac, but sometimes you might not want it to. Here’s how to make sure it doesn’t launch when you startu…

spring cloud 總結

Finchley版本Spring Cloud Finchley; Spring Boot 2.0.3 史上最簡單的 SpringCloud 教程 | 第一篇: 服務的注冊與發現(Eureka)(Finchley版本) 所有的服務向這里注冊 史上最簡單的SpringCloud教程 | 第二篇: 服務消費者(restribbon&#xff09…

深入分析 ThreadLocal 內存泄漏問題

2019獨角獸企業重金招聘Python工程師標準>>> ThreadLocal 的作用是提供線程內的局部變量,這種變量在線程的生命周期內起作用,減少同一個線程內多個函數或者組件之間一些公共變量的傳遞的復雜度。但是如果濫用 ThreadLocal,就可能會…

如何將iPhone應用程序從應用程序庫移動到主屏幕

Justin Duino賈斯汀杜伊諾(Justin Duino)So as to not clutter up your home screen, newly-downloaded apps from the App Store can be sent directly to the App Library. But what if you later want to open the app without digging through the library? Here’s how t…

luogu4389 付公主的背包

題目鏈接:洛谷 題目大意:現在有$n$個物品,每種物品體積為$v_i$,對任意$s\in [1,m]$,求背包恰好裝$s$體積的方案數(完全背包問題)。 數據范圍:$n,m\leq 10^5$ 這道題,看到…

Git與Github的連接與使用

2019獨角獸企業重金招聘Python工程師標準>>> Git與Github的連接與使用 下面繼續,使用git 將項目上傳到GitHub上 首先要有GitHub賬號,這就不用說了,沒有的先注冊,地址:https://github.com 沒有倉庫的話,先新…

ttl電路制作pong游戲_如何玩Mozilla Firefox的隱藏的獨角獸Pong游戲

ttl電路制作pong游戲It seems like every browser has a hidden game these days. Chrome has a dinosaur game, Edge has surfing, and Firefox has . . . unicorn pong? Yep, you read that right—here’s how to play it. 這些天似乎每個瀏覽器都有一個隱藏的游戲。 Chrom…

nginx 注釋配置及詳解

前言 DMZ(Demilitarized Zone) 非軍事區,生產環境 WEB 服務部署的區域,公司的架構為一臺nginx 充當 load balance 服務,負載到兩臺 nginx 上面,反向代理至后臺服務,但是nginx 用的全是默認配置加上 proxy_pass 和 upst…

為什么無法運行谷歌play_什么是Google Play積分,以及如何使用它們?

為什么無法運行谷歌playThe Google Play Store is home to thousands of apps, games, movies, e-books, and more. You might find yourself making a lot of purchases there, so why not get rewarded for it? That’s where Google Play Points come in. Google Play商店提…

2019年春季學期第三周作業

本周作業 本周請大家完成上周挑戰作業的第一部分:給定一個整數數組(包含正負數),找到一個具有最大和的子數組,返回其最大的子數組的和。 例如:[1, -2, 3, 10, -4, 7, 2, -5]的最大子數組為[3, 10, -4, 7, 2] 1).實驗代…

Linux實驗二:linux 常用命令練習

ls命令 列出目錄內容 echo命令 顯示字符串 date命令 顯示或設置系統的日期與時間 cal命令 顯示日歷 who命令 列出登錄用戶信息 chown命令 chgrp命令 改變文件所屬的用戶組 chmod命令 改變文件訪問權限 find命令 在目錄中搜索文件 轉載于:https://www.cnblogs.com/nullno/p/87…

python數據類型之元組類型

#為何要有元組&#xff0c;存放多個值&#xff0c;元組不可變&#xff0c;更多的是用來做查詢 t(1,[1&#xff0c;2,3],a,(1,2)) #ttuple((1,[1,2,3],a,(1,2))) # print(type(t)) <class tuple># #元組可以作為字典的key # d{(1,2):egon} # print(d,type(d),d[(1,2)])# …

短語密碼_使用密碼短語以提高安全性

短語密碼Did you know that Windows supports using passwords of up to 127 characters? I don’t use passwords anymore, and I haven’t for years. I’ve switched to using password phrases instead. 您知道Windows支持使用最多127個字符的密碼嗎&#xff1f; 我不再使…

「單點登錄與權限管理」系列概述

首先&#xff0c;感謝幾位朋友在朋友圈轉發我的文章&#xff0c;小聲的告訴你們&#xff0c;是我主動讓他們幫忙轉發的&#xff1a;&#xff09;在朋友們的分享下&#xff0c;凌晨推送的一篇文章&#xff0c;閱讀人數達到了280多&#xff0c;很滿足&#xff0c;我會堅持寫下去&…

Jupyter notebook: TypeError: __init__() got an unexpected keyword argument 'io_loop 問題

使用環境&#xff1a;Anaconda3&#xff08;Python3.6&#xff09; 創建一個新的notebook時&#xff0c;無法連接到kernel&#xff0c;terminal上顯示錯誤為&#xff1a;TypeError: __init__() got an unexpected keyword argument io_loop 解決方法&#xff1a; conda install…

在Ubuntu Linux中獲取上次訪問的文件時間

Ubuntu Linux has a rich set of commands for manipulating and accessing files. The stat utility gives detailed access to file information, including last accessed and last modified file time. Ubuntu Linux具有一組豐富的用于操作和訪問文件的命令。 stat實用程序…

MySQL新增從庫

項目背景描述&#xff1a;在項目的開始只有一個MySQL實例在運行&#xff0c;后期因為安全性&#xff0c;壓力&#xff0c;備份等原因需要在此實例的基礎上面新增一個從庫。分析&#xff1a;MySQL主從是基于binlog日志來實現的&#xff0c;那么需要主服務器開啟binlog&#xff0…

第一個議題

① 在每個問題后面&#xff0c;請說明哪一章節的什么內容引起了你的提問&#xff0c;提供一些上下文 ② 列出一些事例或資料&#xff0c;支持你的提問 。 ③ 說說你提問題的原因&#xff0c;你說因為自己的假設和書中的不同而提問&#xff0c;還是不懂書中的術語&#xff0c;還…