Git常用命令及操作

2022-08-23 13:42:09 字數 4365 閱讀 6500

git config --global user.name "tom"

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

每次git提交都會使用該使用者資訊。

# 檢視所有配置資訊

git config -l

# 檢視全域性使用者配置

git config --global --list

# 檢視系統配置

git config --system --list

c:\users\administrator\.gitconfig檢視登入使用者的配置 --global全域性

d:\git\etc\gitconfiggit安裝目錄下 --system系統

獲取git倉庫通常有兩種方式:

# 建立目錄

mkdir [projectname]

cd [projectname]

# 初始化倉庫

untracked 未跟蹤(未被納入版本控制)

tracked 已跟蹤(被納入版本控制)

untracked: 未跟蹤, 此檔案在資料夾中, 但並沒有加入到git庫, 不參與版本控制. 通過git add 狀態變為staged.

unmodify: 檔案已經入庫, 未修改, 即版本庫中的檔案快照內容與資料夾中完全一致. 這種型別的檔案有兩種去處, 如果它被修改, 而變為modified. 如果使用git rm移出版本庫, 則成為untracked檔案

modified: 檔案已修改, 僅僅是修改, 並沒有進行其他的操作. 這個檔案也有兩個去處, 通過git add可進入暫存staged狀態, 使用git checkout 則丟棄修改過, 返回到unmodify狀態, 這個git checkout即從庫中取出檔案, 覆蓋當前修改 !

staged: 暫存狀態. 執行git commit則將修改同步到庫中, 這時庫中的檔案和本地檔案又變為一致, 檔案為unmodify狀態. 執行git reset head filename取消暫存, 檔案狀態為modified

# 檢視檔案狀態

git status

# 檢視檔案狀態(輸出資訊更加簡潔)

git status –s

# 將未跟蹤的檔案加入暫存區

git add [filename]

# 新增所有檔案到暫存區

git add .

# 將暫存區的檔案取消暫存

git reset [filename]

# 提交暫存區中的內容到本地倉庫 -m 提交資訊

git commit -m "訊息內容"

# 刪除本地倉庫檔案

git rm [filename]

# 檢視日誌記錄

git log

在主目錄下建立".gitignore"檔案,此檔案有如下規則:

忽略檔案中的空行或以井號(#)開始的行將會被忽略。

可以使用linux萬用字元。例如:星號(*)代表任意多個字元,問號(?)代表乙個字元,方括號([abc])代表可選字元範圍,大括號()代表可選的字串等。

如果名稱的最前面有乙個感嘆號(!),表示例外規則,將不被忽略。

如果名稱的最前面是乙個路徑分隔符(/),表示要忽略的檔案在此目錄下,而子目錄中的檔案不忽略。

如果名稱的最後面是乙個路徑分隔符(/),表示要忽略的是此目錄下該名稱的子目錄,而非檔案(預設檔案或目錄都忽略)。

#為注釋

*.txt #忽略所有 .txt結尾的檔案,這樣的話上傳就不會被選中!

!lib.txt #但lib.txt除外

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

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

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

# 檢視遠端倉庫(預設origin)

git remote

# 顯示所有遠端倉庫

git remote -v

# 新增遠端倉庫

git remote add [remote-name] [url]

# 移除無效的遠端倉庫

git remote rm [remote-name]

注意:git remote rm [name]只是從本地移除遠端倉庫的記錄,並不會真正影響到遠端倉庫

git fetch origin [branch-name]是從遠端倉庫獲取最新版本到本地倉庫,不會自動merge。

git pull origin [branch-name]是從遠端倉庫獲取最新版本並merge到本地倉庫。

注意:如果當前本地倉庫不是從遠端倉庫轉殖,而是本地建立的倉庫,並且倉庫中存在檔案,此時再從遠端倉庫拉取檔案的時候會報錯(fatal: refusing to merge unrelated histories ),解決此問題可以在git pull命令後加入引數--allow-unrelated-histories

git push [remote-name][branch-name]可以將其推送到遠端倉庫。

例如:git push origin master推送master主分支到遠端倉庫.

git 的master分支並不是乙個特殊分支。 它跟其它分支沒有區別。 之所以幾乎每乙個倉庫都有 master 分支,是因為git init 命令預設建立它。

# 列出所有本地分支

git branch

# 列出所有遠端分支

git branch -r

# 列出所有本地分支和遠端分支

git branch -a

# 新建乙個分支,但依然停留在當前分支

git branch [branch-name]

# 新建乙個分支,並切換到該分支

git checkout -b [branch-name]

# 推送至遠端倉庫分支

git push origin [branch-name]

# 合併指定分支到當前分支

git merge [branch-name]

# 刪除分支

git branch -d [branch-name]

# 刪除遠端分支

git push origin --delete [branch-name]

git branch -dr [remote/branch]

合併分支:如果你在兩個不同的分支中,對同乙個檔案的同乙個部分進行了不同的修改,git 就沒辦法合併它們,同時會提示檔案衝突。此時需要我們開啟衝突的檔案並修復衝突內容,最後執行git add命令來標識衝突已解決

刪除分支:如果要刪除的分支中進行了一些開發動作,此時執行上面的刪除命令並不會刪除分支,如果堅持要刪除此分支,可以將命令中的-d引數改為-d

master主分支應該非常穩定,用來發布新版本,一般情況下不允許在上面工作,工作一般情況下在新建的dev分支上工作,工作完後,比如上要發布,或者說dev分支**穩定後可以合併到主分支master上來。

# 列出所有tag

git tag

# 新建乙個tag在當前commit

git tag [tag]

# 新建乙個tag在指定commit

git tag [tag] [commit]

# 刪除本地tag

git tag -d [tag]

# 刪除遠端tag

git push origin :refs/tags/[tagname]

# 檢視tag資訊

git show [tag]

# 提交指定tag

git push [remote] [tag]

# 提交所有tag

git push [remote] --tags

# 新建乙個分支,指向某個tag

git checkout -b [branch] [tag]

Git常用命令及操作

commands contents git init 建立版本庫 git add 加入檔案 git commit m 本次提交說明 git status 倉庫當前狀態 git diff 檢視修改內容 git log 檢視提交日誌 git reset hard head 版本回退 git reset ...

git操作步驟及常用命令

git config global credential.helper store 記住當前登入使用者名稱 密碼 git config system unset credential.helper git push origin delete chapater6 刪除遠端分支 git remote ...

git及常用命令

git 是乙個分布式版本控制工具,不必伺服器端軟體支援,使源 的發布和交流極其方便 git 的優勢主要有 1.git是分布式的,這是git和其它非分布式的版本控制系統 svn,cvs 最核心的區別。從中心版本庫的伺服器上chect out 後會在自己的機器上轉殖乙個自己的版本庫。它支援離線工作 本地...