Windows下GIT的使用方法

来源:https://www.cnblogs.com/tarenacode/archive/2019/07/15/11191091.html
-Advertisement-
Play Games

文章引用自:Git使用教程 https://www.cnblogs.com/tugenhua0707/p/4050072.html 本文章只限用於Windows,敬請參考 註意:操作命令純屬手敲,可能會有錯誤,錯誤後參考文章鏈接! Git下載地址:https://gitforwindows.org/ ...


文章引用自:Git使用教程    https://www.cnblogs.com/tugenhua0707/p/4050072.html

本文章只限用於Windows,敬請參考

註意:操作命令純屬手敲,可能會有錯誤,錯誤後參考文章鏈接!

Git下載地址https://gitforwindows.org/  # Windows版本

安裝方式:一頓操作猛如虎,一看全是下一步。煩請移步百度。

安裝完成後打開 Git Bash (打不開百度)

一、初步打開Git Bash:

因為Git是分散式版本控制系統,所以需要填寫用戶名和郵箱作為一個標識。

填寫用戶名: git config --global user.name "這裡填寫您的用戶名"

填寫郵箱:git config --global user.email "這裡填寫您的郵箱"

二、創建版本庫(倉庫):

       什麼是版本庫?版本庫又名倉庫,英文名repository,你可以簡單的理解一個目錄,這個目錄裡面的所有文件都可以被Git管理起來,每個文件的修改,刪除,Git都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻還可以將文件”還原”。

1、進入目錄

首先進入您的倉庫目錄:cd E:\code\testgit

輸入pwd命令可以查看當前的目錄

2、把目錄變成Git可以管理的倉庫

改變倉庫屬性: git init 

這時候你當前testgit目錄下會多了一個.git的目錄,這個目錄是Git來跟蹤管理版本的,沒事千萬不要手動亂改這個目錄裡面的文件,否則,會把git倉庫給破壞了。

3、倉庫操作命令:

    把文件添加到暫存區: git add 您的文件(包括文件後輟名)

    把文件提交到倉庫: git commit -m “您的文件(這個地方是提交文件的註釋)”

    查看未提交文件: git status

    查看文件修改的具體內容: git diff 您的文件(包括文件後輟名)

一次性把所有暫存庫的文件提交到倉庫: git commit

三、版本回退

1、查看文件操作日誌

查看文件詳細的操作日誌: git log

查看文件簡明的操作日誌: git log --pretty=oneline

2、文件版本回退操作

當前版本回退到上一個版本: git reset --hard HEAD^

當前版本回退到上上一個版本: git reset --hard HEAD^^

當前版本回退到指定n版本: git reset --hard HEAD~n

回退到上一個版本後後悔了,想返回原來最後一次的版本,可以通過版本號回退:

獲取版本號: git reflog

       版本回退: git reset --hard 版本號(最前面的字元)

四、工作區與暫存區的區別

   工作區:就是你在電腦上看到的目錄,比如目錄下testgit里的文件(.git隱藏目錄版本庫除外)。或者以後需要再新建的目錄文件等等都屬於工作區範疇。

版本庫(Repository):工作區有一個隱藏目錄.git,這個不屬於工作區,這是版本庫。其中版本庫裡面存了很多東西,其中最重要的就是stage(暫存區),還有Git為我們自動創建了第一個分支master,以及指向master的一個指針HEAD。

baGit提交文件到版本庫有兩步:

  第一步:是使用 git add 把文件添加進去,實際上就是把文件添加到暫存區。

  第二步:使用git commit提交更改,實際上就是把暫存區的所有內容提交到當前分支上。

五、Git撤銷修改和刪除文件操作

1、撤銷修改

工作區做的修改全部撤銷: git checkout -- 您的文件(包括文件後輟名)

註意:命令git checkout -- readme.txt 中的 -- 很重要,如果沒有 -- 的話,那麼命令變成創建分支了。

命令 git checkout -- readme.txt 意思就是,把readme.txt文件在工作區做的修改全部撤銷, 這裡有2種情況,如下:

readme.txt自動修改後,還沒有放到暫存區,使用 撤銷修改就回到和版本庫一模一樣的狀態。

另外一種是readme.txt已經放入暫存區了,接著又作了修改,撤銷修改就回到添加暫存區後的狀態。

2、刪除文件

直接在文件庫刪除文件或者使用如下命令

刪除命令: rm 您的文件(包括文件後輟名)

在沒上傳到倉庫之前可以使用上面的撤銷修改命令再把刪除的文件恢復回來

六、 遠程倉庫

 在瞭解之前,先註冊github賬號,由於你的本地Git倉庫和github倉庫之間的傳輸是通過SSH加密的,所以需要一點設置:

1、 創建SSH key

在用戶主目錄下,看看有沒有 .ssh目錄,如果有,再看看這個目錄下有沒有 id_rsaid_rsa.pub 這兩個文件id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,可以放心地告訴任何人。),如果有的話,直接跳過此如下命令,如果沒有的話,打開命令行,輸入如下命令:

ssh-keygen  -t rsa C “您的郵箱”

2、添加key

    登錄github,打開右上角的齒輪按鈕“settings”中左側列表的SSH Keys,然後點擊“Add SSH Key”,填上任意title(標題),在Key文本框里黏貼“id_rsa.pub”文件的內容。

點擊綠色按鈕“Add Key”就可以看到添加完成的key。

3、如何添加遠程庫

現在的情景是:我們已經在本地創建了一個Git倉庫後,又想在github創建一個Git倉庫,並且希望這兩個倉庫進行遠程同步,這樣github的倉庫可以作為備份,又可以其他人通過該倉庫來協作。

首先登錄github,然後右上角的“加”的符號“create a new repo”創建一個新的倉庫。

Repository name填入“您的倉庫名稱”,其他保持預設設置,點擊綠色按鈕“Create repository”按鈕,就成功地創建了一個新的Git倉庫:

目前,在GitHub上的這個testgit倉庫還是空的,GitHub告訴我們,可以從這個倉庫克隆出新的倉庫,也可以把一個已有的本地倉庫與之關聯,然後,把本地倉庫的內容推送到GitHub倉庫。

現在,我們根據GitHub的提示,在本地的testgit倉庫下運行命令: 

git remote add origin https://github.com/tugenhua0707/testgit.git(後面這個網址要用自己的)          # 克隆遠程倉庫內容

推送本地到遠程:git push -u origin master

由於遠程庫是空的,我們第一次推送master分支時,加上了 –u參數,Git不但會把本地的master分支內容推送的遠程新的master分支,還會把本地的master分支和遠程的master分支關聯起來,在以後的推送或者拉取時就可以簡化命令。推送成功後,可以立刻在github頁面中看到遠程庫的內容已經和本地一模一樣了。

從現在起,只要本地做了提交,就可以通過如下命令:

git push origin master

把本地master分支的最新修改推送到github上了,現在就擁有了真正的分散式版本庫了。

4、如何從遠程庫克隆?

上面我們瞭解了先有本地庫,後有遠程庫時候,如何關聯遠程庫。

  現在我們想,假如遠程庫有新的內容了,我想克隆到本地來 如何克隆呢?

  首先,登錄github,創建一個新的倉庫,名字叫testgit2。

遠程庫準備好了,下一步就是使用命令git clone克隆一個本地倉庫了。

git clone 你的github地址

接著在本地目錄下就會生成testgit2 目錄了

七、創建與合併分支

在  版本回填退里,你已經知道,每次提交,Git都把它們串成一條時間線,這條時間線就是一個分支。截止到目前,只有一條時間線,在Git里,這個分支叫主分支,即master分支。HEAD嚴格來說不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是當前分支。

首先,我們來創建dev分支,然後切換到dev分支上。如下操作:

 get checkout -b dev      # 創建並切換分支

git branch                # 查看當前分支

git checkout 命令加上 –b參數表示創建並切換,相當於如下2條命令

get checkout master(主分支)   # 切換回主分支

git merge dev                     # 在主分支上合併dev分支

      git branch -d dev               # 刪除dev分支

      git log                           # 查看分支情況

總結創建與合併分支命令如下:

   查看分支:git branch

   創建分支:git branch name

   切換分支:git checkout name

創建+切換分支:git checkout –b name

合併某分支到當前分支:git merge name

刪除分支:git branch –d name

主次分支內容衝突解決辦法:

Git用<<<<<<<,=======,>>>>>>>標記出不同分支的內容,其中<<<HEAD是指主分支修改的內容,>>>>>fenzhi1 是指fenzhi1上修改的內容,修改分支內容和主分支內容一致即可解決

分支管理策略。

通常合併分支時,git一般使用”Fast forward”模式,在這種模式下,刪除分支後,會丟掉分支信息,現在我們來使用帶參數 –no-ff來禁用”Fast forward”模式。

命令:

       在主目錄下合併分支目錄:

git merge no-ff  -m 本次命令做的事情註釋 dev

分支策略:首先master主分支應該是非常穩定的,也就是用來發佈新版本,一般情況下不允許在上面幹活,幹活一般情況下在新建的dev分支上幹活,幹完後,比如上要發佈,或者說dev分支代碼穩定後可以合併到主分支master上來。

八、BUG分支解決辦法

  在開發中,會經常碰到bug問題,那麼有了bug就需要修複,在Git中,分支是很強大的,每個bug都可以通過一個臨時分支來修複,修複完成後,合併分支,然後將臨時的分支刪除掉。

 git stash         #把當前工作分區先隱藏

在主目錄新建進入臨時分支,查看並更改需要修改的代碼後,切換回主分支合併臨時分支,合併確認完成後,在進入之前的工作分支。

進入工作區後恢復之前隱藏的工作分區內容。

git stash list     # 查看之前的工作分區隱藏在哪個地方

Git把stash內容存在某個地方了,但是需要恢復一下,可以使用如下2個方法:

git stash apply恢復,恢復後,stash內容並不刪除,你需要使用命令git stash drop來刪除。

另一種方式是使用git stash pop,恢復的同時把stash內容也刪除了。

九、多人協作

當你從遠程庫克隆時候,實際上Git自動把本地的master分支和遠程的master分支對應起來了,並且遠程庫的預設名稱是origin。

git remote     # 要查看遠程庫的信息

git remote v  # 要查看遠程庫的詳細信息

其中查看遠程庫的詳細信息後會有兩條推送信息,結尾括弧內的fetch為抓取,就是下載;push為推送,就是把本地推送到遠程

1、 推送分支

git push origin master       # 本地主分支推送到遠程倉庫

那麼一般情況下,那些分支要推送呢?

master分支是主分支,因此要時刻與遠程同步。

一些修複bug分支不需要推送到遠程去,可以先合併到主分支上,然後把主分支master推送到遠程去。

2、 抓取分支

這個看原文章


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 抽象類、介面與類是一個層次的概念,是C#中極其重要的概念。 抽象類是從多個類中抽象出來的公共模版,提供子類均具有的功能。介面是從多個類中抽象出來的規範,體現的是規範和實現分離的原則,同時也有效的彌補了C#繼承單根性的不足。深入理解抽象類和介面在設計理念上的差別,才能夠正確的選擇抽象類或介面來進行開發 ...
  • 1、背景 我:雖然通過繼承減少了代碼冗餘,但是,每一個子類的構造函數還是需要給所有屬性賦值的,很麻煩的。 師:這個好辦,用base就行啦。 我:貝司?還吉他呢! 師:別急,首先我們先介紹下實例化子類對象的時候調用父類構造函數。 運行結果: 從上面代碼分析可知: (1)執行 ChildClass ch ...
  • (GNU Wget) 快速瀏覽(單HTML文件):(GNU Wget 線上手冊) Wget 1.20.3(目前最新) 下載地址:(win32 )https://eternallybored.org/misc/wget/1.20.3/32/wget.exe (win64 )https://eterna ...
  • Linux軟體安裝——安裝軟體的命令 摘要:本文主要學習瞭如何在Linux系統中安裝、更新、卸載軟體。 rpm命令 rpm命令用來在Linux系統上進行軟體的安裝。 基本語法 安裝命令: 如果沒有安裝則安裝,如果已經安裝則升級: 如果沒有安裝則不安裝,如果已經安裝則升級: 卸載命令: 查詢安裝信息: ...
  • 每天使用Linux每天都要接觸到Bash,使用Bash時似乎永遠都讓人摸不著頭腦的概念就是終端,坐在這台運行著Linux的機器的顯示器前面,這個顯示器就是終端的輸出,而插在機器上的USB鍵盤或者PS/2鍵盤就是終端的輸入,看來這是一種最直白意義上關於終端的解釋。 但是有的時候,機器上並沒有看到顯示器 ...
  • Linux基本目錄結構如下: >>>/bin [重點] /user/bin /user/local/bin 是binary的縮寫,存放經常使用的指令 >>>/sbin /user/sbin /user/local/sbin s是super user的意思,存放的是系統管理員使用的系統管理程式 >>> ...
  • [TOC] 官方網站 http://jumpserver.org Jumpserver 軟體包環境要求: Python = 3.6.x Mysql Server ≥ 5.6 Mariadb Server ≥ 5.5.56 Redis 生產環境部署建議部署 1.4.8 版本 環境 jumpserver ...
  • 使用apt-get的時候發現ubuntu和阿裡雲均已經不提供該版本的源,所以需要找到其他的替代源。 使用的ubuntu版本是14.10,屬於非LTS(長期支持版本),因此前一段時間還可以使用apt-get update來更新源,現在已提示更新失敗,無法下載,無法訪問了。現提供一種解決思路供大家參考。 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...