git 命令總結

2021-09-12 13:26:25 字數 4420 閱讀 1357

<1>

workspace:工作區

index / stage:暫存區

repository:倉庫區(或本地倉庫)

remote:遠端倉庫

一、新建**庫

$ git init

$ git init [project-name]

$ git clone [url]

二、配置

git的設定檔案為.gitconfig,它可以在使用者主目錄下(全域性配置),也可以在專案目錄下(專案配置)。

$ git config --list

$ git config -e [–global]

$ git config [–global] user.name 「[name]」

$ git config [–global] user.email 「[email address]」

三、增加/刪除檔案

$ git add [file1] [file2] …

$ git add [dir]

$ git add .

$ git add -p

$ git rm [file1] [file2] …

$ git rm --cached [file]

$ git mv [file-original] [file-renamed]

四、**提交

$ git commit -m [message]

$ git commit [file1] [file2] … -m [message]

$ git commit -a

$ git commit -v

$ git commit --amend -m [message]

$ git commit --amend [file1] [file2] …

五、分支

$ git branch

$ git branch -r

$ git branch -a

$ git branch [branch-name]

$ git checkout -b [branch]

$ git branch [branch] [commit]

$ git branch --track [branch] [remote-branch]

$ git checkout [branch-name]

$ git checkout -

$ git branch --set-upstream [branch] [remote-branch]

$ git merge [branch]

$ git cherry-pick [commit]

$ git branch -d [branch-name]

$ git push origin --delete [branch-name]

$ git branch -dr [remote/branch]

六、標籤

$ git tag

$ git tag [tag]

$ git tag [tag] [commit]

$ git tag -d [tag]

$ git push origin :refs/tags/[tagname]

$ git show [tag]

$ git push [remote] [tag]

$ git push [remote] --tags

$ git checkout -b [branch] [tag]

七、檢視資訊

$ git status

$ git log

$ git log --stat

$ git log -s [keyword]

$ git log [tag] head --pretty=format:%s

$ git log [tag] head --grep feature

$ git log --follow [file]

$ git whatchanged [file]

$ git log -p [file]

$ git log -5 --pretty --oneline

$ git shortlog -sn

$ git blame [file]

$ git diff

$ git diff --cached [file]

$ git diff head

$ git diff [first-branch]…[second-branch]

$ git diff --shortstat 「@」

$ git show [commit]

$ git show --name-only [commit]

$ git show [commit]:[filename]

$ git reflog

$ git rebase [branch]

八、遠端同步

$ git remote update --更新遠端倉儲

$ git fetch [remote]

$ git remote -v

$ git remote show [remote]

$ git remote add [shortname] [url]

$ git pull [remote] [branch]

$ git push [remote] [branch]

$ git push [remote] --force

$ git push [remote] --all

九、撤銷

$ git checkout [file]

$ git checkout [commit] [file]

$ git checkout .

$ git reset [file]

$ git reset --hard

$ git reset [commit]

$ git reset --hard [commit]

$ git reset --keep [commit]

$ git revert [commit]

$ git stash

$ git stash pop

十、其他

$ git archive

<2>

<3>

git fetch和git pull都可以將遠端倉庫更新至本地那麼他們之間有何區別?想要弄清楚這個問題有有幾個概念不得不提。

fetch_head: 是乙個版本鏈結,記錄在本地的乙個檔案中,指向著目前已經從遠端倉庫取下來的分支的末端版本。

commit-id:在每次本地工作完成後,都會做乙個git commit 操作來儲存當前工作到本地的repo, 此時會產生乙個commit-id,這是乙個能唯一標識乙個版本的序列號。 在使用git push後,這個序列號還會同步到遠端倉庫。

有了以上的概念再來說說git fetch

git fetch:這將更新git remote 中所有的遠端倉庫所包含分支的最新commit-id, 將其記錄到.git/fetch_head檔案中

git fetch更新遠端倉庫的方式如下:

建立並更新本 地遠端分支。即建立並更新origin/*** 分支,拉取**到origin/***分支上。

在fetch_head中設定當前分支-origin/當前分支對應,如直接到時候git merge就可以將origin/abc合併到abc分支上。

(2)git fetch origin

只是手動指定了要fetch的remote。在不指定分支時通常預設為master

(3)git fetch origin dev

指定遠端remote和fetch_head,並且只拉取該分支的提交。

git pull : 首先,基於本地的fetch_head記錄,比對本地的fetch_head記錄與遠端倉庫的版本號,然後git fetch 獲得當前指向的遠端分支的後續版本的資料,然後再利用git merge將其與本地的當前分支合併。所以可以認為git pull是git fetch和git merge兩個步驟的結合。

git pull的用法如下:

git pull 《遠端主機名》 《遠端分支名》:《本地分支名》

//取回遠端主機某個分支的更新,再與本地的指定分支合併。

使用git log 檢視歷史提交

git stauts 檢視一下當前版本庫中檔案狀態

流程如下:

一、將分支切換到master

git checkout master

二、將**pull到本地

git pull

三、修改衝突

四、提交到本地

git add .

git commit -m 「merge」

五、切換到你所在分支dev

git checkout dev

六、merge

git merge master

七、將本地內容push到dev分支

git push

git命令總結

git config global user.name fangting git config global user.email 126.com git stash list 顯示git棧內的所有備份,可以利用這個列表來決定哪個地方恢復。git stash clear清空git棧。git stat...

Git命令總結

git 操作步驟 1.新建倉庫mkdir mygit 建立倉庫目錄 cd mygit 進入mygit進行操作 pwd 顯示mygit的路徑,此步驟可以不要 2.初始化git init 將目錄轉為git可以管理的倉庫 3.新增檔案新建乙個檔案 如txt檔案 一定要放到剛才新建的目錄下 子目錄也行 這裡...

git命令總結

1.使用repo命令批量提交多個庫的修改 repo forall project1 project2 c git add a repo forall project1 project2 c git commit m commit comment here repo forall project1 p...