Git學習筆記

2021-10-01 02:45:19 字數 4220 閱讀 3329

安裝完成設定,「自報家門」:

git config --global user.name "your name"

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

建立版本庫(git倉庫):

git init
新增檔案到倉庫:

git add git commit -m
檢視倉庫當前狀態,可輸出被修改過但未提交的檔案:

git status // 檢視哪些檔案被修改過

git diff // 檢視修改的內容

git log // 檢視每次修改的時間和內容 包含commit id、author、date、操作,字母q退出檢視

git reset --hard // 改變head指標指向
如果想回到未來,使用:

git reflog // 檢視命令歷史以確定版本號
工作區與暫存區:工作區包含版本庫,版本庫有個暫存區stage,其次git自動建立第乙個分支master,指標head指向master。git add實際上是將改動新增到暫存區,使用git commit一次性將所有改動提交到當前分支。

檢視工作區和版本庫裡面最新版本的區別

git diff head --
撤銷檔案在工作區的修改

git checkout --
這裡有兩種情況:

一種是file自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;

一種是file已經新增到暫存區後,又作了修改,現在,撤銷修改就回到新增到暫存區後的狀態。

如果是第二種,使用以下指令把暫存區的修改撤銷掉,重新放回工作區:

git reset head
然後再丟棄工作區的修改:git checkout --

刪除提交的檔案:

本地工作區刪除:

rm
此時,工作區與版本庫不一致,用git status檢視。

1.如果確實要刪除該檔案,則在版本庫中繼續刪除:

git rm git commit -m "remove file"
2.如果誤刪工作區檔案,則用版本庫里的版本替換工作區的版本:

git checkout --
檢視所有分支:

git branch
建立分支:

git checkout -b dev

// -b表示新建並切換到新分支dev,相當於:

git branch dev

git checkout dev

或者使用:

git switch -c dev

<==>

git branch dev

git switch dev

這樣就可以在新分支提交**,然後再融合到master分支上。

合併分支:

git checkout master // 切換回master分支

git merge dev // 合併

合併分支時,加上--no-ff引數就可以用普通模式合併,合併後的歷史有分支,能看出來曾經做過合併,而fast forward合併就看不出來曾經做過合併。

git merge --no-ff -m "merge with no-ff" dev
刪除分支:

git branch -d dev
檢視分支合併圖:

git log --graph
bug分支:當你接到乙個修復乙個代號101的bug的任務時,很自然地,你想建立乙個分支issue-101來修復它,但是當前正在dev上進行的工作還沒有提交,並不是你不想提交,而是工作只進行到一半,還沒法提交,預計完成還需1天時間。但是,必須在兩個小時內修復該bug,怎麼辦?

儲存工作現場:

git stash
然後切回master分支,建立新分支處理bug,修復完成後回到dev分支:git checkout dev

然後恢復現場:

另一種方式是用git stash pop,恢復的同時把stash內容也刪了

可使用git stash list檢視儲存的現場。

恢復指定的現場:

另一種方式是用git stash pop,恢復的同時把stash內容也刪了

在master分支上修復了bug後,我們要想一想,dev分支是早期從master分支分出來的,所以,這個bug其實在當前dev分支上也存在。同樣的bug,要在dev上修復,我們只需要把fix bug 101這個提交所做的修改「複製」到dev分支。注意:我們只想複製fix bug 101這個提交所做的修改,並不是把整個master分支merge過來。

為了方便操作,git專門提供了乙個cherry-pick命令,讓我們能複製乙個特定的提交到當前分支:

git cherry-pick
feature分支:開發乙個新feature,最好新建乙個分支;

如果要丟棄乙個沒有被合併過的分支,可以通過git branch -d強行刪除。

多人協作:

檢視遠端庫的資訊,遠端庫預設名origin:

git remote -v
推送分支:推送分支,就是把該分支上的所有本地提交推送到遠端庫。

git push origin master
但是,並不是一定要把本地分支往遠端推送,那麼,哪些分支需要推送,哪些不需要呢?

抓取分支:

當你的小夥伴從遠端庫clone時,預設情況下,你的小夥伴只能看到本地的master分支。不信可以用git branch命令看看:

$ git branch

* master

現在,你的小夥伴要在dev分支上開發,就必須建立遠端origindev分支到本地,於是他用這個命令建立本地dev分支:

git checkout -b dev origin/dev
多人協作的工作模式:

首先,可以試圖用git push origin

推送自己的修改;

如果推送失敗,則因為遠端分支比你的本地更新,需要先用git pull試圖合併;

如果合併有衝突,則解決衝突,並在本地提交;

沒有衝突或者解決掉衝突後,再用git push origin

推送就能成功!

如果git pull提示no tracking information,則說明本地分支和遠端分支的鏈結關係沒有建立,用命令git branch --set-upstream-to

origin/

Git學習筆記

git stash git stash list 顯示git棧內的所有備份,可以利用這個列表來決定從那個地方恢復。git stash clear 清空git棧。此時使用gitg等圖形化工具會發現,原來stash的哪些節點都消失了。關於git stash的詳細解釋,適用場合,這裡做乙個說明 使用git...

git 學習筆記

1 git checkout master 切換分支 2 git checkout b xx 新建分支,同時切換到該分支 3 dev 4 git add a 將變動檔案,提交到index 5 git commit m 將 暫存區 檔案,加入到版本控制中。6 git checkout master 7...

Git 學習筆記

顯示版本庫.git所在的目錄 git rev parse git dir 顯示工作區的根目錄 git rev parse show toplevel 相對於工作區根目錄的相對目錄 git rev parse show prefix git config 命令各引數的區別 git config e 版...