Git和Github簡單教程(git簡明教程)

      網友投稿 880 2022-05-30

      轉載自:Git和Github簡單教程

      網絡上關于Git和GitHub的教程不少,但是這些教程有的命令太少不夠用,有的命令太多,使得初期學習的時候需要額外花不少時間在一些當前用不到的命令上。

      這篇文章主要的目標是用較少的時間學習Git和GitHub的基本使用。在足夠一般使用的前提下,盡量減少命令。

      如果需要其他命令,到時候再去其他地方了解就行了。

      目錄:

      零、Git是什么

      一、Git的主要功能:版本控制

      二、概覽

      三、Git for Windows軟件安裝

      四、本地Git的使用

      五、Github與Git的關聯

      六、團隊合作開發

      七、Github的其他介紹

      八、一些可能碰到的問題

      零、Git是什么

      我才不告訴你嘞

      一、Git的主要功能:版本控制

      版本:

      想想你平時用的軟件,在軟件升級之后,你用的就是新版本的軟件。你應該見過這樣的版本號:v2.0 或者 1511(表示發布時為15年11月),如下圖:

      那么如果你修改并保存了一個文件,從版本管理的角度來說,你得到的是這個文件的新版本。

      可是很多情況下,這種修改是不可逆的。你修改完之后,無法回到你修改前的樣子。為了避免這種情況,有的人會把新版本的內容保存到一個新的文件里面。

      比如在一個名為“畢業論文”的文件夾內,他有以下文件:

      就在這時,他女朋友發了一份畢業論文_完成2.doc,這是女朋友幫他改的一篇論文。可是已經經過那么多的修改,又不知道對方改了哪些,怎么合并呢?看來只好開始了繁重的對照以及修改的工作……

      更加實際的例子是程序員寫程序的時候:

      這時候你需要一款軟件幫你管理版本,它就是Git。

      控制:

      你可以用Git來對這些不同的版本進行控制。還可以很方便地查看兩個不同版本之間的不同之處。

      ——使用Git,你只保存最新的一份文件就可以了。

      ——那我以前的文件怎么辦?

      ——可以用Git幫你把文件回退到你想要的版本。

      ——如果回去了,那我的最新版本呢?

      ——還可以還原。

      二、概覽

      所有命令前都要加 git,如表中的init是指 git init。

      點擊命令可直接跳轉至本文第一次使用的地方。

      以下命令都在命令行里執行。

      1.個人本地使用

      行為

      命令

      備注

      初始化

      init

      在本地的當前目錄里初始化git倉庫

      clone 地址

      從網絡上某個地址拷貝倉庫(repository)到本地

      查看當前狀態

      status

      查看當前倉庫的狀態。碰到問題不知道怎么辦的時候,可以通過看它給出的提示來解決問題

      查看不同

      diff

      查看當前狀態和最新的commit之間不同的地方

      diff 版本號1 版本號2

      查看兩個指定的版本之間不同的地方。這里的版本號指的是commit的hash值

      添加文件

      add -A

      這算是相當通用的了。在commit之前要先add

      撤回stage的東西

      checkout -- .

      這里用小數點表示撤回所有修改,在--的前后都有空格

      提交

      commit -m "提交信息"

      提交信息最好能體現更改了什么

      刪除未tracked

      clean -xf

      刪除當前目錄下所有沒有track過的文件。不管它是否是.gitignore文件里面指定的文件夾和文件

      查看提交記錄

      log

      查看當前版本及之前的commit記錄

      reflog

      HEAD的變更記錄

      版本回退

      reset --hard 版本號

      回退到指定版本號的版本,該版本之后的修改都被刪除。同時也是通過這個命令回到最新版本。需要reflog配合

      2.個人使用遠程倉庫

      行為

      命令

      備注

      設置用戶名

      config --global user.name "你的用戶名"

      設置郵箱

      config --global user.email "你的郵箱"

      生成ssh key

      ssh-keygen -t rsa -C "你的郵箱"

      這條命令前面不用加git

      添加遠程倉庫

      remote add origin 你復制的地址

      設置origin

      上傳并指定默認

      push -u origin master

      指定origin為默認主機,以后push默認上傳到origin上

      提交到遠程倉庫

      push

      將當前分支增加的commit提交到遠程倉庫

      從遠程倉庫同步

      pull

      在本地版本低于遠程倉庫版本的時候,獲取遠程倉庫的commit

      可以用一張圖直觀地看出以上主要的命令對倉庫的影響。

      圖片引用自:Git introduction for CVS/SVN/TFS users

      圖片引用自:工作區和暫存區 - 廖雪峰的官方網站 (做了點修改)

      對照查看兩張圖: workspace 即工作區,邏輯上是本地計算機,還沒添加到repository的狀態; staging 即版本庫中的stage,是暫存區。修改已經添加進repository,但還沒有作為commit提交,類似于緩存;

      Local repository 即版本庫中master那個地方。到這一步才算是成功生成一個新版本; Remote repository 則是遠程倉庫。用來將本地倉庫上傳到網絡,可以用于備份、共享、合作。本文將使用Github作為遠程倉庫的例子。

      三、Git for Windows軟件安裝

      Git for Windows(又msysgit)

      安裝包可以到官方網站[1]下載,或者在github[2]下載。如果下載不下來,可以把鏈接復制下來用迅雷下載。如果用迅雷下載不放心,在下載完后去在github下載的那個地方查看SHA-256值,并和下載的文件對比,如果值一樣就可以放心使用。

      安裝的時候一路點擊Next就行了。

      Git for Windows從2.8.0版本[3]開始,默認添加環境變量,所以環境變量部分就不用再手動配置了。(這句可以無視)

      剛安裝完打開后,窗口比較小。如果不太習慣,可以把它改大一些。

      首先移到窗口右下角邊緣,出現箭頭后把窗口拉大。

      點擊窗口頂部左邊的圖標 -> Options... -> Window -> Current size -> OK

      這樣以后打開窗口都會是調整后的大小。

      四、本地Git的使用

      這里先不引入Github,而是在本地計算機上的操作。

      打開命令行(cmd)或者在想要創建repository的地方右鍵鼠標并點擊 Git Bash Here 打開窗口。

      1.新的倉庫-》初始化

      運行 git init 來初始化倉庫,如下圖:

      它會創建一個隱藏的文件夾 .git 這里不去管它是用來干嘛的。關閉windows的顯示隱藏的項目吧。

      2.文件的添加和提交

      我在這個文件夾里面創建了一個 today.txt 的文件。并且不要臉地祝自己兒童節快樂:

      這時我使用 git status 來查看有什么變化:

      它告訴我有一個還未追蹤的文件,并提示我可以使用 git add ... 把它加進去。

      但是我并不打算把所有命令都介紹一遍,所以我選擇使用上面概覽時所提到的 git add -A 命令。

      嗯,什么提示都沒有。沒關系,我們再次使用 git status :

      狀態變了!說明add成功。再看看它的提示 Changes to be committed ,也就是說現在可以執行commit了。下面一行則告訴你如何將文件從stage里移出,這里不管。

      執行 git commit -m "提交信息" 將文件提交到repository里。提交信息用英文的雙引號括起來。

      這時運行 git log 就可以看到提交的記錄了:

      這樣第一步就完成了。

      也許你會奇怪:為什么要有一個add,直接commit不就行了?這是因為stage有很多用處,具體可以去查找相關資料。這里就算不了解問題也不大。

      3.文件的修改

      接著我修改文件內容。改成祝大家兒童節快樂好了 (~ ̄▽ ̄)~

      我們用 git status 看看有什么變化:

      這和之前的提示不一樣了。之前是這個:

      比較一下就會看到,之前的是添加新文件,當時文件還沒被追蹤(untracked),而這次是更改已經追蹤(tracked)的文件。

      現在我們通過git看看文件做了哪些變化,執行 git diff :

      它默認跟最新的一個commit進行比較。

      紅色(前面有減號-)表示刪除,綠色(前面有加號+)表示添加。

      因此,在git看來,我們是刪除了原來那一行,并添加了新的兩行。這在文件內容特別多的時候效果比較明顯。

      這個命令在以下情況可以使用: 你忘記改了什么,又想知道 別人發給你新版本,你想知道更改了什么

      假如我現在想撤銷這些更改,執行 git checkout -- . 就行了:

      恩,仍然沒有任何提示。執行 git status 看看:

      上一個status的提示已經不見咯。再來看看文件:

      果然復原了!那么再次進行修改:

      接著:

      git add -A

      git commit -m "將[自己]改為[米娜桑]"

      用 git log 看看提交(commit)記錄:

      嗯。現在有兩個提交了。

      4.版本回退!

      如果我寫的是一篇很長的文章,并且在之前的版本基礎上修改了一部分內容,生成一個新的commit,現在我發現我在修改的時候刪掉了一部分內容,而這部分內容是我現在需要用到的,怎么辦?版本回退!

      還是以剛才的文件為例,現在我試著將文件回退到第一個commit時的狀態。但在這之前,我們看看這個文件夾里面的東西:

      .git 文件夾因為本來就是隱藏的,我在關了 顯示隱藏的項目 的選項后,它就不顯示了。

      現在看到的是只有一個文件,而且是最新的一個版本。

      文件的修改日期為 2016 21:52

      從剛才的 git log :

      我們看到兩行黃色部分是以 commit 開頭的,后面接著一串字符。這一串字符是16進制的數,是一串哈希值。我們叫它版本號就行了。

      開始回退,執行 git reset --hard 1df0573 (取版本號前7位就可以了):

      這里提示HEAD已經更改指向至1df0573了。此時文件:

      其內容:

      已經回到我的第一個版本的狀態。

      這里文件的修改日期被更改為我現在的時間 2016 19:29

      這是由于文件的修改日期是由windows修改的,因為它檢測到這個文件被修改了。而我們剛才從最新版本回退到現在這個版本,就像是我們手動修改了文件內容一樣,事實上是由git來完成的。

      其實可以不管上面這一段

      現在再執行 git log :

      新版本的commit記錄不見了!這就是 reset --hard 的力量,很好很強硬!

      現在已經看到了之前版本的內容,那么如何回到最新版呢?

      先執行 git reflog :

      可以看到HEAD的變化情況。

      第一行表示當前HEAD所在的版本號是 1df0573 ,而之所以在這個版本號,是由于我們執行了reset命令。

      看第二行,它告訴我們,這個HEAD所在的版本號是 ad93b89 ,這個版本號是在執行commit之后形成的。

      此時我再用一次reset,將HEAD指向 ad93b89 , 同時查看log :

      git?reset?--hard?ad93b89git?log

      回到第一次reset前的狀態了!

      5.清除未追蹤的文件

      通常在reset或者pull(后面會講)之前要做兩件事:

      將新添加且為追蹤的文件刪除掉(比如編譯程序后所產生的文件) 已追蹤的文件已有修改,但又不需要這些修改,則將它們還原

      還原已做修改的tracked文件,上面已經講過。

      現在看看如何用命令刪除新加的文件。

      首先我手動創建個文件,用來演示:

      用checkout是沒辦法刪除掉它的,使用 git clean -xf :

      這個命令的殺傷力比較大,它刪除當前目錄下所有沒有track過的文件。不管它是否是.gitignore文件里面指定的文件夾和文件。當然,也有殺傷力比較小的,但這里就不介紹了。

      五、Github與Git的關聯

      上面的操作都是在本地計算機上產生影響的,一般也夠用了。

      如果你是程序員,想和其他人分享你的代碼,或者合作開發,可以用Github。

      1)本地Git和Github的連接

      到Github[4]注冊賬號。

      本地配置用戶名和郵箱(如果已經設置好,跳過該步):

      git config --global user.name "你的用戶名"

      git config --global user.email "你的郵箱"

      如圖所示:

      或者你直接在config文件里改,位置在 C:\Users\你的用戶名\.gitconfig 。如下圖所示,添加相應信息:

      生成ssh key

      運行 ssh-keygen -t rsa -C "你的郵箱" ,它會有三次等待你輸入,直接回車即可。

      將生成的ssh key復制到剪貼板,執行 clip < ~/.ssh/id_rsa.pub (或者到上圖提示的路徑里去打開文件并復制):

      打開Github,進入Settings:

      點擊左邊的 SSH and GPG keys ,將ssh key粘貼到右邊的Key里面。Title隨便命名即可。

      點擊下面的 Add SSH key 就添加成功了。

      測試一下吧,執行 ssh -T git@github.com :

      嗯,這樣就成功了!

      2)創建遠程倉庫并與本地關聯

      創建遠程倉庫

      首先是在右上角點擊進入創建界面:

      接著輸入遠程倉庫名:

      點擊 Create repository 就創建好了。其他選項可以暫時不管。

      將遠程倉庫和本地倉庫關聯起來

      先到Github上復制遠程倉庫的SSH地址:

      有兩種方式可以關聯,一種是SSH,一種是HTTPS。由于HTTPS比較慢,所以推薦使用SSH。

      注意SSH的地址格式是這樣開頭的: git@github.com

      運行 git remote add origin 你復制的地址 :

      執行 git push -u origin master 將本地倉庫上傳至Github的倉庫并進行關聯:

      以上關聯已經完成!

      以后想在commit后同步到Github上,只要直接執行 git push 就行啦:

      可以在Github上看到修改:

      六、團隊合作開發

      上文的目錄:

      零、前期準備

      Git和Github簡單教程(git簡明教程)

      一、創建開發分支

      二、Fork項目到個人的倉庫

      三、Clone項目到本地

      四、和團隊項目保持同步

      五、push修改到自己的項目上

      六、請求合并到團隊項目上

      七、團隊項目負責人審核及同意合并請求

      其中 零、一、七 是由團隊項目負責人來完成的。

      七、Github的其他介紹

      1)獲取其他人的遠程倉庫

      看到別人的代碼,想要獲取到本地計算機慢慢研究或者修改,可以用Git將其下載下來。

      以我和一位同學合作的倉庫為例,鏈接:schaepher/blogsbackup

      這是我們用來備份博客園博客的一個小程序,主要用于助教備份學生的博客。

      復制別人遠程倉庫的SSH。方法和上面關聯git一樣,進入倉庫頁面后,就能找到SSH地址。

      執行 git clone 復制的SSH地址

      整個項目42M,花了點時間才clone下來。

      有一點要注意:這樣直接clone別人的倉庫后,不能push上自己的修改。

      2)另一種關聯遠程空倉庫的方法

      在知道了clone之后,你就可以更簡單的創建并關聯一個空倉庫了。

      1. 在Github上創建倉庫,上面有提到,這里不多講 2. 復制剛才創建的倉庫的SSH 3. clone到本地

      這樣可以不用再做關聯了。省去了上面的 init 和 git remote add origin 以及 git push -u origin master 。

      3)使用GitHub的好處

      全球最大的同♂***友網站(逃

      (嚴肅臉)很多牛逼程序員和牛逼公司的開源項目都放在這上面,有豐富的資源可以學習

      別人(如HR)可以通過你的Github大致了解你的水平。《怎樣花兩年時間去面試一個人》 這篇文章的后面部分講到了Github

      八、一些可能碰到的問題

      這篇文章基本只介紹主線操作,而在操作過程中,可能有誤操作或者其他問題。我把這些問題集中放在另一篇博客里面(這里列出目錄)。這樣這篇文章不會顯得太長。

      一、 解決merge時出現的沖突

      二、 回退一個merge

      三、 獲取某一commit的修改

      四、 將低版本push到Github(刪掉高版本Commit)

      軟件開發 軟件開發

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:「視頻直播技術詳解」系列之四:推流和傳輸(視頻直播推流原理)
      下一篇:組織變革的七大誤區(組織變革的看法)
      相關文章
      亚洲欧洲日产国码久在线观看| 亚洲人成影院在线无码观看| 亚洲一卡二卡三卡四卡无卡麻豆| 亚洲AV无码成人精品区日韩| 亚洲欧洲日产国码无码网站 | 亚洲毛片在线观看| 亚洲精品第一国产综合境外资源| 亚洲国产夜色在线观看| 久久亚洲色一区二区三区| 日韩亚洲国产高清免费视频| 亚洲av无码一区二区三区网站| 亚洲成a人片在线观看天堂无码 | 国产精品亚洲一区二区麻豆| 亚洲综合久久一本伊伊区| 亚洲s色大片在线观看| 亚洲精品无码久久千人斩| 国产亚洲A∨片在线观看| 亚洲av永久无码精品秋霞电影影院| 亚洲精品无码久久千人斩| 亚洲精品一品区二品区三品区| 亚洲色成人网站WWW永久| 亚洲不卡AV影片在线播放| 久久亚洲精品专区蓝色区| 日韩亚洲不卡在线视频中文字幕在线观看 | 久久亚洲国产成人亚| 亚洲精品国产高清嫩草影院| 亚洲欧洲一区二区三区| 亚洲自偷自偷偷色无码中文| 久久亚洲精品视频| 国产亚洲精品成人AA片新蒲金| 无码天堂亚洲国产AV| 亚洲中文无码永久免费| 亚洲乱码一二三四区国产| 亚洲13又紧又嫩又水多| 亚洲丶国产丶欧美一区二区三区| 国产亚洲情侣久久精品| 亚洲中文字幕无码久久2017| 亚洲av日韩av高潮潮喷无码| 亚洲最大在线观看| 亚洲高清日韩精品第一区| 久久久久亚洲精品影视|