(轉載)git常用命令


本文轉載於《多選參數》一份 Git cheat sheet 送給您

常用命令

git 配置

# 顯示 config 的配置 加--list
# 優先級:local > global > system
git config --list --local	# local 的範圍是某個倉庫
git config --list --global	# global 的範圍是登錄的用戶
git config --list --system	# system 的範圍是系統所有登錄的用戶

# 配置用戶 name 和 email
git config --global user.name 'your_name '
git config --global user.email '[email protected]'

# 清除配置信息
git config --unset --global user.name

倉庫初始化

# 將執行該命令時所在的目錄初始化爲一個 git 倉庫(如:進入某目錄後執行該命令會將該目錄初始化爲一個 git 倉庫)
git init

# 會在當前路徑下創建和項目名稱同名的文件夾,並將其初始化爲 git 倉庫
git init your_project

git add

git add readme.md	# 將 readme.md 文件添加到暫存區
git add .	# 將當前工作目錄的所有文件添加到暫存區
git add -u # 把修改之後的文件(這些文件已經被管理起來了)一次性提交到暫存區

git status

git status	# 查看工作目錄和暫存區的狀態

git commit

git commit -m 'Add readme.md'	# -m 指定 commit 的信息
git commit	# 這時候會跳出一個文本輸入界面,讓你輸入更多的 commit 信息

git mv

git mv readme readme.md	# 將 git 管理的文件進行重命名

git rm

git rm filename # 從 git 管理的文件刪除某個已管理的文件,同時把修改的情況添加到暫存區

git log

git log	# 只查看當前分支(Head所指的分支)的log情況
git log --oneline	# 簡潔的顯示版本更新信息
git log -n2		# n2 代表查看最近兩次commit歷史
git log -2 		# 2 代表查看最近兩次commit歷史
git log -n2 --oneline	# 簡潔的顯示最近兩次的版本更新信息
git log branch_name	# 後面跟上分支名錶示查看該分支的log日誌

git log -all	# 列出所有分支的log
git log --all --graph	# 以圖形化的方式查看
git log --oneline --all	# 以簡潔的方式查看所有分支的log
git log --oneline --all	-n4# 以簡潔的方式查看所有分支的log

git help log	# 以web的方式查看log的幫助文檔,等同於
git help --web log # 和上面那條效果一樣

分支相關

git branch -v # 查看本地分支的詳細情況
git branch -a # 查看所有分支,包括遠端分支,但沒有過於詳細的信息
git branch -av # 查看所有分支情況

git branch branch_name hash_value # 創建一個新的分支,基於 hash_value 的這個 commit 創建一個新的分支,hash_value 可以省略,那麼默認是基於當前分支的最後一個 commit 創建。

git branch -d branch_name
git branch -D branch_name 	# 這個分支已經有了一些 commit

git checkout branch_name	# 切換分支
git checkout master

git checkout -b branch_name git_id # 創建一個新的分支並切換過去,git_id可以是hash_value,也可以是某個分支的名字(分支的名字其實就指向了某個 commit)
git checkout -b temp 9ef147d
git checkout -b temp2 master

git checkout hash_value		# 分離頭指針

比較

git diff hash_value1 hash_value2 # hash_value1 對應的 comimit 和 hash_value2 對應的 commit 進行比較

git diff hash_value1 hash_value2 -- file_name1 file_name2	# 在上述基礎之上,只比較 file_name1、file_name2 這兩個文件

git diff branch_name1 branch_name2	# 對兩個分支進行比較,也可以跟 -- 只看某些文件

git diff HEAD HEAD^		# HEAD 指向的 commit 與該 commit 的父親 commit 進行比較
git diff HEAD HEAD^^	# HEAD 指向的 commit 與該 commit 的父親的父親 commit 進行比較

git diff HEAD HEAD~		# HEAD 指向的 commit 與該 commit 的父親 commit 進行比較
git diff HEAD HEAD~1	# 同上	
git diff HEAD HEAD~2	# HEAD 指向的 commit 與該 commit 的父親的父親 commit 進行比較

git diff --cached		# 暫存區和 HEAD 做比較,也可以跟 -- 只看某些文件

git diff			   # 工作目錄和暫存區中所有文件進行比較,也可以跟 -- 只看某些文件

版本歷史更改

git commit --amend # 最近一次 commit 的 message 修改

git rebase -i hash_value # 交互文件中選擇 reword,老舊 commit 的 message 修改。hash_value,是需要的 commit 的父親 commit 的 hash_value

git rabase -i hash_value # 交互文件中選擇 squash,多個連續 commit 合併成一個,hash_value 同上

git rebase -i hash_value # 交互文件中選擇 squash,把間隔的 commit 移到一塊,即可合併成一個,hash_value

git rebase origin/master # 把當前分支基於 origin/master 做 rebase 操作,也就相當於把當前分支的東西加到 origin/master 中

回滾操作

git reset HEAD						  # 暫存區恢復成和 HEAD 一樣
git reset HEAD -- file_name1 file_name2 # 暫存區部分文件變得跟 HEAD 一樣

git checkout -- file_name # 工作目錄指定文件恢復爲和暫存區一樣
git checkout -- *|. ## 工作目錄全部文件恢復爲和暫存區一樣

git reset --hard hash_value # 把 HEAD、暫存區、工作目錄都回滾到 hash_value 所代表的 commit 中。
git reset --hard 	# 把暫存區裏面的修改去掉,也就是讓暫存區、工作目錄默認恢復到 HEAD 的位置

工作目錄、暫存區狀態保存

git stash	# 把相應的修改內容給存下來,之後 git status 查看的話又變爲什麼都沒改變的了
git stash list	# 查看存下來的內容
git stash apply # 存下來的內容又恢復了,但是存下來的內容還在 stash 中
git stash pop   # 存下來的內容恢復了,但是存下來的內容也沒了

合併

git merge branch_name1 branch_name2
git merge hash_value1 hash_value2
git merge --squash # 以 squash 方式進行 merge

Git 對象操作

git cat-file -t|p|s hash_value	# 顯示版本庫對象的內容,類型及大小信息
git cat-file -t hash_value		# 查看版本庫對象的類型
git cat-file -p hash_value		# 查看版本庫對象的內容
git cat-file -s hash_value		# 查看版本庫對象的大小

Git 遠端操作

git remote add <遠端名> <遠端倉庫地址> # 這邊遠端名的意思是遠端倉庫的別名,push、pull 都將用到遠端名
git remote -v 	# 查看遠端倉庫連接情況
git remote set-url <遠端名> 你新的遠程倉庫地址	# 修改遠端倉庫地址
git remote rm <遠端名>				  # 刪除遠端倉庫

git clone <遠端倉庫地址>	# 把遠端倉庫 clone 下來
git clone --bare  <遠端倉庫地址> # bare 是指不帶工作目錄,也就相當於只 clone .git 目錄

git push <遠端名> <本地分支名>
git push -u <遠端名> <本地分支名> # -u 表示將本地分支的內容推到遠端分支,並且將本地分支和遠端分支關聯起來
git push -u origin master	# 表示把本地 master 分支的內容推到遠端分支 origin/master,並且將本地分支 master 和遠端分支 origin/master 關聯起來
git push	# 這條命令也可以使用,默認是將當前本地所在分支推到相關聯的遠端分支

git fetch <遠端名> <本地分支名>
git fetch origin master # 將遠端分支 origin/master fetch 到本地

git pull <遠端名> <本地分支名>	# 將遠端分支 fetch 到本地,並且將遠端分支和本地所處分支進行合併
git pull --rebase # 以 rebase 方式進行合併,也就是將本地分支 rebase 到遠端分支
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章