目錄
git工作區域
git初始化及倉庫建立和操作
初始化新的git倉庫:
1.新建資料夾
2.在檔案內初始化git
如何將本地倉庫同步到git 遠端倉庫
1.關聯遠端庫:
2.第一次推送master分支的所有內容:
3.每次本地提交後,推送最新修改: 轉殖
分支管理
1.建立與合併分支:
2.解決衝突:
3.分支管理策略:
4.bug分支:
5.feature分支:
6.多人協作
標籤管理
如何將本地檔案上傳github
2.在檔案內初始化git
3.向倉庫新增檔案:
4.將本地倉庫同步到git 遠端倉庫
安裝git
git是目前世界上最先進的分布式版本控制系統
向倉庫中新增檔案流程:
工作區(增刪改);
---->git add
暫存區(先提交暫存區域,最後統一提交)
----->git commit-m"提交描述"
git倉庫
pwd:當前工作目錄
git log:歷史記錄(從最近到最遠的歷史記錄)
git log -p :更多的提交資訊
git log -p -1:最近一次的提交記錄
git log --stat:不僅檢視聊天記錄 還要檢視每個檔案修改了多少行
git log --pretty=oneline:將提交歷史的commit以及commit id放在同一行
head指向的版本就是當前版本,,上乙個版本就是head^,上上乙個版本就是head^^,當然往上100個版本寫100個^比較容易數不過來,所以寫成head~100。
因此,git允許我們在版本的歷史之間穿梭,使用命令git reset --hard commit_id(是git log --pretty=oneline的一大串引數,不必寫全,前幾位即可)。
穿梭前,用git log可以檢視提交歷史,以便確定要回退到哪個版本。
要重返未來,用git reflog檢視命令歷史,以便確定要回到未來的哪個版本。
:q---->退出
注意:每次修改都要使用git add新增檔案到快取區,如果不則不會加入到commit中
撤銷修改
場景1:改亂了工作區某個檔案的內容,想直接丟棄工作區的更改
--->git checkout -- file
場景2:不僅改亂了工作區某個檔案的內容,還新增到了暫存區,想丟棄更改
1.git reset head
2.git checkout -- file
場景3:已經提交了不合適的修改到版本庫時,想要撤銷本次提交(前提是沒有推送到遠端庫)
----->(版本回退)
1.git reset --hard commit_id
2.git log 檢視歷史,確定回退到哪個版本
3.git reflog 檢視命令歷史,確定重返未來的哪個版本
1.設定使用者名稱:
git config --global user.name 'hhhh25';
git config --global user.name ' [email protected]';
該設定在github主頁顯示是誰提交了該檔案
mkdir test
1).cd test 進入test檔案
2).git init
出現.git隱藏檔案 儲存倉庫資訊
向倉庫新增檔案:
1).vim/touch a1.php 建立檔案
git status
2).git add a1.php新增到暫存區(注意,可反覆多次使用,新增多個檔案;)
3).git commit -m ' ' 將檔案從暫存區提交到倉庫
修改倉庫檔案:
1.修改檔案
git status 檢視狀態--->modified 被修改了,但還沒有準備提交的修改
git diff 檢視具體修改內容
2.新增到暫存區
git add
git status
3.提交到倉庫
git commit -m " "
git status----> nothing to commit, working tree clean
刪除倉庫檔案:
1.刪除檔案rm -f a1.php
2.從git中刪除檔案
git rm a1.php
3.提交操作:
git commit -m '提交描述'
注意:命令git rm用於刪除乙個檔案。如果乙個檔案已經被提交到倉庫,那麼你永遠不用擔心誤刪,但是要小心,你只能恢復檔案到最新版本,你會丟失最近一次提交後你修改的內容
git遠端倉庫:
備份、共享
git remote add origin git@server-name:path/repo-name.git;
$ git remote add origin
git push -u origin master;
git push origin master
將遠端倉庫複製到本地
git clone 倉庫位址
git支援多種協議,包括https,但通過ssh支援的原生git協議速度最快。
分支:在版本回退裡,每次提交,git都會把他們串成乙個時間線。這條時間線就是乙個分支。
head嚴格來說不是指向提交,而是指向master,master才指向提交,因此head指向的是當前分支。
檢視分支:git branch
建立分支:git branch name
切換分支:git checkout name
建立並切換分支:git checkout -b name
合併某分支到當前分支:git merge name
刪除分支:git branch -d name
當git無法自動合併分支時,就必須首先解決衝突。解決衝突後,再提交,合併完成。解決衝 突就是把git合併失敗的檔案手動編輯為我們希望的內容,再提交。
用git log --graph命令可以看到分支合併圖。
檢視分支歷史:
git log --graph --pretty=oneline --abbrev-commit
在實際開發中,我們應該按照幾個基本原則進行分支管理:
首先,master分支應該是非常穩定的,也就是僅用來發布新版本,平時不能在上面幹活;
而幹活都在dev分支上,也就是說,dev分支是不穩定的,到某個時候,比如1.0版本發布時,再把dev分支合併到master上,在master分支發布1.0版本;
你和你的小夥伴們每個人都在dev分支上幹活,每個人都有自己的分支,時不時地往dev分支上合併就可以了。
合併分支時,加上--no-ff引數就可以用普通模式合併,合併後的歷史有分支,能看出來曾經做過合併,而fast forward合併就看不出來曾經做過合併。
修復bug時,我們會通過建立新的bug分支進行修復,然後合併,最後刪除;
當手頭工作沒有完成時,先把工作現場git stash一下,然後去修復bug,修復後,再git stash pop,回到工作現場。
開發乙個新feature,最好新建乙個分支;
如果要丟棄乙個沒有被合併過的分支,可以通過git branch -d 強行刪除。
檢視遠端庫資訊,使用git remote -v;
本地新建的分支如果不推送到遠端,對其他人就是不可見的;
從本地推送分支,使用git push origin branch-name,如果推送失敗,先用git pull抓取遠端的新提交;
在本地建立和遠端分支對應的分支,使用git checkout -b branch-name origin/branch-name,本地和遠端分支的名稱最好一致;
建立本地分支和遠端分支的關聯,使用git branch --set-upstream branch-name origin/branch-name;
從遠端抓取分支,使用git pull,如果有衝突,要先處理衝突。
git rebase:
rebase操作可以把本地未push的分叉提交歷史整理成直線;
rebase的目的是使得我們在檢視歷史提交的變化時更容易,因為分叉的提交需要三方對比。
命令git tag 用於新建乙個標籤,預設為head,也可以指定乙個commit id;
命令git tag -a -m "blablabla..."可以指定標籤資訊;
命令git tag可以檢視所有標籤。
命令git push origin 可以推送乙個本地標籤;
命令git push origin --tags可以推送全部未推送過的本地標籤;
命令git tag -d 可以刪除乙個本地標籤;
命令git push origin :refs/tags/可以刪除乙個遠端標籤。
git config --global user.name '***xx';
git config --global user.email ' ***xx';
git.init 出現.git隱藏檔案
git add . 將所有檔案新增到暫存區
git commit -m ' ' 將檔案從暫存區提交到倉庫
1.關聯遠端庫:
$ git remote add origin
2.第一次推送master分支的所有內容:git push -u origin master;
3.每次本地提交後,推送最新修改:git push origin master
git 廖雪峰學習筆記
git的誕生 linus堅決反對cvs和svn等集中式版本控制系統 因為速度慢且需要聯網 bitmover公司授權linux社群商業軟體bitkeeper免費使用權 linus社群牛人試圖破解bitkeeper的協議被bitmover公司發現 bitmover公司收回linux社群bitkeeper...
廖雪峰 Git筆記
git簡介 分布式版本控制系統 集中式vs分布式 集中式版本控制系統,版本庫集中存放在 伺服器,必須要聯網才能工作,沒有歷史版本庫。分布式版本控制系統,不需要 伺服器 每個開發人員電腦上都有乙個完整的版本庫。分布式優勢 安全性更高,無需聯網,若 伺服器 故障,任何乙個其他開發者本地都有最新的帶歷史記...
廖雪峰Git教程學習筆記
git1 通過git init命令把這個目錄變成git可以管理的倉庫 git init 2 用命令git add告訴git,把檔案新增到倉庫 git add readme.txt 3 用命令git commit告訴git,把檔案提交到倉庫 git commit m 這是備註 4 已經記不清上次怎麼修...