Git——基礎知識及部分原理

網易雲視頻講解Git

下載 - 安裝

一、.git是什麼;與svn的區別;在windows上如何安裝

二、操作

2.1、基本操作

  • git init
  • git add
  • git commit -m ‘’
  • git diff [] 工作區與某次提交的差異
  • git diff -cached [] 暫存區與某次提交的差異,默認爲HEAD
  • rm filename 刪除文件(只是從目錄中刪除、如果要從版本庫中刪除,需要再 git commit)
  • 查看:
  • git log 查看所有版本日誌,被回收的信息不會在這裏看到
  • git log --pretty=oneline 查看所有版本日誌簡化信息
  • git reflog 查看所有版本日誌,被回收的信息也可以在這裏看到,按經過的順序排列
  • git status 查看當前提交情況
  • cat filename 查看文件內容(獲取的是暫存區和工作區的文件的內容,如果內容一樣,則不區分)
  • cat .git/refs/heads/master 查看分支信息(結果爲該分支指針信息,如e72638jskanj988a8ifji…,長度爲40的字符串)

2.2、版本回退

  • git reset HEAD ; 將文件內容從提交區複製到暫存區
  • git reset --hard HEAD^; 回退到上一次提交,^ 指上一次
  • git reset --hard HEAD~n; 回退到上 n 次提交
  • git reset --hard 30945da; 版本回退到某一指定版本,這裏的 30945da 指的是具體版本號
  • git reset --mixed 30945da; (此處 mixed 不填效果是一樣的),將當前內容複製到暫存區,此時 HEAD 和 master 同時回退到該指針,此時提交區與暫存區內容一致,與工作區不一致
  • git reset --soft 30945da; 將當前內容複製到暫存區和工作區,此時提交區與暫存區、工作區內容一致

2.3、理解工作區、暫存區、提交區(版本庫)、stash區(隱藏區)的區別

  1. 工作區:就是你在電腦上看到的目錄,比如目錄下testgit裏的文件(.git隱藏目錄版本庫除外)。
  2. 版本庫:工作區有一個隱藏目錄.git,這個不屬於工作區,這是版本庫。
    git add 和 git commit 是把文件先添加到暫存區,再提交到版本庫分支上

2.4、遠程倉庫

  • git remote add origin https://github.com/tugenhua0707/testgit.git 關聯遠程倉庫
  • git remote -v 查看遠程倉庫的信息
  • git pull 或 git pull origin master 獲取
  • git fetch 獲取遠程倉庫的提交歷史
  • git fetch origin master 修改了本地 origin master 分支
  • git merge origin master 完成本地三方合併
  • git pull = git fetch + git merge
  • git clone = git init + git remote + git pull 完整獲取遠程倉庫

2.5、分支操作

  1. 分支的增刪改查
    git branch 創建分支
    git branch -d 刪除分支
    git branch -v 查看所有分支
    git branch next
    git push origin --delete test 刪除遠程 test 分支
  2. 分支的切換:實際上,HEAD在哪裏,當前分支就是哪個
    git checkout 原理:通過移動HEAD檢出版本
    git checkout 切換到該分支
    git checkout -b 創建並切換到該分支
    git checkout 將其引用到任何一個對象上
    git checkout - 切換到到上一個分支
    git checkout – filename 將文件內容從暫存區複製到工作區
    git checkout <指針名> 把 HEAD 切換到該指針上,但會造成 HEAD 與 master 分離,造成 detached head 效果,此時不宜提交,因爲 master 指針沒有回退,當 HEAD 回到 master 上時,之前提交的代碼可能被回收。這種操作一般只用來查看代碼
  3. 分支的合併
    git marge test 把 test 分支合併到當前分支
    git marge next --no-ff 不使用 fast-forward
    git rebase 修剪提交歷史的基線,即‘變基’
    git rebase master 在 master 分支上重演其他分支的所有指針信息,並且合並進來產生新的指針
    git rebase --onto master <指針名> 在 master 分支上重演其他分支的最後一次指針信息,並(同上)
    注:git rebase 不可在非 master 分支上使用
  4. stash 區(隱藏區)
    git stash save ‘name’ 把工作區和暫存區的內容存到 stash 區
    git stash list 查看 stash 區中存了多少條內容
    git stash apply stash@{0} 將該條內容恢復到工作區
    git stash drop stash@{0} 刪除該條記錄
    stash pop = stash apply + stash drop
  5. 分支查看
    git cat-file -p HEAD 查看當前分支和其父分支
  6. git tag
    git tag 創建別名

三、原理性問題

  1. github上創建一個倉庫後,在本地任意一文件夾git init,然後 git remote add origin + 倉庫地址進行關聯,這時候直接git pull,或 git push 都要加 origin master,這是爲什麼?
    你pull操作是要拉取某個分支的代碼,但是你本地沒有任何分支,所以需要指定源(主機名)和分支

  2. 什麼樣的情況下建立分支?

  3. 分支 branch
    所謂分支(branch)就是指向某個快照的指針,分支名就是指針名。哈希值是無法記憶的,分支使得用戶可以爲快照起別名。而且,分支會自動更新,如果當前分支有新的快照,指針就會自動指向它。比如,master 分支就是有一個叫做 master 指針,它指向的快照就是 master 分支的當前快照。
    Git 有一個特殊指針HEAD, 總是指向當前分支的最近一次快照。另外,Git 還提供簡寫方式,HEAD^指向 HEAD的前一個快照(父節點),HEAD~6則是HEAD之前的第6個快照。
    每一個分支指針都是一個文本文件,保存在.git/refs/heads/目錄,該文件的內容就是它所指向的快照的二進制對象名(哈希值)。

四、git 在項目中使用時的發現

  1. git pull 或 git push 時,當出現了驗證時,填錯了用戶名或密碼,該遠程將拒絕你的訪問,使用 git config --system --unset credential.helper,重置錯誤步驟,可重新來過。

  2. git branch --set-upstream-to=origin/feat-les feat-les,把本地 feat-les 分支與遠程 feat-les 關聯

阮一峯 git 原理入門

阮一峯常用 git 命令

git與github建立倉庫連接步驟

​​在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章