日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

git-从入门到熟悉

發布時間:2024/7/19 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 git-从入门到熟悉 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • Git歷史
  • Git與svn對比
    • Svn
    • Git
  • git工作流程
  • Git的安裝
    • 軟件下載
    • 軟件安裝
      • 安裝git for windows
      • 安裝TortoiseGit
      • 安裝中文語言包
  • 使用git管理文件版本
    • 創建版本庫
      • 使用GitBash
      • 使用TortoiseGit
    • 添加文件
      • 添加文件過程
      • 工作區和暫存區
    • 修改文件
      • 提交修改
      • 查看修改歷史
      • 差異比較
      • 還原修改
    • 刪除文件
    • 案例:將java工程提交到版本庫
    • 忽略文件語法規范
  • 遠程倉庫
    • 添加遠程庫
      • 在github上創建倉庫
      • ssh協議
        • 什么是ssh?
        • 基于密匙的安全驗證
        • ssh密鑰生成
        • ssh密鑰配置
      • 同步到遠程倉庫
        • 使用git bash
        • 使用TortoiseGit同步
    • 從遠程倉庫克隆
      • 使用git bash:
      • 使用TortoiseGit:
    • 從遠程倉庫取代碼
    • 創建合并分支
    • 使用TortoiseGit實現分支管理
      • 創建分支
      • 合并分支
    • 解決沖突
  • 在IntelliJ IDEA中使用git
    • 在Idea中配置git
    • 將工程添加至git
      • 一些bug
    • 從遠程倉庫克隆
    • 從服務端拉取代碼

TortoiseGit文件夾和文件圖標不顯示解決方法

Git歷史

同生活中的許多偉大事件一樣,Git 誕生于一個極富紛爭大舉創新的年代。Linux 內核開源項目有著為數眾廣的參與者。絕大多數的 Linux 內核維護工作都花在了提交補丁和保存歸檔的繁瑣事務上(1991-2002年間)。到 2002 年,整個項目組開始啟用分布式版本控制系統 BitKeeper 來管理和維護代碼。

到 2005 年的時候,開發 BitKeeper 的商業公司同 Linux 內核開源社區的合作關系結束,他們收回了免費使用 BitKeeper 的權力。這就迫使 Linux 開源社區(特別是 Linux的締造者 Linus Torvalds )不得不吸取教訓,只有開發一套屬于自己的版本控制系統才不至于重蹈覆轍。他們對新的系統訂了若干目標:

? 速度

? 簡單的設計

? 對非線性開發模式的強力支持(允許上千個并行開發的分支)

? 完全分布式

? 有能力高效管理類似 Linux 內核一樣的超大規模項目(速度和數據量)

Git與svn對比

Svn

SVN是集中式版本控制系統,版本庫是集中放在中央服務器的,而干活的時候,用的都是自己的電腦,所以首先要從中央服務器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服務器。集中式版本控制系統是必須聯網才能工作,如果在局域網還可以,帶寬夠大,速度夠快,如果在互聯網下,如果網速慢的話,就郁悶了。

下圖就是標準的集中式版本控制工具管理方式:

集中管理方式在一定程度上看到其他開發人員在干什么,而管理員也可以很輕松掌握每個人的開發權限。

但是相較于其優點而言,集中式版本控制工具缺點很明顯:

  • 服務器單點故障

  • 容錯性差

Git

Git是分布式版本控制系統,那么它就沒有中央服務器的,每個人的電腦就是一個完整的版本庫,這樣,工作的時候就不需要聯網了,因為版本都是在自己的電腦上。既然每個人的電腦都有一個完整的版本庫,那多個人如何協作呢?比如說自己在電腦上改了文件A,其他人也在電腦上改了文件A,這時,你們兩之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。

下圖就是分布式版本控制工具管理方式:

git工作流程

一般工作流程如下:

  • 從遠程倉庫中克隆 Git 資源作為本地倉庫。

  • 從本地倉庫中checkout代碼然后進行代碼修改

  • 在提交前先將代碼提交到暫存區。

  • 提交修改。提交到本地倉庫。本地倉庫中保存修改的各個歷史版本。

  • 在修改完成后,需要和團隊成員共享代碼時,可以將代碼push到遠程倉庫。

  • 下圖展示了 Git 的工作流程:

    Git的安裝

    最早Git是在Linux上開發的,很長一段時間內,Git也只能在Linux和Unix系統上跑。不過,慢慢地有人把它移植到了Windows上?,F在,Git可以在Linux、Unix、Mac和Windows這幾大平臺上正常運行了。由于開發機大多數情況都是windows,所以本教程只講解windows下的git的安裝及使用。

    軟件下載

    下載地址:https://git-scm.com/download

    參考資料中安裝包已經下載完畢,根據不同的操作系統選擇對應的安裝包。

    軟件安裝

    安裝git for windows

    一路"下一步"使用默認選項即可。

    安裝TortoiseGit

    一路"下一步"使用默認選項即可。

    默認選項下會啟動配置畫面:

    由于目前只有英文語言包,默認即可繼續下一步。

    配置git.exe,在4.2.1中已經安裝過git-for-windows了所以在此找到git.exe所在的目錄。

    配置開發者姓名及郵箱,每次提交代碼時都會把此信息包含到提交的信息中。

    使用默認配置,點擊"完成"按鈕完成配置。

    完整完畢后在系統右鍵菜單中會出現git的菜單項。

    安裝中文語言包

    安裝中文語言包并不是必選項。可以根據個人情況來選擇安裝。

    直接"下一步"完整完畢。

    語言包安裝完畢后可以在TortoiseGit的設置中調整語言

    使用git管理文件版本

    創建版本庫

    什么是版本庫呢?版本庫又名倉庫,英文名repository,你可以簡單理解成一個目錄,這個目錄里面的所有文件都可以被Git管理起來,每個文件的修改、刪除,Git都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻可以"還原"。由于git是分布式版本管理工具,所以git在不需要聯網的情況下也具有完整的版本管理能力。

    創建一個版本庫非常簡單,可以使用git bash也可以使用tortoiseGit。首先,選擇一個合適的地方,創建一個空目錄(D:\temp\git\repository)。

    使用GitBash

    在當前目錄中點擊右鍵中選擇Git Bash來啟動。

    或者在開始菜單中啟動。注意如果是從開始菜單啟動的gitbash需要切換目錄到倉庫所在的目錄。

    創建倉庫執行命令:

    $ git init

    使用TortoiseGit

    使用TortoiseGit時只需要在目錄中點擊右鍵菜單選擇"在這里創建版本庫"

    版本庫創建成功,會在此目錄下創建一個.git的隱藏目錄,如下所示:

    在windows中如何顯示隱藏目錄隱藏目錄請自行百度o(╯□╰)o

    概念:

    版本庫:".git"目錄就是版本庫,將來文件都需要保存到版本庫中。

    工作目錄:包含".git"目錄的目錄,也就是.git目錄的上一級目錄就是工作目錄。只有工作目錄中的文件才能保存到版本庫中。

    添加文件

    添加文件過程

    在D:\temp\git\repository目錄下創建一個mytest.txt文件

    文本文件變為帶"+"號的圖標:

    提交文件:在mytest.txt上再次點擊右鍵選擇"提交",此時將文件保存至版本庫中。

    工作區和暫存區

    Git和其他版本控制系統如SVN的一個不同之處就是有暫存區的概念。

    什么是工作區(Working Directory)?

    工作區就是你在電腦里能看到的目錄,比如我的reporstory文件夾就是一個工作區。

    有的同學可能會說repository不是版本庫嗎怎么是工作區了?其實repository目錄是工作區,在這個目錄中的".git"隱藏文件夾才是版本庫。這回概念清晰了吧。

    Git的版本庫里存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區,還有Git為我們自動創建的第一個分支master,以及指向master的一個指針叫HEAD。

    如下圖所示:

    分支和HEAD的概念我們稍后再講。前面講了我們把文件往Git版本庫里添加的時候,是分兩步執行的:

    第一步是用git add把文件添加進去,實際上就是把文件修改添加到暫存區;

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

    因為我們創建Git版本庫時,Git自動為我們創建了唯一一個master分支,所以,現在,git commit就是往master分支上提交更改。

    你可以簡單理解為,需要提交的文件修改通通放到暫存區,然后,一次性提交暫存區的所有修改。

    修改文件

    提交修改

    被版本庫管理的文件不可避免的要發生修改,此時只需要直接對文件修改即可。修改完畢后需要將文件的修改提交到版本庫。

    在mytest.txt文件上點擊右鍵,然后選擇"提交"

    查看修改歷史

    在開發過程中可能會經常查看代碼的修改歷史,或者叫做修改日志。來查看某個版本是誰修改的,什么時間修改的,修改了哪些內容。

    可以在文件上點擊右鍵選擇"顯示日志"來查看文件的修改歷史。

    差異比較

    當文件內容修改后,需要和修改之前對比一下修改了哪些內容此時可以使用"比較差異功能"

    還原修改

    當文件修改后不想把修改的內容提交,還想還原到未修改之前的狀態。此時可以使用"還原"功能

    注意:此操作會撤銷所有未提交的修改,所以當做還原操作是需要慎重慎重!!!

    刪除文件

    需要刪除無用的文件時可以使用git提供的刪除功能直接將文件從版本庫中刪除。

    案例:將java工程提交到版本庫

    第一步:將參考資料中的java工程project-test復制到工作目錄中

    第二步:將工程添加到暫存區。

    點擊確定完成暫存區添加。

    三、忽略文件或文件夾

    在此工程中,并不是所有文件都需要保存到版本庫中的例如"bin"目錄及目錄下的文件就可以忽略。好在Git考慮到了大家的感受,這個問題解決起來也很簡單,在Git工作區的根目錄下創建一個特殊的.gitignore文件,然后把要忽略的文件名填進去,Git就會自動忽略這些文件。

    如果使用TortoiseGit的話可以使用菜單項直接進行忽略。

    選擇保留本地文件。完成后在此文件夾內會多出一個.gitignore文件,這個文件就是文件忽略文件,當然也可以手工編輯。其中的內容就是把bin目錄忽略掉。

  • 提交代碼

    將代碼添加到master分支上,其中.gitignore文件也需要添加到暫存區,然后提交到版本庫。

  • 忽略文件語法規范

    空行或是以 # 開頭的行即注釋行將被忽略。

    可以在前面添加正斜杠 / 來避免遞歸,下面的例子中可以很明白的看出來與下一條的區別。

    可以在后面添加正斜杠 / 來忽略文件夾,例如 build/ 即忽略build文件夾。

    可以使用 ! 來否定忽略,即比如在前面用了 *.apk ,然后使用 !a.apk ,則這個a.apk不會被忽略。

    * 用來匹配零個或多個字符,如 *.[oa] 忽略所有以".o"或".a"結尾, *~ 忽略所有以 ~ 結尾的文件(這種文件通常被許多編輯器標記為臨時文件); [] 用來匹配括號內的任一字符,如 [abc] ,也可以在括號內加連接符,如 [0-9] 匹配0至9的數; ? 用來匹配單個字符。

    看了這么多,還是應該來個栗子:

    # 忽略 .a 文件

    *.a

    # 但否定忽略 lib.a, 盡管已經在前面忽略了 .a 文件

    !lib.a

    # 僅在當前目錄下忽略 TODO 文件, 但不包括子目錄下的 subdir/TODO

    /TODO

    # 忽略 build/ 文件夾下的所有文件

    build/

    # 忽略 doc/notes.txt, 不包括 doc/server/arch.txt

    doc/*.txt

    # 忽略所有的 .pdf 文件 在 doc/ directory 下的

    doc/**/*.pdf

    遠程倉庫

    添加遠程庫

    現在我們已經在本地創建了一個Git倉庫,又想讓其他人來協作開發,此時就可以把本地倉庫同步到遠程倉庫,同時還增加了本地倉庫的一個備份。

    常用的遠程倉庫就是github:https://github.com/,接下來我們演示如何將本地代碼同步到github。

    在github上創建倉庫

    首先你得在github上創建一個賬號,這個就不演示了。然后在github上創建一個倉庫:

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-zGGCEPQ7-1597047026418)(git%E6%95%99%E6%A1%88-v2.assets/20200809222234.png)]

    點擊"create repository"按鈕倉庫就創建成功了。

    Github支持兩種同步方式"https"和"ssh"。如果使用https很簡單基本不需要配置就可以使用,但是每次提交代碼和下載代碼時都需要輸入用戶名和密碼。如果使用ssh方式就需要客戶端先生成一個密鑰對,即一個公鑰一個私鑰。然后還需要把公鑰放到githib的服務器上。這兩種方式在實際開發中都用應用,所以我們都需要掌握。接下來我們先看ssh方式。

    ssh協議

    什么是ssh?

    SSH 為 Secure Shell(安全外殼協議)的縮寫,由 IETF 的網絡小組(Network Working Group)所制定。SSH 是目前較可靠,專為遠程登錄會話和其他網絡服務提供安全性的協議。利用 SSH 協議可以有效防止遠程管理過程中的信息泄露問題。

    基于密匙的安全驗證

    使用ssh協議通信時,推薦使用基于密鑰的驗證方式。你必須為自己創建一對密匙,并把公用密匙放在需要訪問的服務器上。如果你要連接到SSH服務器上,客戶端軟件就會向服務器發出請求,請求用你的密匙進行安全驗證。服務器收到請求之后,先在該服務器上你的主目錄下尋找你的公用密匙,然后把它和你發送過來的公用密匙進行比較。如果兩個密匙一致,服務器就用公用密匙加密"質詢"(challenge)并把它發送給客戶端軟件??蛻舳塑浖盏?#34;質詢"之后就可以用你的私人密匙解密再把它發送給服務器。

    ssh密鑰生成

    在windows下我們可以使用 Git Bash.exe來生成密鑰,可以通過開始菜單或者右鍵菜單打開Git Bash

    git bash 執行命令,生命公鑰和私鑰

    命令: ssh-keygen -t rsa

    執行命令完成后,在window本地用戶.ssh目錄C:\Users\用戶名\.ssh下面生成如下名稱的公鑰和私鑰:

    ssh密鑰配置

    密鑰生成后需要在github上配置密鑰本地才可以順利訪問。

    在key部分將id_rsa.pub文件內容添加進去,然后點擊"Add SSH key"按鈕完成配置。

    同步到遠程倉庫

    同步到遠程倉庫可以使用git bash也可以使用tortoiseGit

    使用git bash

    在倉庫所在的目錄(D:\temp\git\repository)點擊右鍵選擇"Git Bash Here",啟動git bash程序。

    然后在git bash中執行如下語句:

    git remote add origin git@github.com:sublun/mytest.git

    git push -u origin master

    注意:其中黃色字體部分(sublun)需要替換成個人的用戶名。

    如何出現如下錯誤:

    可以先執行如下命令,然后再執行上面的命令

    $ git remote rm origin

    使用TortoiseGit同步

    一、由于TortoiseGit使用的ssh工具是"PuTTY"git Bash使用的ssh工具是"openSSH",如果想讓TortoiseGit也使用剛才生成的密鑰可以做如下配置:

    Url:遠程倉庫的地址

    推送URL:也是相同的

    Putty密鑰:選擇剛才生成的密鑰中的私鑰

  • 同步。在本地倉庫的文件夾中單擊右鍵,選擇"Git同步"

    {width=“5.7625in” height=“4.354861111111111in”}

  • 從遠程倉庫克隆

    克隆遠程倉庫也就是從遠程把倉庫復制一份到本地,克隆后會創建一個新的本地倉庫。選擇一個任意部署倉庫的目錄,然后克隆遠程倉庫。

    使用git bash:

    $ git clone git@github.com:sublun/mytest.git

    使用TortoiseGit:

    在任意目錄點擊右鍵:

    從遠程倉庫取代碼

    Git中從遠程的分支獲取最新的版本到本地有這樣2個命令:

  • git fetch:相當于是從遠程獲取最新版本到本地,不會自動merge(合并代碼)

  • git pull:相當于是從遠程獲取最新版本并merge到本地

    上述命令其實相當于git fetch 和 git merge

    在實際使用中,git fetch更安全一些

    因為在merge前,我們可以查看更新情況,然后再決定是否合并

    如果使用TortoiseGit的話可以從右鍵菜單中點擊"拉取"(pull)或者"獲取"(fetch)

  • 創建合并分支

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

    一開始的時候,master分支是一條線,Git用master指向最新的提交,再用HEAD指向master,就能確定當前分支,以及當前分支的提交點:

    每次提交,master分支都會向前移動一步,這樣,隨著你不斷提交,master分支的線也越來越長。

    當我們創建新的分支,例如dev時,Git新建了一個指針叫dev,指向master相同的提交,再把HEAD指向dev,就表示當前分支在dev上:

    你看,Git創建一個分支很快,因為除了增加一個dev指針,改改HEAD的指向,工作區的文件都沒有任何變化!

    不過,從現在開始,對工作區的修改和提交就是針對dev分支了,比如新提交一次后,dev指針往前移動一步,而master指針不變:

    假如我們在dev上的工作完成了,就可以把dev合并到master上。Git怎么合并呢?最簡單的方法,就是直接把master指向dev的當前提交,就完成了合并:

    所以Git合并分支也很快!就改改指針,工作區內容也不變!

    合并完分支后,甚至可以刪除dev分支。刪除dev分支就是把dev指針給刪掉,刪掉后,我們就剩下了一條master分支:

    使用TortoiseGit實現分支管理

    使用TortoiseGit管理分支就很簡單了。

    創建分支

    在本地倉庫文件夾中點擊右鍵,然后從菜單中選擇"創建分支":

    如果想創建完畢后直接切換到新分支可以勾選"切換到新分支"選項或者從菜單中選擇"切換/檢出"來切換分支:

    合并分支

    分支切換到dev后就可以對工作區的文件進行修改,然后提交到dev分支原理的master分支不受影響。例如我們修改mytest.txt中的內容,然后提交到dev分支。

    切換到master分支后還是原理的內容:

    將dev分支的內容合并到master分支,當前分支為master。從右鍵菜單中選擇"合并":

    再查看mytest.txt的內容就已經更新了:

    解決沖突

    兩個分支中編輯的內容都是相互獨立互不干擾的,那么如果在兩個分支中都對同一個文件進行編輯,然后再合并,就有可能會出現沖突。

    例如在master分支中對mytest.txt進行編輯:

    然后提交到版本庫。

    切換到dev分支,對mytest.txt進行編輯:

    最后進行分支合并,例如將dev分支合并到master分支。需要先切換到master分支然后進行分支合并。

    出現版本沖突。

    沖突需要手動解決。

    在沖突文件上單機右鍵選擇“解決沖突”菜單項:

    把沖突解決完畢的文件提交到版本庫就可以了。

    在IntelliJ IDEA中使用git

    在Idea中配置git

    安裝好IntelliJ IDEA后,如果Git安裝在默認路徑下,那么idea會自動找到git的位置,如果更改了Git的安裝位置則需要手動配置下Git的路徑。

    選擇File→Settings打開設置窗口,找到Version Control下的git選項:

    選擇git的安裝目錄后可以點擊“Test”按鈕測試是否正確配置

    將工程添加至git

    1)在idea中創建一個工程,例如創建一個java工程,名稱為idea-git-test,如下圖所示:

  • 創建本地倉庫

    在菜單中選擇"vcs"→Import into Version Control→Create Git Repository…

    選擇工程所在的上級目錄。本例中應該選擇idea-projects目錄,然后點擊"OK"按鈕,在工程的上級目錄創建本地倉庫,那么idea-projects目錄就是本地倉庫的工作目錄,此目錄中的工程就可以添加到本地倉庫中。也就是可以把idea-git-test工程添加到本地倉庫中。

    選擇之后在工具欄上就多出了git相關工具按鈕:

  • 將工程添加至本地倉庫

    直接點擊

    commit按鈕,將工程提交至本地倉庫。

    然后點擊"commit"按鈕,將工程添加至本地倉庫。

  • 推送到遠程

    在github上創建一個倉庫然后將本地倉庫推送到遠程。

    在工程上點擊右鍵,選擇git→Repository→push,

    或者在菜單中選擇vcs→git→push

    點擊"Define remote"鏈接,配置https形式的URL,git形式的無法通過。然后點擊OK

    點擊"push"按鈕就講本地倉庫推送到遠程,如果是第一次配置推送需要輸入github的用戶名和密碼。

  • 一些bug

    csdn鏈接

    csdn鏈接

    csdn鏈接

    ?

    從遠程倉庫克隆

    關閉工程后,在idea的歡迎頁上有"Check out from version control"下拉框,選擇git

    此處仍然推薦使用htts形式的url,點擊"test"按鈕后顯示連接成功。

    點擊OK按鈕后根據提示將遠程倉庫克隆下來,然后倒入到idea中。

    從服務端拉取代碼

    如果需要從服務端同步代碼可以使用工具條中的"update"按鈕

    總結

    以上是生活随笔為你收集整理的git-从入门到熟悉的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。