Git使用備忘

2021-06-26 09:01:04 字數 4567 閱讀 1882

/etc/gitconfig 檔案:系統中對所有使用者都普遍適用的配置。若使用 git config 時用 --system 選項,讀寫的就是這個檔案。

~/.gitconfig 檔案:使用者目錄下的配置檔案只適用於該使用者。若使用 git config 時用 --global 選項,讀寫的就是這個檔案。

當前專案的 git 目錄中的配置檔案(也就是工作目錄中的 .git/config 檔案):這裡的配置僅僅針對當前專案有效。每乙個級別的配置都會覆蓋上層的相同配置,所.git/config 裡的配置會覆蓋 /etc/gitconfig 中的同名變數。

1、設定使用者資訊

$ git config --globaluser.name  「fatedier」

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

$ git config --global core.editor vim

2、設定差異分析工具

$ git config --global merge.tool vimdiff

3、如何獲取幫助文件

$ git help

$ git --help

$ man git-

例如man git-config

$ git clone

這個命令會在當前目錄下建立乙個fatest的目錄,其中的.git目錄儲存所有的版本記錄。fatest下是專案的所有檔案。

如果要自定義目錄名稱,可以在末尾指定,例如:

$ git clone fatestnew

現在建立的目錄就是fatestnew而不是fatest了,其他的都一樣。

$ git status

可以看到有哪些檔案是沒有加入到版本中的,哪些是修改了還沒提交的等等。

$ git add test.cpp

注:git add命令對於不同狀態的檔案有不同的效果,可以用它開始跟蹤新檔案,或者把已跟蹤的檔案放到暫存區,還能用於合併時把有衝突的檔案標記為已解決狀態等。

注意修改過後的檔案處於未暫存狀態,提交的時候處於未暫存狀態的檔案將不會提交,需要使用git add命令更改為暫存狀態,之後再提交就會提交到倉庫中了。

對於不需要加入到版本中,並且使用git status時不再提示的檔案。

在.gitignore檔案中進行配置

例如*.exe

那麼所有的以.exe結尾的檔案都會被忽略,而不再提醒。

例子:# 此為注釋– 將被 git 忽略

# 忽略所有 .a 結尾的檔案

*.a# 但 lib.a 除外

!lib.a

# 僅僅忽略專案根目錄下的 todo 檔案,不包括 subdir/todo

/todo

# 忽略 build/ 目錄下的所有檔案

build/

# 會忽略 doc/notes.txt 但不包括 doc/server/arch.txt

doc/*.txt

# ignore all .txt files in the doc/ directory

doc/**/*.txt

未暫存:

$ git diff

已暫存:

$ git diff --staged

$ git commit

之後進入vim編輯提交說明,儲存即可。

$ git commit --m 「comment」

使用-m命令可以直接在一行命令中寫說明。

$ git commit -a

使用-a命令,會把未暫存和已暫存的檔案一起提交,不然只會提交已暫存的檔案。

可以先本地使用rm命令刪掉,這時候放在未暫存區域,之後用「git rm檔名」刪掉。

也可以直接使用「git rm 檔名」刪掉。

另外一種情況是,我們想把檔案從 git 倉庫中刪除(亦即從暫存區域移除),但仍然希望保留在當前工作目錄中。換句話說,僅是從跟蹤清單中刪除。比如一些大型日誌檔案或者一堆 .a 編譯檔案,不小心納入倉庫後,要移除跟蹤但不刪除檔案,以便稍後在 .gitignore 檔案中補上,用 --cached 選項即可:

$ git rm --cached readme.txt

例如要把test.cpp改為tt.cpp

$ git mv test.cpp tt.cpp

就相當於是

$ mv readme.txt readme

$ git rm readme.txt

$ git add readme

$ git log

(1)覆蓋上一次的提交

$ git commit --amend

會將上次提交和這次提交合併起來,算作一次提交。

(2)取消已暫存檔案

$ git reset head

這個時候檔案狀態就從已暫存變為未暫存

(3)取消對檔案的修改(還沒有放到暫存區)

$ git checkout --

(1)檢視當前的遠端庫

$ git remote

會列出每個遠端庫的簡短的名字,預設使用origin表示原始倉庫

$ git remote -v

會額外列出遠端庫對應的轉殖位址

(2)新增遠端倉庫

$ git remote add [shortname] [url]

(3)從遠端倉庫抓取資料

$ git fetch [remote-name]

抓取資料,但並不合併到當前分支

$ git pull

自動抓取資料,並自動合併到當前分支

$ git branch -r

檢視所有遠端分支

$ git checkout -b test origin/test

獲取遠端分支到本地新的分支上,並切換到新分支

(4)推送資料到遠端倉庫

$ git push [remote-name] [branch-name]

推送操作會預設使用origin和master名字

(5)檢視遠端倉庫資訊

$ git remote show [remote-name]

除了對應的轉殖位址外,它還給出了許多額外的資訊。它友善地告訴你如果是在 master 分支,就可以用 git pull 命令抓取資料合併到本地。另外還列出了所有處於跟蹤狀態中的遠端分支。

(6)遠端倉庫的刪除

$ git remote rm [remote-name]

(1)顯示已有的標籤

$ git tag

(2)新建標籤

$ git tag v1.0

新建乙個簡單的標籤

$ git tag -a v1.0 -m 『my version 1.0』

-m指定了對應標籤的說明

(3)後期加註標籤

$ git log --pretty=oneline --abbrev-commit

先顯示提交歷史

$ git tag -a v1.1 9fceb02

補加標籤

(4)推送標籤

$ git push origin [tagname]

13、設定命令別名

$ git config --global alias.co checkout

$ git branch testing

會在當前commit物件上新建乙個分支指標

注:head這個特別的指標是指向正在工作中的本地分支的指標

$ git checkout testing

切換到testing分支上

在master分支上,執行:

$ git merge testing

將tesing分支合併回master

$ git mergetool

$ git branch --merged

檢視哪些分支已經被併入當前分支,通常這些都可以刪除了。

$ git branch -d testing

刪除乙個分支

$ git branch -d testing

如果該分支尚沒有合併,可以使用-d選項強制刪除。

$ git push origin testing

例如現在有兩個分支,乙個master,乙個testing

$ git checkout testing

$ git rebase master

$ git checkout master

$ git merge testing

通常在貢獻自己的**之前先衍合,再提交,會讓歷史提交記錄更清晰。

$ git blame -l 12,22 test.cpp

檢視test.cpp檔案對每一行進行修改的最近一次提交。

$ git log --pretty=oneline test.cpp

檢視test.cpp檔案的歷史提交記錄

$ git show [commit] [file]

例如:$ git show 7da7c23 test.cpp

檢視7da7c23這次提交的test.cpp檔案。

$ git log -p -2

通過這條命令可以看到最近兩次提交的檔案變化情況,刪除的部分會以「-」開頭,新增的部分會以「+」開頭,方便檢視。

Git 使用備忘

簡單的 git 使用教程。從服務拷貝 副本到本地 類似 svn checkout 新增本機檔案到伺服器 這個好像沒直接的命令可以檢視,可以去 git 的根目錄下的 git config 裡去看。切換分支。一般在切換分支前需要 git pull 更新到最新。這個命令,還有另外乙個用處,當你想恢復乙個檔...

Git使用備忘

對於已經commit的,先使用 git rm r cached ignore file 來刪除快取,然後才可以使用 git ignore 使用gitignore來忽略檔案。s1 touch gitignore 建立gitignore隱藏檔案 s2 vim gitignore 編輯檔案,加入指定檔案 ...

git使用備忘

1.未push,直接使用git commit amend 可以修改 2.已push,使用git commit amend後,使用 git push origin head refs for 分支名或master no thin 使用git commit amend 將裡面的change id改為ge...