認識git和github

github

簡介:一個網站/社交平臺,能夠存放代碼,有不少開源項目。
詳介:github是程序猿的代碼託管平臺,也是基於git的開源分佈式版本控制系統,所以github官網上並無爲用戶準備一個很好的代碼上傳系統。若想快速高效地將本地代碼上傳到github,須要作到如下幾點:html

  1. 在本地安裝git,這樣才能在本地環境中使用git命令行(例如:$ git add index.html);
  2. 要將本地git鏈接到本身的github帳戶上,這樣才能把代碼文件上傳上去。每一次更改都會造成一個版本記錄,便於團隊協做管理。

git

一個工具,主要做用是版本控制,須要安裝到本地。安裝文件夾下會有git-bash.exegit-cmd.exe兩個應用程序,bash在cmd的基礎上增添了一些新的命令與功能,建議直接使用bash。git

git的主要做用

  1. 回退,即退回到以前版本;
  2. 歷史,即查看歷史版本;
  3. 差別,即查看版本和版本之間有哪些不一樣,作了哪些變化等。

經常使用的版本控制工做

除了git這個當前最主流的版本控制工具外,還有svn、cvs等。github

使用git工具

將git鏈接到github網站

Step1 設置貢獻者
打開git-bash,逐條輸入並回車:
git config --global user.email "你的郵箱"
git config --global user.name "你的用戶名"shell

git config --global 參數表示這臺機器上全部的Git倉庫都會使用這個配置(即相同的郵箱和用戶名),也能夠對某個倉庫指定不一樣的用戶名和郵箱。segmentfault

Step2 生成ssh安全

ssh是一種傳輸代碼的方法,專爲遠程登陸會話和其餘網絡服務提供安全性的協議,安全且快速。bash

  1. 繼續輸入:
    ssh-keygen -t rsa -C "註冊郵箱"
  2. 一路回車,直到出現randomart image;
  3. 回車中途會出現:
    路徑選擇→提示選擇ssh-key生成路徑,直接點回車將其生成在默認路徑中便可;
    密碼確認→不用使用密碼進行登陸,直接回車便可。

Step3 在github網站添加ssh網絡

  1. 找到文件夾.ssh(路徑爲:C:\Users\用戶名\.ssh),該文件夾下有2個文件:id_rsa私鑰和id_rsa.pub公鑰;
  2. 用代碼編輯器打開id-rsa.pub,複製全部內容;
  3. 登陸github網站,頭像(網頁右上角)→settings→SSH and GPG keys(網頁左邊側欄)→New SSH key(網頁右邊,頭像下邊)
    →title(隨便填)→Key(粘貼id-rsa.pub裏的全部內容)→Add SSH key

Step4 測試是否鏈接成功
在git-bash中輸入並回車:
ssh -T git@github.com
出現Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.說明已經過身份驗證,鏈接成功。dom

經過git提交代碼

在github上創建倉庫

在github上刪除倉庫

點開settings後,將頁面拉到最底部
ssh



把本地的文件上傳到倉庫中

  1. 在git-bash中建立一個版本庫(就是要上傳文件的文件夾)
  2. 在命令行中敲git init,初始化,目的是讓這個目錄歸git管理
  3. 命令行中會輸出Initialized empty Git repository in "文件夾路徑"/.git/.git目錄是Git用來跟蹤管理版本庫的,默認隱藏
  4. 繼續敲git add <file> 處敲 文件路徑;或者敲 git add .,.表明 全部的文件
  5. 繼續敲git commit -m "提交日誌","提交日誌"是對這次上傳操做的簡介
  6. 鏈接遠程地址,繼續敲git remote add origin 本身的github地址
  7. 本地文件推送到遠程倉庫,繼續敲git push -u origin master,-u裏的u是union,把本地工做區與遠程倉庫對應起來

修改本地文件並同步到遠程倉庫

  1. 在本地版本庫添加/修改文件
  2. git add
  3. git commit -m "提交日誌"
  4. git push

刪除本地文件並同步到遠程倉庫

  • 方法一(只能刪文件):
  1. 刪除本地版本庫的文件
  2. git add -u
  3. git commit -m "提交日誌"
  4. git push
  • 方法二(能夠刪文件和文件夾):
  1. git rm
  2. git commit -m "提交日誌"
  3. git push

注意:git rm <file>rm <file>是有區別的!本地文件夾叫工做區;工做區裏有一個.git文件夾叫版本庫;版本庫裏有一個暫存區(stage),add是提交到暫存區的方法之一,commit是生成新版本,每次提交後用git log輸出歷史,會發現有新版本。rm只刪除了工做區的文件,跟git不要緊;git rm刪除了工做區和暫存區對應的文件,git rm & git commit & git push會刪除工做區、暫存區、遠程庫對應的文件,同時在歷史裏會新增一個刪除文件的版本。

經常使用命令

  • mkdir 新建
  • cd 打開
  • cd .. 返回上級目錄,ps:cd和..之間有一個空格
  • pwd 顯示當前目錄
  • 右鍵菜單→paste 粘貼,ps:ctrl+v沒法實現粘貼
  • tab鍵自動補全
  • ls=list→查看文檔列表(不是git命令)
  • 輸入i能夠開始編輯
  • 輸入ESC能夠退出編輯狀態
  • 輸入:wq能夠保存退出
  • cat filename→catalogue輸出文件內容
  • rm -v filename→由於有-v,會多輸出一行刪除記錄

經常使用的git命令

  • git init 初始化
  • git --version 查看git版本
  • git status 查看git狀態,總共有9種狀態,常見到的有如下5種:
    • untracked files 未被git管理的文檔
    • modified 被修改了的文檔,顯示紅色表示是對工做區文件進行了修改,顯示綠色表示是對暫存區文檔進行了修改
    • staged 代碼在暫存區
    • deleted 代碼被刪除
    • both modified 多在merge/pull/rebase/revert時發生了conflict時顯示
  • git log 查看歷史
    • git log –pretty=oneline 查看簡寫版歷史(包括版本號和提交日誌...)
    • git log --graph --pretty=oneline --abbrev-commit 查看圖像版歷史
    • git reflog 查看全部的版本號及相關信息
  • git diff 查看差別
    • 無參數的狀況下,查看的是working tree和last commit之間的差別
    • 有參數的狀況下,如 git diff a b,a和b爲版本號,查看的是a版本和b版本之間的差別
    • git diff→diff的是工做區代碼的差別
    • git diff --cached→diff的是暫存區代碼的差別
  • git commit 提交/前進功能
  • git revert 轉換/後退功能
    • 用法是 git revert a ,a是一個版本號
    • 會建立一個新的commit(暫稱爲b)
    • a和b互爲相反的diff
    • b僅徹底diff版本a,與a和last commit(即b)之間的版本不相關
  • git reset 重置/後退功能
    • 用法是 git reset a ,a是一個版本號,這裏假設a是上上個版本
    • 執行git reset以後,git log會發現少了上個版本(即當前版本到a的下一個版本全沒有了),可是a版本還在,且文件內容是最新內容,沒有作修改
  • git reset --hard HEAD^回退到上個版本
    • git reset --hard HEAD^^回退到上上個版本
    • git reset --hard HEAD~100 回退到前100個版本
  • git branch 查看分支,會列出全部的分支,當前分支前面會添加一個星號
    • git branch name 建立分支name
    • git branch -d name 刪除分支name
  • git checkout -- file 撤銷,丟棄工做區的修改,file是文件名
    • git checkout name 切換到name分支上
  • git checkout -b name 建立並切換到分支name上,等於git branch <分支名>+git checkout <分支名>
  • git merge name 將指定分支name合併到當前分支上
  • git remote show origin 查看遠程倉庫的詳細信息

經常使用遠程操做命令

  • 已有本地倉庫,同步到遠程倉庫
    • git push origin master
  • 本地沒有倉庫,從遠程同步到本地
    • git clone 遠程倉庫地址
  • 本地已有倉庫,遠程倉庫有更新,從遠程倉庫同步到本地倉庫
    • git pull origin master

常見問題

Git提示fatal: remote origin already exists
解決辦法:

  1. 先刪除遠程git倉庫 ,輸入$ git remote rm origin
  2. 再添加遠程git倉庫 ,輸入$ git remote add origin 本身的github地址
  3. 若是執行 git remote rm origin 報錯的話,能夠手動修改gitconfig文件的內容,輸入$ vi .git/config,刪掉[remote "origin"] 這一行

[rejected] master -> master (fetch first)
解決辦法:
使用強制推送,即git push -f origin master

Please enter a commit message to explain why this merge is necessary.
解決辦法:
git在pull或者合併分支的時候有時會遇到這個界面。能夠無論(直接下面3,4步),若是要輸入解釋的話就須要:

  1. 按鍵盤字母 i 進入insert模式
  2. 修改最上面那行黃色合併信息(能夠不修改)
  3. 按鍵盤左上角"Esc"
  4. 輸入":wq"(注意是冒號+wq),按回車鍵便可

Git資料

相關文章
相關標籤/搜索