Git學習之路

2021-09-19 03:03:46 字數 4243 閱讀 4845

git是目前世界上最先進的分布式版本控制系統。

git同時也是linus改變世界的第二大創舉。

關於分布式和集中式的區別,可以看一下這篇文章集中式vs分布式

1.工作區

檔案所在的資料夾

2.版本庫

資料夾中含有.git的隱藏資料夾。

通過add新增的檔案被新增到暫存區,commit提交後,把暫存區的所有內容提交到分支上。

1. 使用者配置

git config --global user.name "hope"

git config --global user.email "[email protected]"

配置級別--local 預設,高優先順序 只影響本倉庫 .git/config

--global 中優先順序,影響到所有當前使用者的git倉庫 ~/.gitconfig

--system 低優先順序 影響到全系統的git倉庫 /etc/gitconfig

2. 初始化倉庫

git init

git status //檢視倉庫狀況

git status對狀態的跟蹤,包括內容狀態:工作目錄、暫存區、提交區

檔案狀態:未跟蹤和已跟蹤

3. 新增檔案到git倉庫

分兩步

第一步,使用命令git add或者git add --all,注意,可反覆多次使用,新增多個檔案;

第二步,使用命令git commit,完成。-m後面輸入的是本次提交的說明

4. 版本回退

每次commit作為一次快照

git log //可以檢視歷史記錄

git log --pretty=oneline //版本id一行顯示

git reset --hard head^ //會退到上乙個版本

git reset --hard commit_id //退到指定id版本

上乙個版本就是head^,上上乙個版本就是head^^,往上100可以寫成head~100

有時由於回退到之前的版本,原來的新版本就沒有顯示了,此時可以使用

git reflog
進行檢視id,然後進行回退。

5. 修改和撤銷

如果想要修改的檔案被記錄在版本庫里,add之後需要commit,不然不會記錄之前完成的修改過程。

如果想撤銷修改的話,

git checkout -- file
如果檔案還沒有add到暫存區的話,就會與版本庫里的相同。如果檔案在暫存區的話,撤銷修改就回到新增到暫存區後的狀態。讓這個檔案回到最近一次git commit或git add時的狀態。

撤銷暫存區的內容

git reset head
將檔案內容從上次提交複製到暫存區

撤銷全部改動

git checkout head --//將內容從上次提交複製到工作目錄
6.刪除檔案

直接在檔案裡面刪除檔案或者使用rm file進行刪除

a.如果需要從版本庫中刪除該檔案

git rm file  //從暫存區與工作目錄刪除

git commit -m "remove file"

git rm --cached //僅從暫存區刪除

git rm $(git ls-files --deleted) //刪除所有被跟蹤但是在工作目錄被刪除的檔案

b.刪除錯了,恢復

git checkout -- file
這樣做可以恢復檔案到最新版本,但是最近一次提交後的修改將會丟失。

為使本地的git倉庫與github倉庫之間關聯,需要做一些前期工作。

1. 先有本地庫後有遠端庫

a. 建立ssh key。

ssh-keygen -t rsa -c "[email protected]"
b. 新增id_rsa.pub內容

登陸github,開啟「account settings」,「ssh keys」,「add ssh key」,貼上id_rsa.pub裡面的內容

這樣你在電腦就可以推送到github上的倉庫了。

c.在github上建立倉庫

d. 推送內容

git remote add origin [email protected]:github賬戶名/倉庫名稱.git
git push -u origin master
之後進行推送的時候就可以不用加上-u,直接使用

git push origin master
2.先有遠端庫,後有本地庫

從乙個遠端庫進行clone

git clone [email protected]:github賬戶名/專案名.git
1.關於分支的管理

a. 建立分支

git checkout -b dev
等價於

git branch dev

git checkout dev

檢視分支

git branch
切換分支

git checkout master
合併分支

git merge dev
刪除分支

git branch -d dev
2. 解決衝突

git無法自動合併分支時,就必須首先解決衝突。解決衝突後,再提交,合併完成。

git log --graph命令可以看到分支合併圖。

3. 分支管理策略

用fast forward模式,刪除分支後,會丟掉分支資訊。如果要強制禁用fast forward模式,git就會在merge時生成乙個新的commit,可以從分支歷史上就可以看出分支資訊。

git merge --no-ff -m "merge with no-ff" dev
4. bug分支管理

需要盡早完成bug的修理,但是分支上的工作只是工作到一半,這是我們可以使用

$ git stash
儲存工作,然後在master分支上建立分支修復。

修完bug後有兩種方法進行修復

git stash pop //恢復的同時也把stash的內容給刪除了

由於dev分支上沒有bug修復的**,所以可以切換到dev分支上,然後

git merge master
5. feature分支

有時需要丟棄新的feature,所以使用強行刪除

git branch -d feature-vulcan
6. 多人協作

a. 轉殖分支

可以使用git remote參看遠端庫的資訊

b.推送分支

git push origin dev
約定在dev分支上開發,就必須建立遠端origin的dev分支到本地,建立本地dev分支:

$ git checkout -b dev origin/dev
c. 抓取分支
git pull
如果推送失敗的話,可能原因是沒有指定本地dev分支與遠端origin/dev分支的鏈結

git branch --set-upstream branch-name origin/branch-name
廖雪峰的官方**git教程

git diff的用法

git 分支管理詳解

git官網

git的學習之路

git git 連線 github 中的位址 git remote add origin git push u origin master 出現如下錯誤 failed to push some refs to 時應該執行 git pull rebase origin master git branc...

git學習之路1

檢查git版本 git version 最初使用 1 建立使用者及使用者email git config global user.name your name git config global user.email your email 2 建立倉庫 選擇乙個目錄,注意不要用中文目錄,執行 git...

Git學習之路(三)

由於本文需要用到github,需要修改本地檔案,使得進入github更加流暢 1 開啟c windows system32 drivers etc hosts 2 新增以下內容 複製到桌面修改完成之後覆蓋原檔案即可 192.30 255 112 github.com git 185.31 16.18...