1. 程式人生 > 實用技巧 >github新手使用指南

github新手使用指南

常用命令:

Git 速查表(摘自 AI有道)

一、常見命令

  • git init: 初始化 git 倉庫,即將一個資料夾初始化為一個 git 倉庫。具體的操作是建立一個.git隱藏資料夾
  • git status: 檢視倉庫的狀態
  • git add <file>: 將檔案提交到暫存區
  • git commit -m <程式碼提交資訊>: 將暫存區的檔案提交到倉庫中,並附帶說明資訊
  • git log: 檢視所有產生的 commit 記錄
  • git config -l: 檢視自己的配置,預設配置都在.git/config檔案中

1.2 分支相關的命令

  • git branch <branch_name>
    : 如果不加上<branch_name>,檢視當前分支情況。如果加上,就是建立一個分支。
  • git checkout <branch_name>: 切換到<branch_name>的分支上
  • git checkout -b <branch_name>: 建立一個分支並切換到這個分支上,效果相當於合併上面 2 個命令。
  • git merge <branch_name>: 將<branch_name>分支合併到當前所在的分支上
  • git branch -d <branch_name>: 將<branch_name>
    分支刪除
  • git branch -D <branch_name>: 將<branch_name>分支強制刪除。如果<branch_name>分支存在未合併的程式碼時,那麼用-d是刪除不了。

1.3 標籤相關的命令

  • git tag: 檢視歷史 tag 記錄。
  • git tag <tag_name> <commit_id>: 在指定提交 id 上建立一個 tag。如果不寫<commit_id>,那就在最新的 commit 上建立一個 tag。
  • git checkout <tag_name>: 切換到<tag_name>
    標籤
  • git show <tag_name>: 檢視標籤資訊
  • git tad -d <tag_name>: 刪除標籤
  • git push origin <tag_name>: 將某個標籤推送到遠端倉庫
  • git push origin :refs/tags/<tag_name>: 可以刪除一個遠端標籤。

1.4 SSH

提前申明, windows 系統並不自帶 SSH, 但是安裝的 Git 中帶有 SSH。所以以下命令請在 Git bash 下執行。

  • ssh-keygen -t rsa: 指定 rsa 演算法生成金鑰。
  • ssh -T [email protected]: 測試 ssh 是否成功新增到 github 中

1.5 Github 操作

  • git clone ...: 將 github 專案複製到本地的當前目錄
  • git push origin <本地分支>:<遠端分支>: 把本地分支中原生代碼同步到遠端分支
  • git pull orgin <branch_name>: 把遠端 <branch_name> 分支的最新的程式碼同步到本地當前分支中
  • get remote add origin [email protected]:xxx/xxxx.git: 將當前本地倉庫與遠端進行聯接
  • git remote -v: 檢視我們當前專案有哪些遠端倉庫

1.6 補充命令

  • alias別名

    • git config --global alias.<別名> "<原命令>"。比如git config --global alias.c "checkout",之後git c==git checkout
  • diff

    • git diff: 比較工作區檔案和暫存區檔案差異。如果加上檔名,就僅比較這個檔案在工作區與暫存區的區別
    • git diff <commit_id1> <commit_id2>: 比較兩次提交之間的差異
  • checkout

    • 作用 1 :切換分支、標籤以及 commit。本質是「用某個 HEAD 中的最新內容替換掉你的工作區中的檔案」。切換時,暫存區的內容不受影響但相當於在切換前執行了git stash
    • 作用 2 :撤銷還沒進入暫存區的修改的作用。舉個例子,假設我們在一個分支開發一個小功能,剛寫完一半,這時候需求變了,而且是大變化,之前寫的程式碼完全用不了了,好在你剛寫,甚至都沒有 git add 進暫存區,這個時候很簡單的一個操作就直接把原檔案還原:git checkout a.md,本質上是將 HEAD 內容覆蓋掉工作區的內容。注意,checkout 命令只能撤銷還沒有 add 進暫存區的檔案。
  • stash

    • 作用:把當前分支中的工作區的所有修改先暫存到棧上。
    • 運用場景:假設我們正在一個新的分支做新的功能,這個時候突然有一個緊急的bug需要修復,而且修復完之後需要立即釋出。當然你說我先把剛寫的一點程式碼進行提交不就行了麼?這樣理論上當然是ok的,但是這會產品垃圾commit,原則上我們每次的commit都要有實際的意義,你的程式碼只是剛寫了一半,還沒有什麼實際的意義是不建議就這樣commit的,那麼就用git stash保留。
    • git stash: 把當前分支所有沒有 commit 的程式碼先暫存起來
    • git stash list: 檢視所有 stash 記錄
    • git stash apply: 將暫存的程式碼還原
    • git stash drop: 把最近一條 stash 記錄刪除。注意:每次還原始碼後,最好刪除這條 stash 記錄
    • git stash pop==git stash apply+git stash drop
    • 注意:執行了git add的資料在切換分支時,會自動暫存一起。本質上是因為切換分支不影響暫存區的資料。但需要手動恢復。

二、常用概念

2.1 工作區、暫存區與 HEAD

  • 工作區就是你還沒有執行git add的檔案,它持有實際檔案;
  • 暫存區就是你執行了git add但沒執行git commit的檔案,它像個快取區域,臨時儲存你的改動;
  • HEAD 就是你執行完git commit,它指向你最後一次提交的結果並且清空暫存區。
工作區、暫存區與 HEAD 參考:http://rogerdudler.github.io/git-guide/index.zh.html

在實際中,工作區有一個隱藏目錄.git,它不屬於工作區,而是 Git 的版本庫。Git 的版本庫裡存了很多東西,其中最重要的就是稱為 stage(或者叫 index )的暫存區,還有 Git 為我們自動建立的第一個分支
master ,以及指向master的一個指標叫 HEAD。

實際目錄中,三種狀態的聯絡 參考:https://www.liaoxuefeng.com

與此同時,History 儲存著所有分支資訊,HEAD 指標指向當前分支。

三種狀態的聯絡(更詳細版)[3] 三種狀態之間的轉換及其命令 [3]

上述命令有待驗證。

2.2 分支 branch

stormzhang 從0開始學習 GitHub 系列之「團隊合作利器 Branch」

2.3 標籤 tag

本質:標籤作用於提交上,可以看成是某個提交的別稱。

運用:主要用於標記軟體的版本號。

2.4 SSH

簡單點說,SSH是一種網路協議,用於計算機之間的加密登入。目前是每一臺 Linux 電腦的標準配置。而大多數 Git 伺服器都會選擇使用 SSH 公鑰來進行授權,所以想要在 GitHub 提交程式碼的第一步就是要先新增 SSH key 配置。

命令生成的金鑰會存放在兩個檔案id_rsaid_rsa.pub,而id_rsa是私鑰,id_rsa.pub就是公鑰。這兩檔案預設分別在如下目錄裡生成:

Linux/Mac 系統 在~/.ssh下,win系統在/c/Documents and Settings/<username>/.ssh下,都是隱藏檔案,相信你有辦法檢視的。

接下來要做的是把id_rsa.pub的內容新增到 GitHub 上,這樣你本地的id_rsa私鑰跟 GitHub 上的id_rsa.pub公鑰進行配對,授權成功才可以提交程式碼。

2.5 Github 操作

Push

如果你原生代碼有更新,那麼就需要把原生代碼推到遠端倉庫,這樣本地倉庫跟遠端倉庫就可以保持同步了。

Pull

如果遠端倉庫有更新,那麼需要把遠端倉庫的最新程式碼更新到本地,然後保證兩端程式碼的同步。一般我們在 push 之前都會先 pull ,這樣不容易衝突。

先有遠端倉庫,後有本地倉庫:Clone

使用git clone命令,將遠端倉庫複製到本地中。然後,修改本地倉庫並進行git commit。然後,git pull orgin <遠端分支>建立本地倉庫和遠端倉庫之間聯絡以及保持同步。最後,git push origin <本地分支>:<遠端分支>將本地倉庫的修改提交到遠端倉庫中

通過git clone命令複製的倉庫,不需要使用git init初始化,同時也不需要宣告與遠端倉庫關聯(因為已經聲明瞭)。

先有本地倉庫,後有遠端倉庫:關聯本地已有專案

如果我們本地已經有一個完整的 git 倉庫,並且已經進行了很多次 commit ,我們想將本地倉庫提交到 github 上。

假設本地倉庫 test2,要提交到 github test 專案中,一般步驟是:

  1. 在 github 建立 test 專案
  2. 在 test2 目錄中輸入git remote add origin [email protected]:xxxx/test.git將本地 test2 專案與 github 的 test 專案關聯起來
  3. git push origin master

合併操作:merge & rebase

git merge branch_agit rebase branch_a的效果是一樣,都是將branch_a分支合併到當前的分支中。但兩者合併方式不同:rebase 跟 merge 的區別你們可以理解成有兩個書架,你需要把兩個書架的書整理到一起去,

  • 第一種做法是 merge ,比較粗魯暴力,就直接騰出一塊地方把另一個書架的書全部放進去,雖然暴力,但是這種做法你可以知道哪些書是來自另一個書架的;
  • 第二種做法就是 rebase ,他會把兩個書架的書先進行比較,按照購書的時間來給他重新排序,然後重新放置好,這樣做的好處就是合併之後的書架看起來很有邏輯,但是你很難清晰的知道哪些書來自哪個書架。

合併衝突

如果兩個分支 a,b 同時修改了同一個位置時,合併到 master 時就會報衝突。不管兩個分支合併的先後順序、中間是否還合併了其他的分支(即任何情況下),都會報衝突。發生衝突的地方,Git 會在發生衝突的位置使用 <<<<< 、======、>>>>> 標記出不同分支的內容。如

<<<<<<< HEAD  # HEAD 內容
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1 # feature1 分支的內容

此時,你需要手動地進行正確的合併後,再git add .git commit就可以了。

2.6 Git 與 SVN 對比

Git 與 SVN 對比

Git 屬於分散式版本控制系統,而 SVN 屬於集中式。集中式版本控制只有中心伺服器擁有一份程式碼,而分散式版本控制每個人的電腦上就有一份完整的程式碼。

參考:

  1. stormzhang 從 0 開始學習 GitHub 系列
  2. git - 簡明指南
  3. CS-Notes Github




連結:https://www.jianshu.com/p/3a437dbc6f2a
來源:簡書

2018-06-14 15:25:26 文章標籤:github

https://blog.csdn.net/Hanani_Jia/article/details/77950594源部落格地址

首先,我先對GitHub來一個簡單的介紹,GitHub有一個很強大的功能就是,你在伺服器上邊可以建立一個庫(稍後會介紹怎麼建立),寫程式碼是一件很重的任務,尤其是很多人完成一個很大的專案的時候,就十分的複雜,一群人一起來寫某個專案,大家完成的時間,完成的進度都是不相同的,你寫一點我寫一點,甚至可能你今天寫的出現了錯誤,影響到了我昨天寫的程式碼,最後怎麼才能將大家的程式碼輕鬆的彙總起來,又怎麼在彙總所有人的程式碼之後發現錯誤等等一系列問題。這樣我們就用到了GitHub這個軟體。我們在GitHub伺服器上有一個主倉庫,這裡用來儲存你的所有程式碼,如果不付費的話是所有人都可以看的,如果你不想讓別人看到你的程式碼,可以選擇付費倉庫。我們建立了主倉庫之後,就可以在電腦上建立分支,之後你就可以在電腦上完成自己的程式碼,寫完之後直接同步在電腦的分支,當你認為可以上傳的自己的主倉庫時,就可以申請更新,當通過稽核的時候,你程式碼就出現在了自己的主倉庫中,這樣全世界的程式設計師都可以檢視你的程式碼。全世界現在已經有300萬的註冊使用者,甚至還有一些相當知名的開源專案也在其中公佈程式碼。在GitHub上你可以看到很多計算機領域的精英所分享的自己的程式碼。這是GitHub的兩個主要優點,適合團隊協作,以及下載其他優秀者的程式碼。

今天,GitHub已是:一個擁有143萬開發者的社群。其中不乏Linux發明者Torvalds這樣的頂級黑客,以及Rails創始人DHH這樣的年輕極客。

·這個星球上最流行的開源託管服務。目前已託管431萬git專案,不僅越來越多知名開源專案遷入GitHub,比如Ruby on Rails、jQuery、Ruby、Erlang/OTP;近三年流行的開源庫往往在GitHub首發,例如:BootStrapNode.jsCoffeScript等。alexa全球排名414的網站。

https://github.com/這是GitHub的官方網站,在官網上可以註冊屬於自己的GitHub賬號,網上是全英文的,對於英語不好的同學建議使用谷歌瀏覽器,谷歌瀏覽器可以翻譯網頁變為中文使用起來十分方便。

通過簡單的步驟之後你就會有一個屬於自己的GitHub賬號。再簡單註冊完成之後會需要驗證你所輸入的郵箱才能正常使用你的GitHub。

在註冊完成之後,完成一些簡單的設定之後,你需要建立一個屬於自己的庫

在登陸自己的GitHub賬號之後,在網頁右上角的小加號是用來建立自己的庫的按鈕,之後的步驟將網頁翻譯成中文之後,按提示進行建立自己的庫即可。

第一個框是自己為自己的庫起一個名字,第二個框是自己對庫的一個簡單介紹

在建立完成自己的庫之後,下面就要讓自己的電腦克隆一個自己所建立的庫,方面自己電腦上的程式碼同步到GitHub你所建立的庫當中。

為了實現,就需要安裝一個軟體,Git Bash。

下面我就介紹一下這個軟體的安裝,以及簡單的配置。

git-scm.com首先進入GitHub官網,下載適合自己電腦的版本

下載完安裝包之後執行

在安裝過程中直接預設選項即可。

在對git bash進行配置的時候大多數新手都是一頭霧水,下面我對配置的每一步就會有詳細的記錄。程式碼我也是從網上和學長那邊要來的。

我第一次開啟軟體後看到這個介面也是一臉懵逼的,然後通過查閱了各種各樣的資料之後才有了一些思路。

首先要在本地建立一個ssh key這個的目的就是你現在需要在你電腦上獲得一個密匙,就是咱們平時的驗證碼一樣的東西,獲取之後,在你的GitHub賬號裡邊輸入之後,你的電腦就和你的GitHub賬號聯絡在一起了,這樣以後就可以十分方便的通過Git bash 隨時上傳你的程式碼。下邊介紹一下如果獲得這個鑰匙,又是如何輸入到你的GitHub裡邊的呢。

很多人第一次開啟這個GitHub的時候一臉懵逼,認為這是什麼。對於一個新手來說看到這個是沒有任何思路,沒有任何想法的。

這一欄開始是你的計算機的名字在我這裡就是Hanani @後邊的內容是你的計算機型號,很多時候有的人開啟之後@後邊是亂碼,這個時候也不要在意,因為有些電腦型號是中文的,可能在顯示的時候出現了問題,不影響你後期的操作。

接下來,就要開始獲取屬於你自己的密匙。在git bash中所有功能都是通過簡單的一些程式碼來實現的。獲取密匙的時候需要輸入

$ ssh-keygen-t rsa-C"[email protected]"

需要輸入這個程式碼,引號內需要改成你在註冊GitHub的時候繫結的郵箱賬號。之後會有一些簡單的讓你確認的操作,之後讓你會提示操作路徑、密碼等等,一般情況下就直接按回車一路過就可以。

如果之後你出現了這個介面之後,就說明你的密匙已經成功建立了。現在你就需要去他剛剛顯示的儲存位置開啟它,把其中的內容複製出來。

在.ssh這個資料夾中

之後你會看到這些內容,有的人會在id_rsa後邊帶有一個pub,之前看網上教程需要找到帶pub的檔案,因為我在生成後沒有帶.pub的檔案,懷著忐忑的心開啟id_rsa後發現這裡邊的密匙也是可以使用的。開啟id_rsa的時候需要用記事本的方式開啟。

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDIskXqZF3SSFtACK6zoNGJabikTBC3kig6+4j4dCq1tswhA9YkuJCi0WpRmGYWBQ67dyT2or7RedFZlULLZN3nL6AWlo5V2jRXw4WQxCon2rU1p122wmiTzqYOfsykjwullWV4bYcZU4n77A4/9WwlSqZCpEbcdwV8IMkvwfJUInSWqTvmYMcKTWu8yad5DZ2v7LBWfgsL/Tfx7aEB8UjDNJ6SPw30Yijy+62YrftYGgbuwoiL9hDNGO2LfjgOkglHTBJaZe31uQLLWc5uCzd+7Dgh7RaKMmeuz2Uv7yqm/IEU9jH8cPMR9YRPIhmzg38G2s9ILn27QqW9j1hrFY1V [email protected]

這就是我所獲取的密匙,開啟之後很長的一段,不要驚訝,沒有問題,這就是你所需要的密匙。

現在你就需要登入到你的GitHub上邊新增這個密匙,

開啟你GitHub的設定介面,找到SSH and GPG keys這個選項之後,在網頁右上角有一個新增新的SSH keys 點選

這裡的title 是讓你給你的密匙起一個名字,根據個人喜好,什麼名字都可以,然後把你在剛剛檔案中複製的密匙,填寫在下邊的大框裡。儲存即可。

之後你就可以回到你的Git bash上邊了

然後輸入上邊的程式碼,來檢查是否成功繫結。第一次繫結的時候輸入上邊的程式碼之後會提示是否continue,在輸入yes後如果出現了:You've successfully authenticated, but GitHub does not provide shell access 。那就說明,已經成功連上了GitHub。接下來還需要簡單的設定一些東西。

輸入上邊的程式碼,name最好和GitHub上邊的一樣,email是一定要是註冊GitHub的那個郵箱地址

這兩個的順序可以顛倒,沒有固定的順序。

下面就要將你的庫克隆下來到本地電腦中,方便以後進行上傳程式碼。

在庫建立完成之後會有一個網址出現在網頁中。

個人習慣將自己的檔案儲存在d盤之中,所以你先需要將git bash定位在d盤中

在git bash中輸入 cd /D 注意盤名字一定要是大寫。如不輸入這個語句 不給git bash定位的話,預設的本地檔案位置是在c盤中。

輸入之後會出現/D說明定位成功。

之後輸入

git clone後邊的網址就是你建立庫成功之後的網址

之後開啟我所定位的D盤

可以看到,D盤中已經有以我的庫名所建立的檔案夾了。

開啟這個資料夾,然後在其中建立一個任意格式,任意名稱的檔案。

之後重新定位git 把書 的位置,定位在你庫的資料夾。

之後輸入ls語句 ls的作用是檢視你目前所定位的資料夾中的檔案,現在可以看出來,我剛剛所建立的test檔案已經出現了。

然後輸入git add test.txt

之後輸入然後git commit -m "cc" 引號內的內容可以隨意改動,這個語句的意思是 給你剛剛上傳的檔案一個備註,方便查詢記憶而已

輸入之後出現以上情況,然後在輸入git push origin master 之後會出現一個

介面,在這裡登陸你之前註冊的GitHub賬號之後點選login。

如果之後出現這種情況的話,就是登陸失敗了,這時候你就需要輸入你GitHub的賬號名稱

輸入之後會出現這個介面,然後再次輸入你的GitHub密碼。

出現類似介面,你就可以歡呼了,代表你成功了。

現在開啟你的GitHub網站,找到你建立的庫

發現今天的格子已經綠了,說明你已經上傳了你剛剛所建立的檔案。

再之後,你只需要將你的程式碼,放到庫的對應的資料夾中,然後使用 先CD到你庫裡面,再git add 、git commit -m " " 、最後gitpushoriginmaster,將你的程式碼提交就可以了。

同樣我感覺網頁版的github更適合新手小白,https://blog.csdn.net/hanani_jia/article/details/79855429 這是我寫的一篇網頁版github的簡單操作,需要的可以看一下。