Git筆記

一、參考文檔

http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013745374151782eb658c5a5ca454eaa451661275886c6000

二、分佈式的效果

每個人手上都有一個版本,當一個人的版本發生問題時,不會影響所有的版本;

三、學習筆記

1.安裝,參考文檔

2.建立版本庫:

初始化一個倉庫,使用 git init 命令,即在當前文件夾下創建一個 .git文件夾
添加一個文件到倉庫:
git add , 將文件添加到暫存區,可多次使用
git commit -m “修改說明” 將暫存區的文件一次性打包到倉庫

3.版本穿越

git status 查看當前倉庫的狀態(工作區和暫存器的差異——紅色顯示,暫存器和倉庫分支的差異——綠色顯示)
git diff 查看工作區和暫存區文件的差異

git log 顯示最近的提交日誌,可以查看提交commit id,以便確定要回退的版本
git log pretty=oneline (顯示形式)

git reset –hard HEAD^ 從當前提交轉到前一次提交
git reset –hard HEAD^^ 從當前提交轉到前前一次提交
git reset –hard commit-id 從當前提交轉到 commit-id的那次提交,即可以從過去的提交跳轉到現在的提交,需要和git log配合;

git reflog 查看命令歷史,以便確定回到未來的那個版本

4.管理修改

git每次管理的是對文件的修改,而不是對文件:
對文件修改了2次
第一次修改——>add——>第二次修改——>commit ,這樣在倉庫分支中存在的只是第一次的修改
正確做法是:
第一次修改——>add——>第二次修改——>add——>commit
注: git diff HEAD – 可以查看 當前倉庫分支 和 當前工作區文件 的區別

5.撤銷修改

場景一:修改了工作區的文件,但是還沒有添加到暫存區,可以使用 git checkout – filename ,丟棄掉當前工作;
場景二:修改了工作區的文件,並且添加到了暫存區, 分爲兩步:
第一步: git reset HEAD file ,用倉庫分支中的file覆蓋暫存區的file;
第二步:git checkout – filename ,丟棄掉當前工作區的內容;
場景三: 修改了工作區的文件,並且提交到了倉庫分支,要撤銷,可以回退到當前本地倉庫的前一次提交,但是提交到了遠程倉庫,那就死了;

6.刪除文件

刪除本地文件 rm ,文件在暫存區和本地倉庫分支還是有的;
git checkout – ,可以將文件從暫存區恢復到工作區;
git rm 將文件從暫存區刪除
git commit -m “說明” 將本地倉庫分支中的文件刪除

7.添加SSH認證和遠程倉庫同步

在本地創建SSH密鑰,然後將公鑰上傳至遠程倉庫;

先有本地庫,後有遠程庫,本地關聯遠程庫
關聯——遠程倉庫和本地倉庫分支
git remote add origin git@server-name:path/repo-name.git
第一次 把本地分支推送到遠程倉庫master
git push -u origin master
以後提交,把本地內容推送至遠程倉庫master
git push origin master

先有遠程庫的情況:
在本地創建文件夾,使用
git clone [email protected]:path/repo-name.git即可

8.分支管理,建立在HEAD、MASTER、DEV這些指針的理解之上

查看有幾個分支 git branch
創建一個新分支 git branch
切換分支 git checkout
創建+切換分支 git checkout -b
合併分支到當前分支 git merge (這個是快速合併,即 當前分支 和 分支 在一條線上)
注:即剛開始在mster分支上,然後新創建了一個dev分支,並切換到dev分支,修改了文件並提交到本地倉庫,然後切換到master分支下,這中情況下,master分支和dev分支在一條線上
刪除分支 git branch -d

9.合併衝突

即當前分支和《name》分支有相同的父節點,兩個有分叉。
注:即剛開始在mster分支上,然後新創建了一個dev分支,並切換到dev分支,修改了文件並提交到本地倉庫;然後切換到master分支下,在master分支下,修改了文件並進行了提交,這中情況下,master分支和dev分支有分叉口
這種情況下,先解決衝突,即在master分支下修改衝突文件,刪除箭頭等號,然後add commit文件就ok;
git log –graph 命苦可以查看分支合併圖

10.修復bug

場景:當前有兩個分支,一個master分支,一個dev分支,你在dev分支工作,剛剛修改了文件,但是不想提交,老大忽然讓你去修復master分支上的一個bug,你的做法:
現在dev分支上:
git stach 將當前工作區保存起來。
(git stach list 可以查看stach區的保存列表;
git stach apply 將stach區頭部的信息恢復到工作區;
git stach drop 將stach區頭部信息刪除;
git stach pop 將stach去頭部信息恢復到工作區,並將stach區頭部信息刪除;)

切換到 master分支:
創建新分支 bug-001, 在bug-001分支下,進行文件修改,bug修復,修復完成commit後;
切換到master分支,使用快速合併,合併bug-001和master分支;
在master分支下,檢查文件修改是否成功,然後刪除bug-001分支;

切換到dev分支:
git stach pop 恢復到你在修復bug之前的所有工作。

11.開發新功能或新feature

開發新功能或新feature,要新建一個分支;防止後期不再需要該功能,刪除該功能;
如果丟棄一個沒有合併過的分支,使用下面命令強行刪除
git branch -D

12.多人協作模式:

a.首先,可以試圖用git push origin branch-name推送自己的修改;
b.如果推送失敗,則因爲遠程分支比你的本地更新,需要先用git pull試圖合併
c.如果合併有衝突,則解決衝突,並在本地提交;
d.沒有衝突或者解決掉衝突後,再用git push origin branch-name推送就能成功!
f. 如果git pull提示“no tracking information”,則說明本地分支和遠程分支的鏈接關係沒有創建,用命令git branch –set-upstream branch-name origin/branch-name

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