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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Git和Github简单教程

發(fā)布時間:2025/3/20 编程问答 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Git和Github简单教程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

網(wǎng)絡(luò)上關(guān)于Git和GitHub的教程不少,但是這些教程有的命令太少不夠用,有的命令太多,使得初期學(xué)習(xí)的時候需要額外花不少時間在一些當(dāng)前用不到的命令上。
這篇文章主要的目標是用較少的時間學(xué)習(xí)Git和GitHub的基本使用。在足夠一般使用的前提下,盡量減少命令。
如果需要其他命令,到時候再去其他地方了解就行了。


目錄:

  • 零、Git是什么
  • 一、Git的主要功能:版本控制
  • 二、概覽
  • 三、Git for Windows軟件安裝
  • 四、本地Git的使用
  • 五、Github與Git的關(guān)聯(lián)
  • 六、團隊合作開發(fā)
  • 七、Github的其他介紹
  • 八、一些可能碰到的問題

零、Git是什么

我才不告訴你嘞


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

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

    那么如果你修改并保存了一個文件,從版本管理的角度來說,你得到的是這個文件的新版本。
    可是很多情況下,這種修改是不可逆的。你修改完之后,無法回到你修改前的樣子。為了避免這種情況,有的人會把新版本的內(nèi)容保存到一個新的文件里面。
    由于 Git 更多地用于代碼管理,舉個程序員的例子。比如以下是計算機專業(yè)學(xué)生的作業(yè):

    這樣存儲多個文件夾,可能會造成混亂。你可能想保存以前寫的代碼,因為它們可能在以后會用到。但是更多的時候是,你不知道各個文件夾都做了什么修改。
    這時候你需要一款軟件幫你管理版本,它就是Git。
  • 控制:
    你可以用Git來對這些不同的版本進行控制。還可以很方便地查看兩個不同版本之間的不同之處。
    ——使用Git,你只保存最新的一份文件就可以了。
    ——那我以前的文件怎么辦?
    ——可以用Git的 reset 幫你把文件回退到你想要的版本。
    ——如果回去了,那我的最新版本呢?
    ——還可以用 reflog 和 reset 的組合來還原。

  • 二、概覽

    所有命令前都要加 git,如表中的init是指 git init。
    點擊命令可直接跳轉(zhuǎn)至本文第一次使用的地方。
    以下命令都在命令行里執(zhí)行。

    1.個人本地使用

    行為命令備注
    初始化init在本地的當(dāng)前目錄里初始化git倉庫
    clone 地址從網(wǎng)絡(luò)上某個地址拷貝倉庫(repository)到本地
    查看當(dāng)前狀態(tài)status查看當(dāng)前倉庫的狀態(tài)。碰到問題不知道怎么辦的時候,可以通過看它給出的提示來解決問題
    查看不同diff查看當(dāng)前狀態(tài)和最新的commit之間不同的地方
    diff 版本號1 版本號2查看兩個指定的版本之間不同的地方。這里的版本號指的是commit的hash值
    添加文件add -A這算是相當(dāng)通用的了。在commit之前要先add
    撤回stage的東西checkout -- .這里用小數(shù)點表示撤回所有修改,在--的前后都有空格
    提交commit -m "提交信息"提交信息最好能體現(xiàn)更改了什么
    刪除未trackedclean -xf刪除當(dāng)前目錄下所有沒有track過的文件。不管它是否是.gitignore文件里面指定的文件夾和文件
    查看提交記錄log查看當(dāng)前版本及之前的commit記錄
    reflogHEAD的變更記錄
    版本回退reset --hard 版本號回退到指定版本號的版本,該版本之后的修改都被刪除。同時也是通過這個命令回到最新版本。需要reflog配合

    2.個人使用遠程倉庫

    行為命令備注
    設(shè)置用戶名config --global user.name "你的用戶名"
    設(shè)置郵箱config --global user.email "你的郵箱"
    生成ssh keyssh-keygen -t rsa -C "你的郵箱"這條命令前面不用加git
    添加遠程倉庫remote add origin 你復(fù)制的地址設(shè)置origin
    上傳并指定默認push -u origin master指定origin為默認主機,以后push默認上傳到origin上
    提交到遠程倉庫push將當(dāng)前分支增加的commit提交到遠程倉庫
    從遠程倉庫同步pull在本地版本低于遠程倉庫版本的時候,獲取遠程倉庫的commit

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

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


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

    對照查看兩張圖:

    • workspace 即工作區(qū),邏輯上是本地計算機,還沒添加到repository的狀態(tài);
    • staging 即版本庫中的stage,是暫存區(qū)。修改已經(jīng)添加進repository,但還沒有作為commit提交,類似于緩存;
    • Local repository 即版本庫中master那個地方。到這一步才算是成功生成一個新版本;
    • Remote repository 則是遠程倉庫。用來將本地倉庫上傳到網(wǎng)絡(luò),可以用于備份、共享、合作。本文將使用Github作為遠程倉庫的例子。

    三、Git for Windows軟件安裝


    Git for Windows(又msysgit)

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

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

    • 剛安裝完打開后,窗口比較小。如果不太習(xí)慣,可以把它改大一些。
  • 首先移到窗口右下角邊緣,出現(xiàn)箭頭后把窗口拉大。
  • 點擊窗口頂部左邊的圖標 -> Options... -> Window -> Current size -> OK
    這樣以后打開窗口都會是調(diào)整后的大小。
  • Git for Windows從2.8.0版本[3]開始,默認添加環(huán)境變量,所以環(huán)境變量部分就不用再手動配置了。(這句可以無視)


    四、本地Git的使用

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

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

    1.新的倉庫-》初始化

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

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


    2.文件的添加和提交

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

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

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

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

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

    狀態(tài)變了!說明add成功。再看看它的提示 Changes to be committed ,也就是說現(xiàn)在可以執(zhí)行commit了。下面一行則告訴你如何將文件從stage里移出,這里不管。
    執(zhí)行 git commit -m "提交信息" 將文件提交到repository里。提交信息用英文的雙引號括起來。

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

    這樣第一步就完成了。

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

    3.文件的修改

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

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

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

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

    現(xiàn)在我們通過git看看文件做了哪些變化,執(zhí)行 git diff :

    它默認跟最新的一個commit進行比較。
    紅色(前面有減號-)表示刪除,綠色(前面有加號+)表示添加。
    因此,在git看來,我們是刪除了原來那一行,并添加了新的兩行。這在文件內(nèi)容特別多的時候效果比較明顯。
    這個命令在以下情況可以使用:

    • 你忘記改了什么,又想知道
    • 別人發(fā)給你新版本,你想知道更改了什么

    注:如果你用 windows 創(chuàng)建 txt 文件,并用自帶文本編輯器來編輯文本,得到的編碼是 GBK 。而 Git 讀取文件時,使用 UTF-8 無 ROM 編碼。因此會出現(xiàn)中文無法正常顯示的情況。

    假如我現(xiàn)在想撤銷這些更改,執(zhí)行 git checkout -- . 就行了:

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

    上一個status的提示已經(jīng)不見咯。再來看看文件:

    果然復(fù)原了!那么再次進行修改:

    接著:
    git add -A
    git commit -m "將[自己]改為[米娜桑]"

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

    嗯。現(xiàn)在有兩個提交了。

    4.版本回退!

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

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

    .git 文件夾因為本來就是隱藏的,我在關(guān)了 顯示隱藏的項目 的選項后,它就不顯示了。
    現(xiàn)在看到的是只有一個文件,而且是最新的一個版本。

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

    從剛才的 git log :

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

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

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

    其內(nèi)容:

    已經(jīng)回到我的第一個版本的狀態(tài)。

    這里文件的修改日期被更改為我現(xiàn)在的時間 2016\6\2 19:29
    這是由于文件的修改日期是由windows修改的,因為它檢測到這個文件被修改了。而我們剛才從最新版本回退到現(xiàn)在這個版本,就像是我們手動修改了文件內(nèi)容一樣,事實上是由git來完成的。
    其實可以不管上面這一段

    現(xiàn)在再執(zhí)行 git log :

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

    現(xiàn)在已經(jīng)看到了之前版本的內(nèi)容,那么如何回到最新版呢?
    先執(zhí)行 git reflog :

    可以看到HEAD的變化情況。
    第一行表示當(dāng)前HEAD所在的版本號是 1df0573 ,而之所以在這個版本號,是由于我們執(zhí)行了reset命令。
    看第二行,它告訴我們,這個HEAD所在的版本號是 ad93b89 ,這個版本號是在執(zhí)行commit之后形成的。

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

    git reset --hard ad93b89 git log

    回到第一次reset前的狀態(tài)了!

    5.清除未追蹤的文件

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

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

    還原已做修改的tracked文件,上面已經(jīng)講過。
    現(xiàn)在看看如何用命令刪除新加的文件。

    首先我手動創(chuàng)建個文件,用來演示:

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

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

    6.關(guān)于git status中文亂碼問題

    如果你的文件名是中文的,在使用git status時會亂碼。如下圖所示:

    如果要使它顯示為中文,在命令行里執(zhí)行:git config --global core.quotepath false。
    再使用 git status:


    五、Github與Git的關(guān)聯(lián)

    上面的操作都是在本地計算機上產(chǎn)生影響的,一般也夠用了。
    如果你是程序員,想和其他人分享你的代碼,或者合作開發(fā),可以用Github。

    1)本地Git和Github的連接

  • 到Github[4]注冊賬號。

  • 本地配置用戶名和郵箱(如果已經(jīng)設(shè)置好,跳過該步):
    • git config --global user.name "你的用戶名"
      git config --global user.email "你的郵箱"
      如圖所示:
    • 或者你直接在config文件里改,位置在 C:\Users\你的用戶名\.gitconfig 。如下圖所示,添加相應(yīng)信息:
  • 生成ssh key
    運行 ssh-keygen -t rsa -C "你的郵箱" ,它會有三次等待你輸入,直接回車即可。

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

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

    點擊下面的 Add SSH key 就添加成功了。
    測試一下吧,執(zhí)行 ssh -T git@github.com :

    嗯,這樣就成功了!

  • 注:

    • 對于 oschina 的 “碼云” ,執(zhí)行 ssh -T git@git.oschina.net
    • 對于 coding 的 “碼市” ,執(zhí)行 ssh -T git@git.coding.net

    2)創(chuàng)建遠程倉庫并與本地關(guān)聯(lián)

  • 創(chuàng)建遠程倉庫
    首先是在右上角點擊進入創(chuàng)建界面:

    接著輸入遠程倉庫名:

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

  • 將遠程倉庫和本地倉庫關(guān)聯(lián)起來

    先到Github上復(fù)制遠程倉庫的SSH地址:

    有兩種方式可以關(guān)聯(lián),一種是SSH,一種是HTTPS。由于HTTPS比較慢,所以推薦使用SSH。
    注意SSH的地址格式是這樣開頭的: git@github.com

    運行 git remote add origin 你復(fù)制的地址 :

    如果你在創(chuàng)建 repository 的時候,加入了 README.md 或者 LICENSE ,那么 github 會拒絕你的 push 。你需要先執(zhí)行 git pull origin master。

    執(zhí)行 git push -u origin master 將本地倉庫上傳至Github的倉庫并進行關(guān)聯(lián):

  • 關(guān)聯(lián)已經(jīng)完成!

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

    可以在Github上看到修改:


    六、團隊合作開發(fā)

    關(guān)于團隊合作開發(fā),我在之前已經(jīng)專門用一篇文章來說明了。
    原文鏈接: GitHub團隊項目合作流程

    上文的目錄:

    • 零、前期準備
    • 一、創(chuàng)建開發(fā)分支
    • 二、Fork項目到個人的倉庫
    • 三、Clone項目到本地
    • 四、和團隊項目保持同步
    • 五、push修改到自己的項目上
    • 六、請求合并到團隊項目上
    • 七、團隊項目負責(zé)人審核及同意合并請求

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


    七、Github的其他介紹

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

    看到別人的代碼,想要獲取到本地計算機慢慢研究或者修改,可以用Git將其下載下來。
    以我和一位同學(xué)合作的倉庫為例,鏈接:schaepher/blogsbackup

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

  • 復(fù)制別人遠程倉庫的SSH。方法和上面關(guān)聯(lián)git一樣,進入倉庫頁面后,就能找到SSH地址。

  • 執(zhí)行 git clone 復(fù)制的SSH地址

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

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

    2)另一種關(guān)聯(lián)遠程空倉庫的方法

    在知道了clone之后,你就可以更簡單的創(chuàng)建并關(guān)聯(lián)一個空倉庫了。

  • 在Github上創(chuàng)建倉庫,上面有提到,這里不多講
  • 復(fù)制剛才創(chuàng)建的倉庫的SSH
  • clone到本地
  • 這樣可以不用再做關(guān)聯(lián)了。省去了上面的 init 和 git remote add origin 以及 git push -u origin master 。

    3)使用GitHub的好處

    • 全球最大的同♂性交友網(wǎng)站(逃
    • (嚴肅臉)很多牛逼程序員和牛逼公司的開源項目都放在這上面,有豐富的資源可以學(xué)習(xí)
    • 別人(如HR)可以通過你的Github大致了解你的水平。《怎樣花兩年時間去面試一個人》 這篇文章的后面部分講到了Github

    八、一些可能碰到的問題

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

    • 一、 解決merge時出現(xiàn)的沖突
    • 二、 回退一個merge
    • 三、 獲取某一commit的修改
    • 四、 將低版本push到Github(刪掉高版本Commit)

    轉(zhuǎn)自:Git和Github簡單教程

    總結(jié)

    以上是生活随笔為你收集整理的Git和Github简单教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 欧洲性生活视频 | 亚洲片在线观看 | 午夜视频免费观看 | 在线观看av毛片 | 网红日批视频 | 久久久久久久久久国产 | 99插插| 成人国产一区二区三区 | xxxx毛片| 日本在线不卡一区 | 韩国性猛交╳xxx乱大交 | av一区在线观看 | 亚洲熟妇色自偷自拍另类 | 黄色免费在线网址 | 老司机精品视频在线播放 | 日韩成人免费av | 国产精品作爱 | 国产女人18毛片水18精品 | 成人录像| 亚洲视频一二三区 | 国产性爱精品视频 | 亚洲激情在线播放 | 欧美色v | 男人和女人在床的app | 日本少妇三级 | 狠狠狠狠狠狠干 | 成年人在线播放 | 中文永久免费观看 | 最新黄色网址在线观看 | 国产成人免费视频 | 三级做爰第一次 | 国产超级av在线 | 日日夜夜爱 | 日韩久久精品一区二区 | 国产欧美亚洲精品 | 91口爆一区二区三区在线 | 欧美嫩草影院 | 91成人午夜| 国产精品99久久久久久久久 | 亚洲天堂资源 | 色呦网站 | 日韩欧美亚洲在线 | 欧美99| 美女人人操| 亚洲一区二区三区播放 | 国产麻豆91视频 | 成人一区二区在线观看 | 日日夜夜精品免费视频 | 亚洲视频在线观看一区 | 91免费视频网址 | 偷偷操不一样的99 | 亚洲成人免费在线观看 | 私库av在线 | 男女日屁视频 | 日本视频免费 | 日本一区二区三区免费在线观看 | 日韩黄色视屏 | 日本一区视频在线播放 | 亲子乱子伦xxxx| 男男gay同性三级 | 欧美日本在线播放 | 国产suv精品一区二区69 | 神马午夜嘿嘿 | 国产精品日日做人人爱 | 丰满人妻一区二区三区精品高清 | 色窝窝无码一区二区三区成人网站 | 亚洲欧洲视频在线观看 | 国产乱淫片视频 | 天天艹夜夜艹 | 五月天婷婷在线播放 | 樱花影院电视剧免费 | 国产色在线观看 | 国产精品国产三级国产专播精品人 | 亚洲wwwwww| 国产又粗又黄又猛 | 国产精品久久综合 | 久久久一二三区 | 欧美激情视频一区二区 | 激情宗合 | a级片中文字幕 | 另类激情综合 | 色欲久久久天天天综合网精品 | 国产浮力第一页 | 蜜桃中文字幕 | 国产成人久久 | 一二区免费视频 | 91精品国产乱码久久久 | 国产 日韩 欧美在线 | 国产三区在线成人av | 亚洲免费激情视频 | 高清不卡毛片 | 午夜激情视频在线观看 | 日本泡妞视频 | 又色又爽又黄gif动态图 | 亚洲专区一 | 99国产精品久久久久久久 | 西西久久 | 色97| 美女高潮黄又色高清视频免费 |