Git:Git經常使用操做

倉庫

  • git init:會在本地當前目錄下建立一個git倉庫
  • git clone https://github.com/username/a.git:下載遠程庫到本地
  • git remote add origin git@server-name:path/repo-name.git:關聯一個遠程倉庫,前提是已經在gitlab上建立了一個倉庫
  • git push -u origin master:第一次把本地工程推送到遠程倉庫,以後直接git push便可

查看日誌

  • git log 查看提交歷史,可肯定回退到哪一個版本
  • git log --pretty=oneline 查看提交歷史,更好看而已
  • git reflog 查看已執行的命令歷史,可肯定回退到哪一個版本

工做區與緩存區

三種狀態+遠程庫:html

工做區與緩存區1

執行 add 添加命令後:git

工做區與緩存區1

執行 commit 提交命令後:github

工做區與緩存區1

  • 工做區:修改或者新添加一個文件,處於工做區(撤銷:git checkout -- fname
  • 暫存區:執行git add fname後,處於暫存區(撤銷:git reset HEAD fname
  • 分支:執行git commit -m "desc"後,提交到了分支(撤銷:git reset --hard commit_id
  • 遠程庫:執行git push後,代碼就推到了遠程庫

撤銷操做

  • 在工做區修改後,並未add到暫存區:撤銷工做區的修改 git checkout -- fname,就回到了和版本號同樣的狀態
  • 在工做區添加了一行a,並add到緩存區,但沒commit到分支上;而後又在工做區添加了一行b,並未add暫存區:執行git checkout -- fname就回到了添加到暫存區後的狀態a
  • 在工做區修改後,並add到了暫存區:執行git reset HEAD fname,就把暫存區的修改撤銷了,回退到工做區狀態;再執行git checkout -- fname就撤銷了工做區的修改,回到了和版本庫同樣的狀態
  • 已經commit到了分支上:執行git reset --hard commit_id就撤銷了提交,回退到了暫存區狀態
  • 撤銷merge操做:
$ git log     // 查看歷史版本號(每條歷史記錄的第一行commit後的是版本號,拷貝前5個字符以上便可)
$ git reset --hard 【版本號】   // 回滾

示例:緩存

$ git log


commit 8a2b2261128388b3a84bc82aae46d7fbc47510df (HEAD -> lsy-practise, origin/lsy-practise)
Merge: 44950c2 1f16ec9
Author: liushunyun <liushunyun@58.com>
Date:   Tue Aug 13 16:25:46 2019 +0800

    刪除拆分前的代碼

commit 44950c242585dbc925ed8f0e4da3d96383ecfb22
Author: liushunyun <liushunyun@58.com>
Date:   Sun Aug 11 10:25:28 2019 +0800

    test

commit 1f16ec94f8a5ab42e6b3d03bc6ba27720a3b55c7 (origin/master, origin/HEAD, master)
Merge: 1c56749 6b202fe
Author: root <root@bjm6-19-154.58os.org>
Date:   Fri Aug 9 11:35:34 2019 +0800

    version:4.3.16.0,branchName:20190809112714076_release_9683_etongzhen-sandbox,integrations:upload_img_fix

回滾:服務器

git reset --hard 8a2b22611        // 回滾到最近提交的那次,commit後的是版本號,取前邊5個以上的字符便可

刪除操做

  • rm fname:從工做區刪除,撤銷刪除:git checkout -- fname
  • git rm fname:從版本庫中刪除文件,完全刪除:git commit;撤銷刪除:git reset HEAD fname,再git checkout -- b便可徹底恢復
  • git checkout -- fname:把誤刪的文件恢復到最新版本,實際上是用版本庫裏的版本替換工做區的版本,不管工做區是修改仍是刪除,均可以「一鍵還原」

分支管理

  • git branch dev:建立dev分支
  • git checkout dev:切換到dev分支
  • git checkout -b dev:建立並切換到dev分支(從當前分支複製出dev新分支,注意push後再切換其餘分支)
  • git branch:查看全部分支和當前分支
  • git checkout -- fname注意:是撤銷工做區的修改
  • git merge dev:把dev分支合併到當前分支(如當前是master分支)
  • git branch -d dev:刪除dev分支
  • git push --set-upstream origin dev:把本地分支push到遠程倉庫
  • git checkout -b 本地分支名 origin/遠程分支名:從遠程倉庫拉取一條本地不存在的分支gitlab

    從當前分支拉新分支開發:

    1. 假設須要從當前的master分支建立新分支的dev2進行開發:
    git checkout -b dev2
    1. 把新分支dev2push到遠程
    git push origin dev2
    1. 拉取遠程分支dev2
    git pull
    1. 提示:
    There is no tracking information for the current branch.
    Please specify which branch you want to merge with.
    See git-pull(1) for details.
    
    git pull <remote> <branch>
    
    If you wish to set tracking information for this branch you can do so with:
    
    git branch --set-upstream-to=origin/<branch> dev2
    
    通過驗證,當前的分支並無和本地分支關聯,根據提示進行下一步:
    1. 關聯
    git branch --set-upstream-to=origin/dev2
    1. 再次拉取 驗證
    git pull

把遠程倉庫中的dev2分支拉到本地(本地以前沒有該分支)

git checkout -b dev2 origin/dev2 fetch

若是成功,就會在本地自動建立新分支dev2,並自動切換奧分支dev2this

若是拉取不成功,須要執行 git fetch ;而後再執行上面的命令3d

參考:git從已有分支拉新分支開發日誌

注意:在分支上修改並commit後,當切換到master分支後是看不到,必須合併分支後才能夠。

查看本地項目git配置信息

  • config 配置有system級別 global(用戶級別) 和local(當前倉庫)三個
  • 設置先從system -》global -》local 底層配置會覆蓋頂層配置 分別使system/global/local 能夠定位到配置文件

示例:

- 查看系統config:`git config --system --list`
- 查看當前用戶(global)配置:`git config --global --list`
- 查看當前倉庫配置:`git config --local --list`

查看當前倉庫的用戶名、郵箱:

git config user.name
git config user.email

配置當前倉庫的用戶名、郵箱:

git config --local user.name zhangsan
git config --local user.email zhang@126.com

遠程倉庫

  • 查看本地git項目對應的遠程github路徑:git remote -v 即遠程git的服務器地址
  • 查看本地git項目是從github的哪一個分支上拉下來的:git remote show origin

子模塊

  • git submodule ...

參考:https://www.liaoxuefeng.com/w...
參考:https://git-scm.com/book/zh/v...

相關文章
相關標籤/搜索