git總結

GitHub創建遠程倉庫

創建遠程倉庫,可見選擇public

配置多個SSH-key

當公司gitlab和自己的github都要配置ssh-key時,假設公司的已存在,現在添加自己GitHub的ssh-key

#名字隨意,與公司的區分開來就好
$ ssh-keygen -t rsa -C "youremail@xx.com" -f ~/.ssh/id-rsa-github

此時在~/.ssh下會生成id-rsa-github和id-rsa-github.pub文件
然后添加私鑰

$ ssh-add ~/.ssh/id-rsa-github
# 如果執行ssh-add報錯,就執行一下ssh-agent -s再執行ssh-add

接著在~/.ssh下添加config文件,輸入如下內容

#gitlab
    Host gitlab.yourhost.com  #企業gitlab host
    HostName gitlab.yourhost.com  #企業gitlab host
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa

# github
    Host github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa_github

GitHub添加key

右上角點擊頭像,選擇settings進入配置頁面,選擇SSH and GPG keys,添加SSH key

image.png

測試是否生效

ssh -T git@github.com

創建本地倉庫

從遠程倉庫克隆

git clone git@url.git

執行git clone 后,會在本地創建master分支,并自動關聯遠程的master分支。

常見工作流程

  • 從遠程倉庫克隆副本
  • 在本地修改或添加文件
  • 如果遠程倉庫更新了,本地可以更新資源
  • 提交前查看修改
  • 提交修改
  • 提交完修改后,如果發現錯誤,可以撤回提交,并再次修改提交

git工作區、暫存區、版本庫

工作區、暫存區、版本庫
  • 工作區:用戶操作區,就是本地看到的目錄
  • 緩存區:英文叫stage或者index,所以有時候緩存區也叫索引,只有index里的內容才可以被commit
  • 版本庫:HEAD指向的工作區有一個隱藏目錄.git,這個不算工作區,而是Git的版本庫
    當對工作區的修改內容執行git add之后,暫存區的目錄樹會更新,同時工作區中的修改內容會被寫入到objects(對象庫)中的一個新對象中,而該對象的ID被記錄到暫存區的文件索引中。
    當執行git commit時,暫存區的目錄樹寫到版本庫(對象庫)中,當前分支會做相應的更新

基本操作

新建遠程分支
# 新建并切換本地分支
git checkout -b newBranchName
# 推送到遠程分支
git push origin newBranchName:newBranchName
刪除遠程分支
git push origin :deleteBranchName
# 或者
git push origin --delete deleteBranchName

待補充……

常見問題

1、在工作區做了修改,不想要了

在工作區修改后,如果想要恢復修改前的版本,執行git checkout .git checkout -- <file>即可將暫存區的全部或指定文件替換工作區的文件

2、提交到暫存區的修改想要撤回

當工作區修改的內容執行git add添加到暫存區后,如果想要撤回,執行git reset HEAD后,暫存區的目錄樹會被重寫,被當前分支(HEAD指向的分支)的目錄樹替換,工作區的不受影響。

如果希望將工作區和緩存區的修改內容都恢復到未修改前,執行git checkout HEAD .或者git checkout HEAD <file>則可將HEAD指向的分支的全部或者指定文件替換緩存區和工作區中的文件。該動作十分危險,會同時清除工作區和緩存區的未提交修改。

3、提交到版本庫中的修改想要撤回

已經執行gti commit提交修改到版本庫,此時想要撤回修改,可通過以下方法:
(1)執行git reset --soft HEAD^,只撤銷commit操作,不影響暫存區和工作區。HEAD^表示上個版本,也可以寫成HEAD~1
(2)執行git reset --hard HEAD^,撤銷commit和add操作,并且刪除工作區改動,恢復到上一次commit版本
(3)執行git reset --mixed HEAD^,撤銷commit和add操作,但不刪除工作區改動。--mixed為默認參數,git reset HEAD^git reset --mixed HEAD^效果一樣。

4、checkout、reset、revert的區別

待補充……

5、工作區中已作修改時,更新遠程倉庫代碼
  • 放棄本地修改
# 獲取遠程分支(步驟1)
git fetch origin branchName
# 在(步驟1)基礎上,創建新分支
git checkout -b branchName origin/branchName
# 在(步驟1)基礎上,重置HEAD指向
git reset --hard origin/branchName
  • 獲取最新的遠程代碼,并合并到當前分支
    (1)git pull origin branchName,拉取遠程origin/branchName分支合并到當前分支,該方法直接合并,無法處理沖突
    (2)git fetch + git merge拉取遠程分支后手動合并,推薦該方法
# 拉取遠程分支branchName到本地
git  fetch origin branchName
# 合并branchName到當前分支
git merge origin/branchName
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 常用Git命令總結 git config --global user.name "你的名字" 讓你全部的Git倉庫...
    繁星追逐閱讀 259評論 0 0
  • 說明:本次總結來自廖雪峰的官方網站,僅供學習,如有侵權請聯系管理員刪除。 git命令 安裝git 安裝完成后需要配...
    test小星星閱讀 417評論 0 0
  • 關于git,之前總是遇到什么問題然后做了一個簡單總結。今天決定來一個系統的總結,加深一下自己對git的理解。 1、...
    丶灰太狼他叔閱讀 646評論 2 0
  • 1. 安裝 git 不同系統下 git 的安裝 Mac上可以在終端上輸入: git --version 來查看gi...
    學生陳希閱讀 1,667評論 0 4
  • 一 Git配置和倉庫初始化 下面會介紹Git的使用,每個小節里會講解各個功能在命令行中的實現方式,并在每小節的最后...
    Happioo閱讀 3,437評論 0 5