git學習筆記

2021-08-25 11:10:57 字數 4239 閱讀 4243

2. 時光穿梭機

2.2 工作區和暫存區

2.3 撤銷修改

2.4 刪除版本庫檔案

3 遠端倉庫(例如:github)

4 分支管理(例如:github)

4 標籤管理

通過git init命令把某個目錄變成git可以管理的倉庫

$ git init

initialized empty git repository in /users/michael/learngit/.git/

$ git add readme.txt
$ git commit -m "wrote a readme file"

[master (root-commit) eaadf4e] wrote a readme file

1 file changed, 2 insertions(+)

create mode 100644 readme.txt

tip:

簡單解釋一下git commit命令,-m後面輸入的是本次提交的說明,可以輸入任意內容,當然最好是有意義的,這樣你就能從歷史記錄裡方便地找到改動記錄

git status命令可以讓我們時刻掌握倉庫當前的狀態

git diff顧名思義就是檢視difference

(

`git diff #` 就是檢視工作區和暫存區的不同

`git diff--cached` 就是檢視暫存區和master的不同

)

git log告訴我們歷史記錄

(git log --pretty=oneline顯示簡單的資訊)

$ git log --pretty=oneline

e475afc93c209a690c39c13a46716e8fa000c366 add distributed

eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0 wrote a readme file

$ git reset(這個命令也可以把暫存區的修改回退到工作區)

在git中,用head表示當前版本,也就是最新的提交的,上乙個版本就是head^,上上乙個版本就是head^^,當然往上100個版本寫100個^比較容易數不過來,所以寫成head~100

示例:

$ git reset --hard head^

head is now at e475afc add distributed

回退錯了,寶寶後悔了咋辦??

要重返未來,用git reflog檢視命令歷史,以便確定要回到未來的哪個版本

命令git checkout -- readme.txt意思就是,把readme.txt檔案在工作區的修改全部撤銷,這裡有兩種情況

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

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

總之,就是讓這個檔案回到最近一次`git commit`或`git add`時的狀態。

`git checkout -- file`命令中的--很重要,沒有--,就變成了「切換到另乙個分支」的命令。

假設工作區檔案刪除了test.txt:

1:你想把版本庫對應的檔案也刪調:

用命令`git rm test.txt`刪掉,並且`git commit -m "描述"`

2:你刪錯了,所以你想回退:

git checkout -- test.txt

含義:用暫存區的版本替換工作區的版本

1.生成ssh金鑰對

2. 本地倉庫關聯遠端倉庫

$ git remote add origin
3.把本地庫內容推送到遠端倉庫

$ git push -u origin master
小結:

要關聯乙個遠端庫,使用命令git remote add origin git@server-name:path/repo-name.git

關聯後,使用命令git push -u origin master第一次推送master分支的所有內容;

此後,每次本地提交後,只要有必要,就可以使用命令git push origin master推送最新修改;

$ git clone 

要轉殖乙個倉庫,首先必須知道倉庫的位址,然後使用`git clone`命令轉殖。

git支援多種協議,包括`https`,但通過`ssh`支援的原生`git`協議速度最快。

git鼓勵大量使用分支:

檢視分支:git branch

建立分支:git branch

切換分支:git checkout

建立+切換分支:git checkout -b

合併某分支到當前分支:git merge

刪除分支:git branch -d

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

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

修復bug時,我們會通過建立新的bug分支進行修復,然後合併,最後刪除;

當手頭工作沒有完成時,先把工作現場git stash一下,然後去修復bug,修復後,再git stash pop,回到工作現場。

因此,多人協作的工作模式通常是這樣:

首先,可以試圖用git push origin

推送自己的修改;

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

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

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

推送就能成功!

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

origin/

這就是多人協作的工作模式,一旦熟悉了,就非常簡單。

小結:

檢視遠端庫資訊,使用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,如果有衝突,要先處理衝突。

注意:標籤總是和某個commit掛鉤。如果這個commit既出現在master分支,又出現在dev分支,那麼在這兩個分支上都可以看到這個標籤。

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 版...