Github基本操作的學習與溫習

GitHub是最先進的分布式版本控制工具,下面是我學習中總結的操作流程,僅供參考

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Git安裝

?????????????????? 下載git的windows版本并安裝,不予詳述(直接打開安裝包,按默認的流程一步步進行即可,任意位置點擊鼠標右鍵彈出git 字樣的選項時即為安裝成功)

?????????????????? 安裝成功后輸入下面命令進行設置

??????????????????????????? $ git config --global user.name "你的git賬號"

$ git config --global user.email "你注冊git賬號的郵箱"

Git操作:

?????????????????? ?創建版本庫

  1. 選擇一個地方創建空目錄(所有目錄名必須是英文的,中文的會出bug)
  2. 輸入下列命令

$ mkdir learngit //learngit為倉庫名,可以自己命名

$ cd learngit

$ pwd????? //顯示當前目錄

??????????????????????????? $ git init? //將目錄變為git管理的倉庫

  1. 添加文件,在learngit文件夾下創建文件,輸入下列命令

$ git add 文件名????? //文件名是創建文件的名字

$ git commit -m "注釋"//-m后面提交的是文檔說明,這個必須要有,否則報錯

?????????????????? 修改版本庫:

  1. 查看倉庫狀態:

$ git status

  1. 查看修改內容:

$ git diff 文件名

  1. 查看歷次版本歷史紀錄

$ git log

  1. 回退上次版本

$ git reset --hard HEAD^

  1. 回退到任意一個版本

$ git reset --hard num //num 為要回退到某個版本的版本號,部分即可

  1. 查詢歷史命令

$ git reflog

  1. 查詢工作區和版本庫里面的最新版本的區別

$ git diff HEAD -- 文件名 //要查詢文件的名字

  1. 放棄工作區文件的修改(此命令中的兩個橫杠很重要,不能少寫)

$ git checkout -- 文件名 //放棄修改的文件名稱

  1. 撤銷暫存區文件的修改

$ git reset HEAD 文件名

Git工作時候實際上是工作區->暫存區(stage)->分支(master為git自動創建的分支),HEAD為指向master 的一個指針。Git add實際上是將文件提交到了暫存區。Git commit是將暫存區的所有內容都提交到分支,可以先執行多個add,

再使用一個commit提交。

?????????????????? 如果直接將文件管理器中的文件刪除或者使用rm命令刪除,工作區和版本庫的內容就會不一致,此時:

  1. 可以選擇直接從版本庫中刪除文件

$ git rm 文件名

$ git commit

  1. 文件刪除錯誤,這時可以從版本庫里還原文件

$ git checkout -- 文件名

連接git網站:

  1. 創建SSH Key,在user目錄下(用戶主目錄),查看是否有.SSH文件,并且查看其下面有無id_rsa(私鑰,不能告訴別人)和id_rsa.pub(公鑰,可以告訴別人)文件,如果沒有可以運行命令創建

$ ssh-keygen -t rsa -C "郵箱名"

  1. 登陸GitHub網站,打開“SSH Key”頁面,點擊“new SSH”,輸入任意名,粘貼公鑰內容

有本地庫后創建遠程庫:

  1. 登陸網站,點擊“create a new repository”,創建新庫,設置名稱learngit,點擊創建
  2. 將本地內容關聯到遠程庫里面去

$ git remote add origin git@github.com:賬戶名/learngit.git

  1. 把本地庫的內容推送到遠程庫上,

$ git push -u origin master

第一次推送時使用-u參數關聯,后面推送時候就可以簡化命令$ git push origin master

從遠程庫克隆庫

  1. 登陸網站,假設已經創建了一個庫gitskill
  2. 克隆庫到本地

$ git clone git@github.com:賬戶名gitskill.git

$cd gitskill?????? //創建本地文件夾

$ls

創建與刪除分支:

  1. 創建另一個分支dev,并將指針HEAD切換到另一個分支上去

$git checkout -b dev? //dev為另一個分支名,記住中間是一個橫杠

-b表示創建并切換

  1. 查看所有分支

???????? ?????????????????? $ git brach

  1. 切換分支

$ git checkout master//切換回master分支

  1. 合并分支

$ git merge dev? //將dev分支合并到當前分支上來

  1. 刪除分支

$ git branch -d dev? //刪除dev分支

分支沖突:

?????????????????? 當創建一個新分支并且做出修改后回到原分支再次修改文件,此時git無法將兩個修改的文件進行快速合并,必須將某一個文件修改后或使其完全一致方可。查看分支合并情況:

??????????????????????????? $ git log --graph --pretty=oneline --abbrev-commit? //查看沖突分支的合并情況

No-ff模式(禁用fast forward模式)

??????????????????????????? Fast forward模式下合并分支會丟失分支信息,禁止后在執行合并分支操作時能從分支歷史上看到分支信息。 禁用模式下執行合并命令:

??????????????????????????? $ git merge? --no-ff -m "注釋"

儲存工作狀態:

?????????????????? 在處理bug等必須暫時離開時,可以保存現在的工作狀態

  1. 儲存當前工作狀態:

$ git stash?? //存儲當前分支

  1. 修復bug(假如在master中修復bug)

$ git checkout master??? // 轉到master分支

$ git checkout –b issue-101?? //創建新的分支issue-101來修復bug

  1. 修復完成后:

$ git checkout master?? //切換回master

$ git merge –no-ff –m “注釋” issue-101 //修改完bug的分支合并到master中去,并保留痕跡

$ git branch –d issue-101?? //刪除臨時分支

??????????????????????????? 4.切換回原來的工作狀態

???????????????????????????????????? $ git checkout dev

此時工作區是沒有東西的,原來的stash內容被存在別的地方,可以用$ git stash list來查看。此時工作現場還在,此時可以執行:

?????? $ git stash apply?? // 恢復存儲內容

?????? $ git stash drop??? // 刪除儲存的工作狀態文件

或者一次恢復并刪除工作狀態文件:

?????? $git stash pop

刪除分支:

當分支創建完畢即將合并時,突然不使用這個分支了,要將其刪除。此時使用強行刪除命令(此時沒有合并,不能使用git branch來刪除分支):

??????????????????????????? $ git branch –D feature?? //feature 是要刪除的分支名字

多人協作:

  1. 查看遠程庫的信息

$ git remote????

或者使用命令

$ git remove –v ???//查看遠程庫更詳細的內容

  1. 推送分支到公共庫

$ git push origin 分支名?? // origin是遠程庫的默認名稱

注意:

l? Master 是主分支,需要時刻與遠程庫同步

l? Dev為開發分支,也需要同步

l? Bug 分支只用于本地修復bug,沒必要推送

l? Feature 是新功能開發分支,這個取決于是否與他人合作開發

  1. 抓取分支,當開發者同時更新dev分支時,可以先抓取這個分支到本地,解決沖突后再上傳

$ git branch –set-upstream dev origin/dev? //指定本地和遠程庫dev文件的鏈接

$ git pull????????????????? //抓取網上的dev文件

創建標簽:

??????????????????????????? 為每一個分支創建一個版本號:

?????????????????????????????????????????????? $ git branch??? //查看分支

?????????????????????????????????????????????? $ git checkout master?? //轉到需要加版本號的標簽

?????????????????????????????????????????????? $ git tag v1.0??? //為分支創建版本號標簽,v1.0為版本號

?????????????????????????????????????????????? $ git tag????? //查看所有版本號標簽

?????????????????????????????????????????????? $ git show tag??? //查看所有版本號標簽的詳細信息

創建帶有說明的標簽:

?????????????????? $ git tag –a 版本號? -m “說明文字“

看版本號的說明文字

?????????????????? $ git show 版本號?

操作標簽:

???????? ?刪除標簽:

???????????????????????????????????? $ git tag –d 版本號

???????? 推送標簽到遠程:

???????????????????????????????????? $ git push origin 版本號

???????? 推送所有標簽名到遠程:

???????????????????????????????????? $ git push origin –tags

???????? 如果標簽已經推送到遠程,可以先刪除本地的,再 刪除遠程的

???????????????????????????????????? $ git tag –d 版本號? //? 刪除本地的

???????????????????????????????????? $ git push origin :refs/tags/版本號

轉載于:https://www.cnblogs.com/wuheng1991/p/5443001.html

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

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

相關文章

excel統計行數_值得收藏的6個Excel函數公式(有講解)

收藏的Excel函數大全公式再多,幾天不用也會忘記。怎么才能不忘?你需要了解公式的運行原理。小編今天不再推送一大堆函數公式,而是根據提問最多的問題,精選出6個實用的,然后詳細的解釋給大家。1、計算兩個時間差TEXT(B2…

Studio One正版多少錢 Studio One正版怎么購買

隨著版權意識的增強,打擊盜版的力度越來越大,現在網絡上的盜版資源越來越少,資源少很難找是一方面,另一方面使用盜版軟件不僅很多功能不能使用,而且很多盜版軟件都被植入各種木馬病毒,從而帶來各種各樣的風…

DNS簡述

常見DNS記錄SOA:域權威開始NS:權威域名服務器A:主機地址CNAME:別名對應的正規名稱MX:郵件傳遞服務器PTR:域名指針 (用于反向 DNS)查詢過程瀏覽器緩存->hosts->LDNS->LDNS緩存->ISP->ISP緩存…

cuda gpu相關匯總

1.Ubuntu16.04:在anaconda下安裝pytorch-gpu 轉自:Ubuntu16.04:在anaconda下安裝pytorch-gpu_莫等閑996的博客-CSDN博客 1 創建虛擬環境并進入 conda create -n pytorch-gpu python3.6 conda activate pytorch-gpu 2 下載對應的安裝包和配件 方法一(推薦)&#…

普通人學python有意義嗎_學python難嗎

首先,對于初學者來說學習Python是不錯的選擇,一方面Python語言的語法比較簡單易學,另一方面Python的實驗環境也比較容易搭建。學習Python需要的時間取決于三方面因素。(推薦學習:Python視頻教程)其一是學習者是否具有一定的計算機…

karatsuba乘法

karatsuba乘法 Karatsuba乘法是一種快速乘法。此算法在1960年由Anatolii Alexeevitch Karatsuba 提出,并于1962年得以發表。[1]此算法主要用于兩個大數相乘。普通乘法的復雜度是n2,而Karatsuba算法的復雜度僅為3nlog3≈3n1.585(log3是以2為底…

在Visual Studio上開發Node.js程序(2)——遠程調試及發布到Azure

【題外話】 上次介紹了VS上開發Node.js的插件Node.js Tools for Visual Studio(NTVS),其提供了非常方便的開發和調試功能,當然很多情況下由于平臺限制等原因需要在其他機器上運行程序,進而需要遠程調試功能&#xff0c…

服務器定期監控數據_基礎設施硬件監控探索與實踐

本文選自 《交易技術前沿》總第三十六期文章(2019年9月)陳靖宇深圳證券交易所 系統運行部Email: jingyuchenszse.cn摘要:為了應對基礎設施規模不斷上升,數據中心兩地三中心帶來的運維挑戰,深交所結合現有基礎設施現狀,以通用性、靈…

LeetCode206:Reverse Linked List

Reverse a singly linked list. 分別用迭代和遞歸實現 struct ListNode {int val;struct ListNode *next; }; 迭代實現: struct ListNode* reverseList(struct ListNode* head) {struct ListNode *pre NULL;struct ListNode *cur head;while( cur ! NULL ){struct…

VS2010問題匯總

問題1:error C3872: "0xa0": 此字符不允許在標識符中使用 error C3872: "0xa0": 此字符不允許在標識符中使用 或者 error C3872: 0xa0: this character is not allowed in an identifier 解法:這是因為直接復制代碼的問題。0xa0是…

交叉編譯HTOP并移植到ARM嵌入式Linux系統

原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章、作者信息和本聲明,否則將追究法律責任。 最近一直在完善基于Busybox做的ARM Linux的根文件系統,由于busybox是一個精簡的指令集組成的簡單文件系統,其優點就是極…

vue如何獲取年月日_好程序員web前端教程分享Vue相關面試題

好程序員web前端教程分享Vue相關面試題,Vue是一套構建用戶界面的漸進式框架,具有簡單易用、性能好、前后端分離等優勢,是web前端工程師工作的好幫手,也是企業選拔人才時考察的重點技能。接下來好程序員web前端教程資源就給大家分享…

Underscore.js (1.7.0)-函數預覽

集合(Collections)(25) - each- map- reduce- reduceRight- find- filter- where- findWhere- reject- every- some- contains- invoke- pluck- max- min- sortBy- groupBy- indexBy- countBy- shuffle- sample- toArray- size- partition數組&#xff0…

react dispatch_React系列自定義Hooks很簡單

React系列-Mixin、HOC、Render Props(上)React系列-輕松學會Hooks(中)React系列-自定義Hooks很簡單(下)我們在第二篇文章中介紹了一些常用的hooks,接著我們繼續來介紹剩下的hooks吧useReducer 作為useState 的替代方案。它接收一個形如(state, action) > newStat…

三大UML建模工具Visio、Rational Rose、PowerDesign的區別

本文源自http://developer.51cto.com/art/201006/207993.htm UML建模工具Visio 、Rational Rose、PowerDesign的比較 ROSE是直接從UML發展而誕生的設計工具,它的出現就是為了對UML建模的支持,ROSE一開始沒有對數據庫端建模的支持,但是在現在…

內核中的內存申請:kmalloc、vmalloc、kzalloc、get_free_pages 之間的區別

kmalloc vmalloc kzalloc get_free_page()是內核空間申請內存空間函數 malloc是用戶空間申請內存函數 一 ,kmalloc() 與 kfree() 和get_free_page的區別 1,用于申請較小的、連續的物理內存:使用的是內存分配器slab一小片。申請的內存位于物理內存…

前端 保存后端傳來數據的id_一篇來自前端同學對后端接口的吐槽

前言去年的某個時候就想寫一篇關于接口的吐槽,當時后端提出了接口方案對于我來說調用起來非常難受,但又說不上為什么,沒有論點論據所以也就作罷。最近因為寫全棧的緣故,團隊內部也遇到了一些關于接口設計的問題,于是開…

2018-2019-1 《信息安全系統設計基礎》教學進程

《信息安全系統設計基礎》教學進程 目錄 考核方式暑假準備教學進程 第01周學習任務和要求第02周學習任務和要求第03周學習任務和要求第04周學習任務和要求第05周學習任務和要求第06周學習任務和要求第07周學習任務和要求第08周學習任務和要求第09周學習任務和要求第10周學習任務…

python字符串是什么_python字符串詳解

字符串詳解 在python中引號引起來的就是字符串 字符串是用來存儲少量數據 索引 索引(下標) 通過索引可以精確的定位到某個元素 name "meat" meat 每一個字母叫做一個元素 # 0123 從左向右代表每一個字母 #-4-3-2-1 從右向左每一個字母 print(name[-1]) 輸出 t name …

最小編輯代價

最小編輯代價問題: 對于兩個字符串A和B,我們需要進行插入、刪除和修改操作將A串變為B串,定義c0,c1,c2分別為三種操作的代價,請設計一個高效算法,求出將A串變為B串所需要的最少代價。 給定兩個字…