手把手教你配置git和git倉庫

2020-09-21 承志的算法課堂


今天是git專題的第二篇,我們來介紹一下git的基本配置,以及建立一個git倉庫的基本方法。

首先申明一點,本文不會介紹git的安裝。一方面是大部分個人PC的系統當中都是已經裝好了git的,另外一方面是git安裝的教程和內容網上太多了,大同小異,所以這部分我們就略過了。如果你打開命令行輸入git提示報錯的話,那麼可以百度一下你對應系統的git安裝方法。

git配置

git常用的配置內容不多,一般來說最常用的就只有兩個。一個是user相關的配置,一個是alias相關的配置。下面就來詳細說說,首先講講user的配置。

user是配置你的用戶名和郵箱,這是一個非常常用的配置。因為像是github和gitlab等等代碼倉庫,當我們使用git命令與它們交互的時候,它都會通過git的配置獲取我們的郵箱來和帳戶進行關聯,從而對我們的帳號進行驗證。配置的方法也很簡單,主要有兩種方法,一種是通過git config命令來配置,另外一種我們等會一起說。

先來看看config命令:

git config --global user.name chengzhigit config --global user.email chengzhi@gmail.com

這裡的global表示的是全局配置,一次配置全局生效。

第二個配置是alias配置,也就是別名配置。別名配置的用途是我們自己給git命令起一個別名,這樣當我們輸入命令的時候可以進行簡化。比如說git當中切換分支的命令是git checkout xxx,這裡的checkout單詞很長,我們經常會拼錯。我們可以給它起一個別名是co,這樣命令就成了git co xxx,相比起來要舒服很多。

我們同樣可以使用git config命令來完成別名的配置:

git config --global alias.st status   co 替換checkout

下面再來說說第二種方法,第二種方法就是直接修改git的配置文件。在windows系統當中,git配置文件的路徑是C:\Users\Administrator,如果是Linux或者是Mac系統,配置文件地址是~/下。

我們cd到對應的地址尋找一下gitconfig這個文件,如果找不到可以自己創建一個。我們在文件當中輸入我們想要進行的配置就行了,這裡提供一個模板:

[user] name = chengzhi email = chengzhi@gmail.com[alias] co = checkout br = branch ci = commit st = status

當然在這個config當中我們還可以進行一些其他的配置,比如配置git默認的編輯器成emacs等等,但一般這些配置不是很常用,所以我們就不提了,感興趣的可以自己了解一下。

一般來說配置用戶名和常用的別名就可以了。

配置ssh

git安裝好了之後,我們就可以註冊github帳號開始我們的開源旅程了。這裡說明一下,git和github其實並沒有特殊的關係,github只是使用git的開原始碼倉庫而已。前面也說到過使用git作為工具的代碼倉庫有很多,除了github之外還有gitlab以及國內這幾年比較火的碼雲等等。

註冊成功之後,我們進入github需要做一件事情就是配置ssh。ssh是安全外殼協議,它本身和git沒什麼關係,主要是為了使用它來進行安全驗證。說白了為了證明你是你,為了方便根據帳號做權限管理。比如阻止你clone你沒有權限的代碼,阻止你push代碼到沒有權限的遠程等等。說白了,這是一個安全工具,通過它可以讓我們的帳號和代碼更加安全。

ssh相關的細節不做過多深入,感興趣的同學可以自行了解,我們簡單說下應該怎麼配置。首先我們需要使用ssh-keygen工具來生成我們的ras秘鑰。ras是一種對稱加密算法,它的加密原理是生成一對秘鑰,一個是可以分享給別人的公鑰,一個是你自己保管的私鑰。簡單來說持有公鑰一方可以驗證私鑰的正確性,但是不可以破解私鑰加密的數據。所以我們會把公鑰上傳到各個網站,在自己的機器保留私鑰。

我們在命令行當中輸入:

ssh-keygen -t rsa -C &34;

這裡傳入的是你自己剛剛設置在git當中的郵箱,之後系統會提示你輸入密碼,之後我們查看公鑰和私鑰需要輸入密碼。這裡可以不設置,敲兩個回車即可。完成之後,我們可以輸入命令查看我們的公鑰:

cat ~/.ssh/id_rsa.pub

接著把屏幕上顯示的內容拷貝下來,填到github當中。具體的路徑是先點擊右上角自己的頭像,選擇settings,在彈出的頁面當中選擇SSH and GPG keys,再點擊右上角的New SSH key,起一個名字再把剛才複製的內容粘貼進去即可。

這樣當我們clone倉庫的時候就可以使用SSH協議代替https協議了,這樣會更加安全。

github創建倉庫

最後,我們來介紹一下在github當中創建倉庫的方法。第一種方法是創建一個空白倉庫,這個很簡單,我們可以直接在github當中操作。

點擊右上角頭像,選擇Your Repositories,之後點擊右上角的New新建即可。

在之後彈出的頁面當中我們填上項目的名稱以及簡介即可,下圖框出的三個選項前兩個可選可不選,第三個一般不選。前兩個選項如果選上會替我們生成readme以及gitignoree文件,這兩個文件的用途我們以後會說,可選可不選隨意。第三個框表示開源許可證,和我們關係不大,可以忽略。

如果說我們已經在本地開發好了內容,想要同步到github當中這時候應該怎麼辦?當然我們也可以先在github創建,再把本地的代碼拷貝進去,但顯然這樣做很low,我們還有更好的辦法。

當然我們在github創建項目是免不了的,創建好了之後,我們要做的就是把本地的文件夾和遠程的這個剛建好的倉庫關聯起來。首先,我們在本地的文件夾當中運行git init,在本地初始化一個git倉庫。

git init

下面我們要做的就是關聯本地的倉庫和遠程的倉庫,並且把本地的倉庫當中的內容push到遠程去。為了做到這一點,我們運行git remote add origin命令給本地的git倉庫增加一個遠程的源,這裡後面跟著的連結是我們剛才在github裡創建好的倉庫的地址。

git remote add origin git@github.com:moutsea/git-tutorial.git

由於這個git-tutorial是我們自己創建的,所以是沒有問題的,如果add別人的repo可能會報錯。添加完成之後我們需要拉取遠程的改動,因為我們在創建repo的時候創建了一個readme文件,這也算是一個改動,我們需要把這個改動拉下來,和遠程保持同步之後再推送更新。

記住這一點,我們在push代碼到遠程之前,一定要先通過git pull和遠程先保持同步之後再進行推送

但是我們直接git pull是不行的,會報錯,因為雖然本地和遠程關聯起來了,但是分支沒有關聯,它根本不知道該去pull哪個分支。我們需要把本地的master分支關聯遠程的master分支,但是這又迎來一個新的問題。我們本地暫時還沒有任何改動,這個master分支實際上是不存在的,所以我們需要先提交本地的文件到git倉庫。

這裡的兩個命令很常規,首先是git add .這裡的.表示添加全部變更,使用.的時候要小心,因為有時候不是所有文件都需要添加的。大家知道就好,細節我們以後再說。然後是git commit -m提交到git倉庫,由於我們配置了alias,所以可以使用ci代替commit。-m是message的意思,後面需要傳入一個字符串,表示這個改動的備註,方便以後查看。

注意這裡的commit操作並不是提交到遠程,而是提交到本地的git倉庫。terminal當中會把git添加的文件名都輸出出來,由於我用的是中文,所以出來的是亂碼,不過這沒有關係,至少我們add成功了。

之後我們用命令把本地的master和遠程的master分支關聯起來,其實也就是給本地的master分支添加一個上遊:

git branch --set-upstream-to=origin/master master

現在一切都已經就緒了,按理說我們直接git pull之後在git push就可以了。但還有一個小問題是你會遇到這麼一個報錯:fatal: refusing to merge unrelated histories.

這個報錯的意思是說不能夠將兩個沒有關係的歷史記錄合併起來,原因是我們commit到本地git倉庫的時候,本地的master還沒有和遠程的master分支取得關聯。git默認是不允許將沒有關聯的記錄進行合併的,不過這個問題也很好解決,我們只需要加上參數強制讓它允許就可以了:

git pull --allow-unrelated-histories

這樣我們就會發現它已經成功了,遠程的readme文件已經被拉取了下來。之後我們再運行git push即可。由於我們已經將本地的master和遠程的master取得了聯繫,我們只需要git push就可以了,不需要git push origin master了。

我特意為git專題創建了一個github的repo,連結如下:https://github.com/moutsea/git-tutorial

今天的文章到這裡就結束了,如果喜歡本文的話,請來一波素質三連,給我一點支持吧(關注、轉發、點讚)。


- END -


本文始發於公眾號:TechFlow,求個關注

相關焦點

  • 請把.gitattributes 加到你的 Git 倉庫中
    什麼是 .gitattributes ?當執行 git 動作時,.gitattributes 文件允許你指定由 git 使用的文件和路徑的屬性,例如:git commit 等。換句話說,每當有文件保存或者創建時,git 會根據指定的屬性來自動地保存。其中的一個屬性是 eol(end of line),用於配置文件的結尾。
  • 手把手教你如何使用Git
    如何操作:1.創建版本庫,即倉庫。可以理解為一個目錄,這個目錄裡所有的文件都被git管理和追蹤。通過命令git init可以將某個目錄變成git可以管理的倉庫。用命令 git commit告訴Git,把文件提交到倉庫。
  • 如何給你的 Git 倉庫「瘦身」
    本文中的步驟和工具使用的高級技術涉及破壞性操作。確保您在開始之前仔細讀過並備份了你的倉庫,創建一個備份最容易的方式是使用 --mirror 標誌對你的倉庫克隆,然後對整個克隆的文件進行打包壓縮。有了這個備份,如果在維護期間意外損壞了你的倉庫的關鍵元素,那麼你可以通過備份的倉庫來恢復。請記住,倉庫維護對倉庫的用戶可能會是毀滅性的。
  • git環境配置和.gitconfig配置文件詳解
    你使用git越多,你就會學習能學習到更多的git命令寶藏,比如blame, bisect,rebase、reset,reflog,submodules, hooks等等,這些工具的使用和概念介紹等,蟲蟲之前的文章中曾經做過介紹,關注蟲蟲可以看得到。在git使用和我們的gitlab群中有一個常出現的問題,讓很多初學者迷惑,那就是關於git的配置。
  • Git版本控制系統——配置本地倉庫管理
    Ⅱ 在github中創建倉庫的步驟 1.創建倉庫第一步:34;ask_yang&34;zhengyang-zhou@163.com& 個人資料配置展示git config --list第二步:git init 命令將目錄變為git可以管理的倉庫目錄
  • 一則入門小故事,手把手教你學Git
    $ yum search git $ yum install git.x86_64 $ git version git version 1.8.3.1至此,系統裡已經有了git命令,接下來他又搜索了一下初始配置方法。
  • git 倉庫遷移
    git倉庫使用的過程中,有時候會遇到伺服器的遷移,倉庫代碼不得不從A伺服器,遷移到B伺服器去,那麼怎麼遷移而不丟失log信息?能保留原先的commit記錄,應該如何遷移呢?使用git push --mirror命令,完成倉庫的完美遷移。
  • 工具| 手把手教你在VSCode中使用Git
    4、提交到遠程倉庫;git push origin master: 到git倉庫裡面;查看。已經成功提交: 猜你喜歡: 乾貨 | 嵌入式必備技能之Git的使用 乾貨 | 結構體、聯合體嵌套使用的一些實用操作 訪問 GitHub 的速度很慢?
  • Git Gui使用配置
    前面已經介紹過Git Gui的下載和安裝,下面介紹在Windows下的配置的方法:1、首先配置Git,在本地創建ssh key,複製下面的代碼,並換成自已郵箱,運行Git Bash後,粘貼過來,如圖1.1ssh-keygen -t rsa -C "換成你的郵箱地址"
  • 分布式版本控制Git之本地倉庫管理
    Git的使用分為本地倉庫管理和遠程倉庫管理兩大部分。(git)分布式版本控制特點:A、安全性高。B、效率高。git是典型的分布式,SVN是典型的集中式。二、git安裝和配置:1,名詞解釋:Git BASH :Windows的Git提供了BASH仿真,用於從命令行運行Git。
  • git學習-git配置
    Git 提供了git config 工具,專門用來存取相應的工作環境變量。Windows 上,Git 使用用戶主目錄下的 .gitconfig 文件。主目錄即 $HOME 變量指定的目錄,一般都是 C:\Documents and Settings\$USER。
  • Git 配置SSH秘鑰 For Mac
    一、背景現在使用基於Git 作為開發項目的管理工具已經非常普遍,很多與Git相關的平臺工具的基本配置和使用方法都類似,現主要總結一下Git的基本配置,教你如何從已經存在項目的Git上clone代碼到本地。
  • Git同時上傳代碼到多個遠程倉庫(Github和Gitee)
    可以參考之前的文章查看如何設置ssh key的公鑰連接,git同步遠程倉庫代碼命令。當前遠程倉庫使用的是Github和Gitee。另外需要注意的是,遠程倉庫的連接方式我使用的是ssh key,並且兩個倉庫的公鑰完全相同。git config中的email和name也使用的是local配置。
  • Git教學篇2-git日常操作之git clone與git tag
    git基礎操作1-遠程倉庫在git中存在一個倉庫的概念,表示的是一個項目的文件集合clone在安裝,配置完git後,首要的應該就是去clone遠程倉庫了,命令是git clone [url],url是每個git倉庫都會提供的。下面以我自己的github項目為例進行演示。
  • 詳細介紹下git中的多種撤銷
    前面我們介紹過主流版本控制系統git和svn的區別,參考:手把手教你入門git,下面我們再介紹下git中關於各種撤銷的操作流程。當你在git倉庫中進行一次新的提交的時,git保存這個特定時間的倉庫的快照,並生產一個唯一串與本次提交相對應。
  • 一篇文章,教你學會Git
    Workspace:工作區Index / Stage:暫存區Repository:倉庫區(或本地倉庫)Remote:遠程倉庫工作區程式設計師進行開發改動的地方,是你當前看到的,也是最新的。平常我們開發就是拷貝遠程倉庫中的一個分支,基於該分支進行開發。在開發過程中就是對工作區的操作。
  • 一張腦圖帶你徹底掌握Git
    tree clean這個時候,我們將本地的代碼推送到遠端即可常見命令 git配置命令列出當前配置git config --list 複製代碼列出Repository配置git config --local --list 複製代碼列出全局配置git config --global --list 複製代碼列出系統配置git config
  • Askgit:利用熟悉的SQL語句挖掘git倉庫的信息
    git提供了強大的功能,可以對倉庫信息和歷史一覽無餘,但是git命令的使用相對比較繁瑣,而且很多時候需要藉助其他shell工具組成棧來聯合一起完成信息查詢,這對不是很熟悉shell命令行的人是一項比較艱難的任務。那麼有什麼簡單的方法可以完成這個任務呢?
  • 調整你的 Git 配置以適應多個用戶 ID 的需要
    config 命令可以讓你為 Git 設置倉庫或全局選項。includeIf.condition.path 變量,是 include 配置指令的一部分,允許你有條件地設置自定義配置。同時,自定義配置的路徑也可以作為指令的一部分來設置。這個指令支持三個關鍵字:gitdir、gitdir/I 和 onbranch。
  • 教你如何體系化的學Git
    作為一名幹了後端的程式設計師,我來聊一聊和Git相關的經驗!學習方式看見「體系化的學習」這幾個字眼,我猜測樓主是一個有很多空閒時間的新人!GitHub和GitLab,如果我們自己有什麼開源的項目就可以上傳到GitHub上,可以給自己的履歷增色。