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,注意,可反覆多次使用,新增多個檔案;4. 版本回退第二步,使用命令git commit,完成。-m後面輸入的是本次提交的說明
每次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...