Git 廖雪峰 學習筆記

2021-09-24 03:12:21 字數 4747 閱讀 9723

目錄

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 已經記不清上次怎麼修...