git merge 回退_Git 基礎學習總結2(學不會你錘我)

638dc55dc4f3416e985533533ff639ba.png
作者序:我在知乎上搜索了有關 Git 的學習文章,雖然點贊很多但我認為他們寫得并不好,內容不夠詳盡,排版讓人看得疲勞,所以我決定自己寫幾篇關于 Git 的學習文章。當別人提供的不好用就自己創造一個新的,這也是 Git 誕生的原因之一

前文鏈接:

Git 基礎學習總結(學不會你錘我)?zhuanlan.zhihu.com

1. 創建倉庫

25631fa1225652b76bbaeef0a087d787.png

方法一:克隆

通常情況下,倉庫已經建好,我們需要從 gitlab 或者 github 上將倉庫下載到本地

$ git clone <url> <custom_repository_name>

默認創建的文件夾名稱為倉庫名,如需自定可以替換 <custom_repository_name>

?? 這個目錄下不能有與倉庫同名的文件夾,如果有需要保證文件夾內是空的,否則報錯

7361a3a3af494a431df7d74eb1873984.png

方法二:初始化+添加

如果是首次創建倉庫,則需要先在 github 或 gitlab 上創建一個倉庫,創捷完成后,會生成一個地址,在本地找個空目錄,

# 創建文件,或把項目需要的文件挪進來
$ ...

2. 提交更新

如前文所述,git 的文件狀態會在三種狀態間不斷轉換:

73e8e43a88b694db8e6388c874e1971e.png
點擊可查看高清大圖~~~

? 檢查當前文件狀態 git status

# 顯示簡潔版
$ git status -s 
$ git status --short 
M apps/api/forms.py
M apps/api/views.py

? 查看未暫存的文件變更 git diff

# 查看合并引入的內容
$ git diff --ours

? 加入暫存區 git add

$ git add <file-1>  <file-2>   
----------------------------
-i, --interactive    交互式處理文件,避免輸入文件名
-u, --update         將 modified 的文件加到暫存區
-p, --patch          加patch

? 提交 git commit

$ git commit -m <message>

Note: 提交信息應少于 50 個字符(25個漢字)

提交的時候,若需要忽略某些文件,如.pyc,local_settings.py等,可以設定.gitnore文件

.gitignore 語法:

  • 所有空行或者以 # 開頭的行都會被 Git 忽略
  • 可以使用標準的 glob 模式匹配
  • 匹配模式可以以(/)開頭防止遞歸
  • 匹配模式可以以(/)結尾指定目錄
  • 要忽略指定模式以外的文件或目錄,可以在模式前加上 !取反

? 刪除文件 git rm

刪除某個 Tracked文件 不追蹤 + 刪除文件

$ git rm <filename>

刪除某個既是 staged 也是 modified 的文件只能 --force

$ git rm -f <filename>

不追蹤 + 保留文件 Tracked ---> Untracked

$ git rm --cached <filename>

? 重命名/移動 git mv

$ git mv old.txt  new.text

實際上,git 執行了下列三項指令

$ mv old.txt new.text
$ git rm old.txt
$ git add new.text

? 暫存文件 git stash

$ git stash
$ git stash save
-------------------------
--patch            加 patch
--keep-index  不 stash 已暫存的文件
--include-untracked    包含未追蹤的文件

查看暫存區

$ git stash list

恢復暫存的修改

{n

移除指定暫存

{n

直接將暫存移入新分支

[<stash>

? 清理文件 git clean

$ git clean
--------------------
-f       直接刪除未追蹤的文件
-f -d    直接刪除未追蹤的文件和目錄
-n       列出執行git clean將會被刪除的文件
-i       交互式刪除

??注意:clean 不會刪除 .gitignore排除的文件,刪除排除文件加上 -x

$ git clean -f -d -x

3. 撤銷

280e7d4acd18257ac47e4d87dca553ec.png
點擊可查看高清大圖~~~

? 修改最近一次提交的備注

$ git commit --amend

?? 如果提交已經push到倉庫,修改備注之后,需要執行git push -f,普通 push 會失敗

f8bb1a32d01a8e40f484d2d209ea6bbb.png
$ git push -f

修改多個提交的備注 可用git rebase 解決

? 撤銷修改/回退版本

# 將某個文件回退到最新版本
$ git checkout HEAD <filename>
  • --hard 選項是“硬”回退,回退不保留當前的任何修改
  • -- soft 選項時“軟”回退,回退并保留修改(即索引和工作目錄的內容不變)

040cf422894c48374849d61e7f608207.png
三種選項對項目的影響,mixed會重置索引

git resetHEAD 指針指向指定的提交后,原始指針另存為 ORIG_HEAD

dc647aaec860f249404fd860636c1cf7.png

4.查看歷史

f74f8ba086842da667a9f6b5e4dcfc67.png
點擊可查看高清大圖~~~

通常情況下 git log 即可,當然也有一些實用的選項

$ git log -g          查看message與reflog
$ git log -p          查看各個差異
$ git log -p -2      指定顯示數量
$ git log --stat     查看簡略增刪行統計
$ git log --graph    展示分支合并示意圖與對應提交詳情

顯示的格式可以通過 --pretty 參數自定義

=oneline

a982ae178a145381d816063804f27139.png

? 按日期或作者篩選 log

寫工作日志或月總結,忘了上周自己做了哪些項目,此時用這項指令很有用

=2019-06-01 --until

? 快速查看昨天 develop 分支上的提交

{yesterday

? 列出所有提交者的提交統計

可以看到每一個提交者分別有多少次提交,以及每次提交的提交信息

$ git shortlog

c8a767d6633cb801aa7fbe2ab1539b78.png

?查看引用日志

其記錄了最近幾個月 HEAD 和分支引用所指向的歷史

$ git reflog

1b94b20e91f20591cb192a3a5fe884ee.png

下回分解: 遠程倉庫 | 分支 | 變基 | 合并

Git 基礎學習總結3(學不會你錘我)?zhuanlan.zhihu.com
197d906aa25538e9e989011713fc8207.png
This is End -------------------------
文章若有誤人子弟之處,望及時指正,必有重謝!

參考文獻:

【1】Jon Loeliger,Matthew McCullough. Git版本控制管理(第2版). 人民郵電出版社

【2】Scott Chacon,Ben Straub. Pro Git. Apress

本文獻給頭號粉絲 @MMMay 以及 13k 僵尸粉大軍........

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

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

相關文章

azure的虛擬機怎么選_Windows Azure案例: 選虛擬機或云服務

01虛擬機和云服務隨著云計算技術和市場的日漸成熟&#xff0c;企業在考慮IT管理和運維時的選擇也更加多樣化&#xff0c;應用也從傳統部署方式&#xff0c;發展為私有云、公有云、和混合云等部署方式。作為微軟核心的公有云平臺&#xff0c;Windows Azure提供了三種計算模式(虛…

ajax加載進度百分比,在ajax中顯示加載百分比的進度條,php

您好我正在使用ajax加載數據庫內容。我想顯示加載或圖像的總百分比。在ajax中顯示加載百分比的進度條&#xff0c;php這是我的腳本function name1(str){if (str.length0){document.getElementById("txtHint").innerHTML"";return;}if (window.XMLHttpReque…

python破解百度網盤提取碼_Python 一鍵獲取百度網盤提取碼

該 GIF 圖來自于官網&#xff0c;文末有給出鏈接。 描述 依托于百度網盤巨大的的云存儲空間&#xff0c;絕大數人會習慣性的將一些資料什么的存儲到上面&#xff0c;但是有的私密鏈接需要提取碼&#xff0c;但是讓每個想下載私密資源的人記住每一個提取碼顯然是不現實的。這個時…

assertpythonraise_使用assertRaise測試異常消息

我試圖在一個條件引發自定義異常消息的函數內斷言異常.功能&#xff1a;if not Cart.objects.filter(membermember).count():raise CartDoesNotExist("Cart Does Not Exist for Member: %s ( %id )." % (member.email,member.id))現在,我能夠成功地產生獲得加注聲明所…

vs12新建ajax,VS2012下WebService?的創建,部署和使用

WebService,即Web服務,能使得運行在不同機器上的不同應用無須借助,專門的第三方軟件或硬件,就可相互交換數據或集成.第一次選擇WebService,是為了替代數據庫遠程連接.我們都知道當SQL允許遠程時,則要打開某一端口.但這一點在我們已經部署好的服務器上,卻是不被允許的,于是就選擇…

pythonsql注入_python使用mysql,sql注入問題

python使用mysql importpymysql connpymysql.connect( host 127.0.0.1, #連接地址 port 3306, #端口 user root, #用戶名 password , #密碼 database db, #庫名稱 charset utf8 #編碼格式 utf8,不是utf-8 ) cursor conn.cursor(pymsql.cursors.DictCursor) #產生一個游標,…

h5優秀控件_H5前端學習的js插件大全,基本包含了大部分的前端最前沿的js插件和庫。...

布局SuperEmbed.js - 是一個Javascript庫&#xff0c;可檢測出網頁上的內嵌視頻并使他們能夠變成響應式元素。demoScrollReveal - ScrollReveal插件使用戶能夠無比輕松地創建桌面和移動瀏覽器的網頁滾動動畫。demoBricks.js - 是一款超快的用于固定寬度元素的“磚石”布局生成器…

js 控制鼠標_JS逆向 | 面向小白之eval混淆

所有文章首發在我的微信公眾號“逆向新手”&#xff0c;更多逆向系列請關注公眾號&#xff0c;謝謝&#xff01;聲明&#xff1a;本文只作學習研究&#xff0c;禁止用于非法用途&#xff0c;否則后果自負&#xff0c;如有侵權&#xff0c;請告知刪除&#xff0c;謝謝&#xff0…

mac mysql密碼錯誤_解決mac 下mysql安裝后root用戶登錄密碼錯誤問題

使用的mac OS 10.11 安裝mysql后訪問root&#xff0f;root用戶失敗&#xff0c;網上找了一些解決辦法&#xff0c;下面記錄下解決方法方便以后自己查詢概述(看懂下面就不用看了)&#xff1a;停服務&#xff1a;sudo /usr/local/mysql/support-files/mysql.server stop安全模式…

python獲取軟件窗口句柄_Python獲取瀏覽器窗口句柄過程解析

句柄&#xff08;handle&#xff09;是C程序設計中經常提及的一個術語。它并不是一種具體的、固定不變的數據類型或實體&#xff0c;而是代表了程序設計中的一個廣義的概念。句柄一般是指獲取另一個對象的方法——一個廣義的指針&#xff0c;它的具體形式可能是一個整數、一個對…

mysql 副本 同步_副本機制與副本同步

1.管理其他副本的節點稱為Follower。每當Leader將新數據寫入本地存儲d的副本時&#xff0c;也會將數據更改寫入日志之中。每個Follower會從Leader那里獲取修改日志&#xff0c;并相應地更新數據到的本地副本之中&#xff0c;這樣&#xff0c;所有的在Follower上副本的修改順序會…

mongodb 輸出數組字段_MongoDb文檔操作、索引操作

學習主題&#xff1a;MongoDb學習目標&#xff1a;掌握mongodb文檔的更新掌握mongodb文檔的刪除掌握mongodb文檔的查找掌握mongodb文檔的條件操作符掌握mongodb中的索引操作Mongodb的更新方式Update()函數更新Save()函數更新Mongodb的update更新&#xff1f;Update用于更新已存…

表情符號mysql utf8mb4_mysql utf8mb4與emoji表情

一 什么是Emojiemoji就是表情符號&#xff1b;詞義來自日語(えもじ&#xff0c;e-moji&#xff0c;moji在日語中的含義是字符)表情符號現已普遍應用于手機短信和網絡聊天軟件。emoji表情符號&#xff0c;在外國的手機短信里面已經是很流行使用的一種表情。手機上如何使用emoji&…

html自適應_web前端入門到實戰:HTML 文檔流,設置元素浮動,導致父元素高度無法自適應的解決方法...

元素浮動定義float 屬性定義元素在哪個方向浮動。以往這個屬性總應用于圖像&#xff0c;使文本圍繞在圖像周圍&#xff0c;不過在 CSS 中&#xff0c;任何元素都可以浮動。浮動元素會生成一個塊級框&#xff0c;而不論它本身是何種元素。如果浮動非替換元素&#xff0c;則要指定…

idea 遠程調試_我的天!你竟然不會用IDEA遠程調試Tomcat...

# 準備工作明確的遠程服務器的IP地址&#xff0c;某些我是&#xff1a;192.168.92.128關掉服務器防火墻&#xff1a;service iptables stop# 本地遠程服務器配置添加遠程服務器&#xff0c;如下圖復制遠程服務器自動生成的JVM參數&#xff0c;等下有用&#xff0c;如下圖&#…

mysql異步查詢 java_基于 mysql 異步驅動的非阻塞 Mybatis

雖然 spring5 也推出了 WebFlux 這一套異步技術棧&#xff0c;這種極大提升吞吐的玩法在 node 里玩的風生水起&#xff0c;但 java 世界里異步依舊不是主流&#xff0c;Vertx 倒是做了不少對異步的支持&#xff0c;但是其對于數據訪問層的封裝依舊還是挺精簡的&#xff0c;傳統…

跨域獲取后臺數據undefined_同源策略amp;JSONP跨域

同源策略&JSONP跨域同源策略 對于同源的定義&#xff0c;MDN給出了這樣的解釋&#xff1a;如果兩個頁面的協議&#xff0c;端口&#xff08;如果有指定&#xff09;和主機都相同&#xff0c;則兩個頁面具有相同的源。如何確定兩個頁面是否同源&#xff0c;只要比較兩個頁面…

python 除數不能為零的報錯有哪些_【社區精選40】Python錯誤處理及代碼調試方法(文末贈書中獎名單)...

本文整理自愛數據學院中的問答更多精彩問答&#xff0c;進入下方社區網站查看http://www.lovedata.cn/invitation社區精選話題 第40期Python錯誤處理及代碼調試方法一次寫完代碼程序并能夠正常運行的概率很小很小&#xff0c;總會有各種各樣的錯誤bug需要處理。有的報錯簡單&a…

利用python批量查詢企業信息_python實現批量獲取指定文件夾下的所有文件的廠商信息...

本文實例講述了python實現批量獲取指定文件夾下的所有文件的廠商信息的方法。分享給大家供大家參考。具體如下&#xff1a;功能代碼如下&#xff1a;import os, string, shutil,reimport pefileimport codecs, sysimport wximport struct#輸出中打印Unicode字符#sys.stdout co…

mac mysql prefpane_【MySQL數據庫開發之一】Mac下配置安裝數據庫-MySQL

本站文章均為那么從今天開始陸續會更新數據庫和Hibernate框架的博文&#xff0c;也是Himi學習的歷程記錄&#xff0c;希望大家能共同討論和研究&#xff1b;OK&#xff0c;本篇簡單介紹安裝吧&#xff0c;首先到MySQL官方網站&#xff1a;如上圖&#xff1a;點擊DOWNLOAD &…