廖雪峰git教程學習

廖雪峰git教程
git – Linus在2周內用c寫的

1.1 基本概念

  • 版本控制系統,追蹤文本文件的改動,文件、視頻等二進制文件則不可追蹤(微軟的word也是二進制文件)
  • HEAD 指向當前分支,表示當前版本(最新的提交)
  • HEAD^ 上一版本
  • HEAD^^ 上上版本
  • HEAD~100 往上100個版本
  • 創建Git版本庫時,Git自動為我們創建了唯一一個master分支
  • 只要沒有git add,那么修改的內容就不會被放入暫存區,就不會被提交
  • 遠程庫的名字就是origin,這是Git默認的叫法,也可以改成別的,但是origin這個名字一看就知道是遠程庫

1.2 常用指令

mkdir learngit
pwd  -- 用于顯示當前目錄
ls -ah -- 可查詢隱藏的文件夾,如.git
cat -- 讀取文件的內容
rm test.txt -- 刪除文件
git init -- 將某個目錄變成Git可以管理的倉庫
git add -- 告訴git,把文件添加到倉庫(暫存區)git add . -- 將工作區中所有未跟蹤或者修改的文件添加到暫存區
git commit -m ""   -- 把文件提交到倉庫(master分支)
git log -- 告訴我們修改的歷史記錄(由近到遠)
/ 或者只顯示一行 git log --pretty=oneline
git reset --hard HEAD^   -- 回退到上一版本
git reset --hard 1094a -- 回退到某一版本(需要知道commit id,并輸入前幾位)
git reflog -- 即使關閉了git bash之后,依然能記錄之前每個步驟
git status -- 查詢工作區的狀態(是否有新增文件,文件是否有修改,比如切回dev分支時,可以先查詢工作區的狀態)
git diff HEAD -- readme.txt -- 查看工作區和版本庫里面最新版本的readme文件的區別
git rm test.txt -- 你在工作區刪除了test,git status檢測到了,在確認要刪除后,使用git rm+git commit
git checkout -- test.txt -- 剛剛在工作區誤刪了test,但是暫存區還有,還原回來
git remote add origin -- 在本地創建了一個Git倉庫后,又想在GitHub創建一個Git倉庫,并且讓這兩個倉庫進行遠程同步,這樣,GitHub上的倉庫既可以作為備份,又可以讓其他人通過該倉庫來協作
git remote -- 查看遠程倉庫信息
git remote -v -- 顯示更詳細信息
git push -u origin master -- 實際上是把本地當前分支master推送到遠程(第一次推送加 -u)
git push origin master -- 之后再有提交,推送無需加-u
git clone + git倉庫地址(https或ssh,ssh協議速度最快)
git checkout -b dev -- 創建dev分支(-b 表示branch?創建并切換)
git branch -- 查看當前分支(當前分支前面會標一個*號)
git checkout master -- 先切回master分支,再合并
git merge dev -- 把合并指定分支(dev)到當前分支(master)
git merge --no-ff -m "不使用Fast forward模式合并" dev -- Fast forward模式下,刪除分支后,會丟掉分支信息
git branch -d dev -- 合并完成后,就可以放心地刪除dev分支了
git switch -c dev -- git的新命令,創建并切換到新的dev分支
git switch master
git log --graph -- 可以看到分支合并圖
vim 文件名 -- 當不同分支合并產生沖突時,可以查看文件
git log --graph --pretty=oneline --abbrev-commit -- 查看分支合并情況
git stash -- 把當前工作現場“儲藏”起來,等以后恢復現場后繼續工作(場景:當前dev分支還沒開發完,不能進行提交,但有臨時緊急任務,需要新建分支來修復bug)
git stash apply + git stash drop -- 恢復工作區,或者:
git stash pop (恢復的同時把stash內容也刪了)
git stash list -- 查看被暫存的工作現場
git stash apply stash@{0} -- 恢復stash@{0}暫存
git cherry-pick 4c805e2 -- 能復制一個特定的提交(4c805e2,修復bug的提價)到當前分支(比如在master分支上修復了bug,但是dev分支上也有這個bug,通過復制的方式解決dev上的bug)
git branch -D feature -- 丟棄一個沒有被合并過的分支,加-D強行刪除
git tag v1.0 -- 打標簽(默認標簽是打在最新提交的commit上的)
git tag v0.9 f52c633 -- 在歷史提交的特定commit id上打標簽
git tag -a v0.1 -m "version 0.1 發布" 1094adb -- 添加備注
git tag -d v0.1 -- 刪除標簽
git tag -d v0.9 + git push origin :refs/tags/v0.9 -- 刪除已推送到遠程的標簽
git push origin v1.0 -- 推送標簽到遠程
git push origin --tags -- 一次性推送全部尚未推送到遠程的本地標簽
git tag -- 查看所有標簽
git show v0.9 -- 查看某標簽的詳細信息

在這里插入圖片描述
在這里插入圖片描述
寫了不該寫的,但是還沒git add,使用git checkout -- readme.txt可以撤銷工作區的修改;
寫了不該寫的,還git add了,使用git reset HEAD readme.txt可以撤銷暫存區的修改

命令git checkout – readme.txt意思就是,把readme.txt文件在工作區的修改全部撤銷,這里有兩種情況:
一種是readme.txt自修改后還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;
一種是readme.txt已經添加到暫存區后,又作了修改,現在,撤銷修改就回到添加到暫存區后的狀態。

命令git rm用于刪除一個文件。如果一個文件已經被提交到版本庫,那么你永遠不用擔心誤刪,但是要小心,你只能恢復文件到最新版本,你會丟失最近一次提交后你修改的內容。

1.3 創建合并分支過程圖

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
分支合并沖突
在這里插入圖片描述
在這里插入圖片描述
手動修改沖突后,不需要merge了
在這里插入圖片描述

1.4 多人協作

多人協作的工作模式通常是這樣:

  1. 首先,可以試圖用git push origin < branch-name>推送自己branch-name分支的修改;
  2. 如果推送失敗,則因為遠程分支比你的本地更新,需要先用git pull試圖合并
  3. 如果合并有沖突,則解決沖突,并在本地提交(即使沒有沖突,后push的同學不得不先pull,在本地合并,然后才能push成功);
  4. 沒有沖突或者解決掉沖突后,再用git push origin < branch-name>推送就能成功!

如果git pull提示no tracking information,則說明本地分支和遠程分支的鏈接關系沒有創建,用命令git branch --set-upstream-to=origin/dev dev(指定本地dev分支與遠程origin/dev分支的鏈接)

1.5 記錄一個在學習git的過程中,遇到的問題

  1. 學習時,使用了以前創建的ying文件夾,這個文件夾其實和以前github上的ying倉庫關聯了(但是我忘了這件事)
    在這里插入圖片描述
    在這里插入圖片描述

  2. 當我在推送ying工作區的內容到learngit2020時,出現以下錯誤。因為此時,我的本地ying和遠程倉庫的內容已經不一致了
    在這里插入圖片描述

  3. 先使用git pull --rebase origin master 取回遠程主機某個分支的更新,再與本地的指定分支合并 (變基:把分叉的提交歷史“整理”成一條直線,看上去更直觀)在這里插入圖片描述
    看看此時的工作區,多出了Users文件夾:
    在這里插入圖片描述

  4. 再執行git push -u origin master
    在這里插入圖片描述
    看看遠程倉庫ying的變化,最新的已經更新上去了
    在這里插入圖片描述
    ** 注意:這里并沒有實現推送到新的遠程倉庫learngit2020

  5. 本地庫ying關聯到遠程庫ying后,再關聯到另一個遠程庫learngit2020

git remote set-url origin git@github.com:StephanieHuang0801/learngit2020.git
git push origin master:master

在這里插入圖片描述
在這里插入圖片描述

現在看看遠程庫learngit2020
在這里插入圖片描述

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

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

相關文章

操作系統 --- 進程和管程的不同

1.進程定義的是私有數據結構PCB,管程定義的是公共數據結構,如消息隊列等; 2.進程是由順序程序執行有關操作,而管程主要是進行同步操作和初始化操作; 3.設置進程的目的在于實現系統的并發行,而管程的設置則是解決共享資源的互斥使用問題; 4.進程通過調用管程中的過程對共享數據結…

JCO 自定義DestinationDataProvider

要讓JAVA程序能訪問SAP系統&#xff0c;一般通過SAP JCO接口進行通訊&#xff0c;在獲取到SAP的連接時需求提供一些連接參數&#xff0c;這些參數在最新的 JCO 3.0 中需要被保存到一個帶有擴展名.jcoDestination的文件中&#xff0c;這個文件同時被保存在應用程序的安裝目錄中。…

android BLE Peripheral 手機模擬設備發出BLE廣播 BluetoothLeAdvertiser

android 從4.3系統開始可以連接BLE設備&#xff0c;這個大家都知道了。iOS是從7.0版本開始支持BLE。android 進入5.0時代時&#xff0c;開放了一個新功能&#xff0c;手機可以模擬設備發出BLE廣播&#xff0c; 這個新功能其實是 對標于 iOS系統的手機模擬iBeacon設備。先介紹一…

前端后臺管理系統梳理

再梳理一遍 一、商品后臺管理系統 1. 功能 1.1 服務端情況 開啟了CORS跨域支持需要授權的 API &#xff0c;必須在請求頭中使用 Authorization 字段提供token 令牌&#xff08;axios攔截器&#xff09;baseUrl&#xff0c;接口地址&#xff1a;http://localhost:8888/api/…

操作系統 --- 使用套接字進行網絡通信

一個套接字就是一個通信標識類型的數據結構,包含了通信目的的地址、通信使用的端口號、通信網絡的傳輸協議、進程所在的網絡地址,以及針對客戶或服務器程序提供的不同系統調用等,是進程通信和網絡通信的基本構件。套接字是為客戶/服務器模型而設計的,通常分為以下兩類: 1.基于…

構造器執行順序

轉載于:https://www.cnblogs.com/a6948076/p/8045801.html

Java08-java語法基礎(七)構造方法

Java08-java語法基礎&#xff08;七&#xff09;構造方法 一、構造方法 1、什么是構造方法&#xff1f; 構造方法&#xff08;類方法&#xff09;是一個方法名和類名相容的特殊的成員方法。 2、構造方法的作用&#xff1f; 當使用new關鍵字創建一個對象時&#xff0c;為新建對象…

安裝mysql8.0.20,報錯“找不到VCRUNTIME140_1.dll”

寫在最前&#xff0c;指令集合 以管理員身份運行cmd mysql -uroot -p 【進入】mysql mysql > exit 【退出】 net stop mysql 【暫停】 net start mysql 【啟動】 mysql -u root -p&#xff08;命令后輸入臨時密碼&#xff0c;進入mysql&#xff09; ALTER USER USER() …

操作系統 --- 線程與進程的比較

如果說,在操作系統中引入進程的目的是為了使多個程序能并發執行,以提高資源利用率和系統吞吐量,那么在操作系統中再引入線程,則是為了減少程序在并發執行時所付出的時空開銷,使OS(操作系統)具有更好的并發性… 我們再回顧一下進程的兩個基本屬性: 1.進程是一個可擁擁有資源的獨…

24種吸引人的營銷文章標題寫法,總有一個適合你!

在如今信息爆炸的互聯網時代下&#xff0c;如何提高提高文章的閱讀(新聞稿、軟文宣傳稿、微信公眾號)&#xff0c;成為從業者們共同研究的課題?首先你得有一個足夠吸引的標題&#xff0c;尤其是定向推送的時候&#xff0c;這將是由一個質變帶來量變的過程。小編雖然不提倡標題…

[js] 處理字符串換行造成的json解析失敗

需求&#xff1a;從數據庫某個字段取出字符串出來&#xff0c;轉為json&#xff0c;結果發現報錯為 解析失敗&#xff0c;發現是因為取出的字符串換行導致&#xff0c;現在需要將字符串里面的換行替換為&#xff0c;使字符串可依成功解析成json對象。 技術&#xff1a;依靠repl…

使用mockjs模擬數據

一、安裝 簡單粗暴 npm install mockjs 二、引入 CommonJS引入 let Mock require(mockjs) let userInfo Mock.mock({data: {responseCode: 200,responseMessage: success,userMessage: {name: "cname",email: "email",msg: cparagraph(2)}} })或者ES…

angular --- ngDialog關閉當前層

今天做項目,使用ngDialog 彈出了一層,并且在彈出層上又彈出了第二層. 現在想點擊確定按鈕關閉第二層. 使用以前的ngDialog.close()會關閉掉全部ngDialog.open方法彈出來的層. 在網上查了一堆,找了好多,最后發現就一句話.$scope.closeThisDialog(); 注意, 要在controller:中傳遞…

lodash源碼分析之compact中的遍歷

小時候&#xff0c; 鄉愁是一枚小小的郵票&#xff0c; 我在這頭&#xff0c; 母親在那頭。 長大后&#xff0c;鄉愁是一張窄窄的船票&#xff0c; 我在這頭&#xff0c; 新娘在那頭。 后來啊&#xff0c; 鄉愁是一方矮矮的墳墓&#xff0c; 我在外頭&#xff0c; 母親在里頭。…

[HAOI2008]移動玩具

這又是一道神奇的搜索題。。。只要記錄每種狀態。。。然后暴力判斷這種狀態往后一步的情況。。。 廣搜出最優解即可。。。 呆碼&#xff1a; #include<iostream> #include<cstdio> #include<queue> #include<cstring> using namespace std;int dx[5]{0…

javascript --- Sortable一個拖拽的接口

最近項目里面要實現需要實現一個拖拽功能,自己實現很麻煩,就在網上找到了一個封裝好的sortable函數,github(https://github.com/SortableJS/Sortable). 首先是依賴的引入:(也可以自己下載源代碼導入,方式很多呢) <body><!-- Latest compiled and minified CSS -->…

個人發展戰略6天課

第一課 冰山模型 【知道自己為什么會不喜歡一份工作】 衡量和一個崗位是否匹配、匹配程度如何 從上到下的要素 知識技能&#xff08;30%&#xff09;特定領域 - 可以后天學習的&#xff0c;顯性的、容易看出來的 和工作的關系&#xff1a; 工作中有陌生的內容&#xff0c;每天…

《Web全棧工程師的自我修養》

1. 什么是全棧工程師 Full-Stack Engineer Facaebook只招全棧工程師&#xff1f; Web開發流程 產品經理-->交互設計-->視覺設計-->開發&#xff08;前端、后端&#xff09;-->測試-->發布 流水線的優勢 “各司其職”的弊端 工程師職責不清導致效率低工程師缺乏主…

div設置overflow-scroll滾動之后,jq獲取其子元素的offset.top出現問題。

先上個圖&#xff1a; 布局很簡單&#xff0c;左右超過屏幕的部分自行滾動。 1. html <div class"ce-container"><div class"ce-leftBox">//左邊的內容</div><div class"ce-rightBox">//右邊的內容 </div…

javascript --- 利用Sortable實現一個可視化公式編輯器

Sortable的依賴引入和簡單使用參見:https://blog.csdn.net/piano9425/article/details/90437182 先簡單的介紹一下可視化公式編輯器的功能(樣式沒有調,畢竟每個人的需求都不一樣): 首先會有2個需要計算的(我稱為操作數)A_XiangRaoZuWenSheng和AYKZQ_CS,以及兩個操作符ADD(加法…