導航:首頁 > 程序命令 > git的常用命令有哪些

git的常用命令有哪些

發布時間:2022-09-19 21:22:37

1. git branch管理常用命令

git
branch管理常用命令查看本地分支[plain]git
branch
*
dev
master
*代表當前位於dev分支查看遠程分支[plain]git
branch
--remote
origin/dev
origin/master
創建分支[plain]git
checkout
-b
new_branch
注意,new_branch的代碼來自於當前分支切換分支[plain]git
checkout
another_branch
和創建分支就差-b參數push本地分支代碼到遠端伺服器[plain]git
push
origin
branch_name
如果遠端伺服器沒有該分支,將會自動創建pull遠端分支代碼到本地對應分支[plain]git
pull
origin
branch_name
刪除本地分支,首先切換到別的分支,然後才能刪除某個分支[plain]git
checkout
b
git
branch
-d
a
刪除遠程分支[plain]git
push
origin
--delete
branch_name
合並本地分支[plain]git
merge
b
假設當前分支為dev,上面的命令就是將本地的b分支代碼合並到當前分支dev中合並遠程分支,和前面的幾乎一樣,[plain]git
merge
origin/b
遠程分支b被合並到本地當前分支dev中了。

2. git中,文件的狀態

git中常用的一個命令便是,git status,該命令的作用是查看哪些文件處於什麼狀態.
可以用 git status 命令查看哪些文件處於什麼狀態。 如果在克隆倉庫後立即使用此命令,會看到類似這樣的輸出:
echo 'My Project' > README
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Untracked files:
(use "git add <file>..." to include in what will be committed)

nothing added to commit but untracked files present (use "git add" to track)

在狀態報告中,可以看到,出現了一個untracked files文件,readme.未跟蹤的文件意味著在之前的快照(提交)中沒有這些文件,git不會自動的將這些文件納入可追蹤的范圍,除非需要明確的指出我要跟蹤做這些文件.此時,可以執行:
git add readme.txt
再運行git status
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: README
可以看到readme文件處於被追蹤的狀態中,是被暫存的狀態.但是仍然沒有commit.

此時,如果我們做了修改,對於一個被追蹤的文件,進行了修改,如果你修改了一個CONTRIBUTING.md的已經被追蹤的文件,然後運行:
git status
則會出現以下內容:
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

意思為: 名為CONTRIBUTING.md已經跟蹤的文件發生了變化.但是還沒有被放入暫存區,如需要暫存本次修改,需要運行git add命令.
git add命令是一個多命令,可以使用將其從未追蹤文件變為已追蹤文件,還可以將已追蹤文件未修改的內容,變為已追蹤文件暫存.還能用戶合並時將沖突文件標記為已解決的狀態等.
此時,運行git status輸出為:
git add CONTRIBUTING.md
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

可以看到,此時輸出的意思為:兩個文件都已經暫存,在下次commit時,會一起提交到倉庫.

假設此時,需要繼續在修改CONTRIBUTING.md文件,此時再運行git status命令,會出現:
git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

此時,CONTRIBUTING.md文件同時出現在暫存區和非暫存區,是因為,git add文件只是暫存了上次執行git add命令時文件的暫存,如若繼續暫存,需要繼續運行git status
git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

如果我們需要查看當前工作區文件和暫存區文件的差異,可以使用git diff命令.若要查看已暫存的將要添加到下次提交里的內容,可以用 git diff --staged 命令。 這條命令將比對已暫存文件與最後一次提交的文件差異.

此時,可以進行commit,進行提交啦.現在的暫存區已經准備就緒,可以提交了。 在此之前,請務必確認還有什麼已修改或新建的文件還沒有 git add 過, 否則提交的時候不會記錄這些尚未暫存的變化。 這些已修改但未暫存的文件只會保留在本地磁碟。 所以,每次准備提交前,先用 git status 看下,你所需要的文件是不是都已暫存起來了, 然後再運行提交命令 git commit.

現在你已經創建了第一個提交! 可以看到,提交後它會告訴你,當前是在哪個分支(master)提交的,本次提交的完整 SHA-1 校驗和是什麼(463dc4f),以及在本次提交中,有多少文件修訂過,多少行添加和刪改過。

提交記錄的是放在暫存區域的快照.任何還未暫存的文件仍然保持已修改的狀態,可以在下次提交時納入版本管理,每次運行一次git commit都是對項目做一次快照,以後可以回到這個狀態,或者進行比較.

跳過使用暫存區域
盡管使用暫存區域的方式可以靜心准備要提交的細節,但是,有個問題就是繁瑣,git提供了一個暫存區域的方式,只要提交的時候,git commit -a,則git會將已經跟蹤過的文件暫存起來一起提交.從而省略一次git add,省略的步驟是,將那些已被追蹤的文件改為暫存.這是因為 -a 選項使本次提交包含了所有修改過的文件。 這很方便,但是要小心,有時這個選項會將不需要的文件添加到提交中。

查看git提交歷史,使用git log命令.會出現下面輸出:
$ git log
commit
Author: Scott Chacon [email protected]
Date: Mon Mar 17 21:52:11 2008 -0700

commit
Author: Scott Chacon [email protected]
Date: Sat Mar 15 16:40:33 2008 -0700

commit
Author: Scott Chacon [email protected]
Date: Sat Mar 15 10:31:28 2008 -0700

在不傳入任何參數的前提下,git log會按照時間順序列出所有的提交,按照時間順序倒排,commit之後是每次提交的SHA-1校驗和(是一個十六位的長度為四十的哈希值),以及作者信息和提交說明.

3. Git工作流程和常用命令分享

git是一個分布式版本控制軟體,最初由林納斯·托瓦茲創作,於2005年以GPL發布。最初目的是為更好地管理Linux內核開發而設計。林納斯·托瓦茲在編寫第一個版本時就使用了「git」這個名稱, 他將工具描述為「愚蠢的內容跟蹤器」。

[圖片上傳失敗...(image-c23291-1619063471664)]

四個專有名詞:

Workspace:工作區

Index / Stage:暫存區

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

Remote:遠程倉庫

打開本地生成的.git隱藏文件

創建新項目gittest

創建新文件test.txt

git add <file>

git status顯示有變更的文件

git restore <file> 撤迴文件修改內容

git commit –m 「注釋」

修改內容-> 執行git diff工作區和本地倉庫的差異

git log顯示當前分支的版本歷史

git reset --hard HEAD^ 當前版本回退到上一個版本

git reset --hard HEAD^ ^ 當前版本回退到上上一個版本

git reset --hard HEAD~100 回退到前100個版本

恢復已經刪除的版本

git reflog 展示所有的提交記錄

git reset --hard <版本號> 回退到指定版本

git push origin master 將本地master分支推送到遠程master分支,相當於創建遠程分支

git checkout -b dev = git branch dev + git checkout dev 創建並切換分支

git branch 不帶參數,會列出所有本地的分支;帶參數表示創建分支

git branch –d name 刪除本地分支(-D表示強制刪除)

git branch –r 不帶參數,會列出所有遠程的分支

git branch --set-upstream-to=origin/<branch本地> 本地和遠程分支關聯

git push origin –delete <branch> 刪除遠程分支

git merge release用於合並指定分支到當前分支上

註:Fast-forward表示的合並是「快進模式」,也就是直接把master指向dev的當前提交,所以合並速度非常快。在這種模式下,刪除分支後,會丟掉分支日誌信息。可以使用帶參數 --no-ff來禁用」Fast forward」模式。

git merge --no-ff -m 「注釋」dev

git checkout release 切換release分支

vim test.txt 修改某條內容

git commit test.txt -m 「release修改某條內容」

git checkout master 切換master分支

vim test.txt 修改某條同release內容

git commit test.txt -m 「master修改某條內容」

git merge release 顯示沖突

git status 顯示沖突提示

Git用<<<<<<<,=======,>>>>>>>標記出不同分支的內容,其中>>>>release 是指release上修改的內容
vim test.txt 修改內容

git add test.txt

git commit -a -m 「fix conflict」

當前分支有沒有提交但也不合適現在就提交的內容,Git提供了暫儲功能stash

git checkout release

vim test.txt 修改test.txt內容

git checkout develop 此時會提示Aborting

git status 查看當前狀態

Git stash list 查看所有暫儲列表

git stash apply恢復,恢復後stash內容並不刪除,你需要使用命令git stash drop來刪除;
另一種方式是使用git stash pop,恢復的同時把stash內容也刪除了

創建Git Tag並推送遠程伺服器

git tag -a V1.0.0 –m「注釋」 //創建TAG

git push origin V1.0.0 //推送到遠程伺服器

git push origin --tag //提交所有tag至伺服器

git tag -d V1.0.0 //刪除本地標簽

git push origin --delete tag <tagname> //刪除遠程標簽

HEAD,它始終指向當前所處分支的最新的提交點。你所處的分支變化了,或者產生了新的提交點,HEAD就會跟著改變

add相關命令很簡單,主要實現將工作區修改的內容提交到暫存區,交由git管理。

git add .添加當前目錄的所有文件到暫存區

git add 添加指定目錄到暫存區,包括子目錄

git add 添加指定文件到暫存區

commit相關命令也很簡單,主要實現將暫存區的內容提交到本地倉庫,並使得當前分支的HEAD向後移動一個提交點。

git commit -m 提交暫存區到本地倉庫,message代表說明信息

git commit --amend -m 使用一次新的commit,替代上一次提交

上傳本地倉庫分支到遠程倉庫分支,實現同步。

git push 上傳本地指定分支到遠程倉庫

git push --force強行推送當前分支到遠程倉庫,即使有沖突

git push --all推送所有分支到遠程倉庫

關於分支,大概有展示分支,切換分支,創建分支,刪除分支這四種操作。

git branch列出所有本地分支

git branch -r列出所有遠程分支

git branch -a列出所有本地分支和遠程分支

git branch 新建一個分支,但依然停留在當前分支

git checkout -b 新建一個分支,並切換到該分支

git checkout 切換到指定分支,並更新工作區

git branch -d 刪除分支

git push origin --delete 刪除遠程分支

關於分支的操作雖然比較多,但都比較簡單好記

merge命令把不同的分支合並起來。在實際開放中,我們可能從master分支中切出一個分支,然後進行開發完成需求,中間經過R3,R4,R5的commit記錄,最後開發完成需要合入master中,這便用到了merge。

git merge 合並指定分支到當前分支

註:如果在merge之後,出現conflict,主要是因為兩個用戶修改了同一文件的同一塊區域。需要針對沖突情況,手動解除沖突。

rebase又稱為衍合,是合並的另外一種選擇。

在開始階段,我們處於new分支上,執行git rebase dev,那麼new分支上新的commit都在dev分支上重演一遍,最後checkout切換回到new分支。這一點與merge是一樣的,合並前後所處的分支並沒有改變。

git rebase dev,通俗的解釋就是new分支想站在dev的肩膀上繼續下去。

rebase操作不會生成新的節點,是將兩個分支融合成一個線性的提交。

rebase也需要手動解決沖突。

1.如果你想要一個干凈的,沒有merge commit的線性歷史樹,那麼你應該選擇git rebase

2.如果你想保留完整的歷史記錄,並且想要避免重寫commit history的風險,你應該選擇使用git merge

reset命令把當前分支指向另一個位置,並且相應的變動工作區和暫存區。

git reset —soft 只改變提交點,暫存區和工作目錄的內容都不改變

git reset —mixed 改變提交點,同時改變暫存區的內容

git reset —hard 暫存區、工作區的內容都會被修改到與提交點完全一致的狀態

git revert用一個新提交來消除一個歷史提交所做的任何修改。

在回滾這一操作上看,效果差不多。git revert是用一次新的commit來回滾之前的commit,git reset是直接刪除指定的commit。

在 Git工作區的根目錄創建一個特殊的.gitignore文件。

在.gitignore文件中,添加需要忽略的文件。

git rm -r --cached . //將倉庫中的index遞歸刪除

git add . //重新添加倉庫索引

git commit -m 「update git.ignore」 //提交

git branch --set-upstream-to=origin/<branch> <branch> //重現將本地倉庫和遠程倉庫關聯

最後,如果此篇博文對你有所幫助,別忘了點個贊喲~

4. 【學了就忘】Git操作 — 14.Git基本操作(一)

要對現有的某個項目開始使用Git管理,只需到此項目所在的根目錄,執行 git init 命令即可。

准備一個新的Git本地版本庫:

說明:初始化Git倉庫後,在當前目錄下會出現一個名為 .git 的目錄,所有Git需要的數據和資源都存放在這個目錄中。

不過目前,僅僅是按照既有的結構框架,初始化好了Git倉庫中所有的文件和目錄,但我們還沒有開始跟蹤管理項目中的任何一個文件。

使用 git status 命令進行查看。

進入本地版本庫查看工作區、暫存區中文件的狀態。

1)創建文件後查看工作區、暫存區中文件的狀態

我們在倉庫目錄中創建一個 readme.txt 文件後,在執行 git status 命令。

說明:

2)將工作區的文件添加到暫存區

執行 git add 命令,將 readme.txt 文件添加到暫存區。

3)再次查看工作區、暫存區狀態

執行 git status 命令查看工作區、暫存區狀態。

說明:

總結:

只要在 "Changes to be committed" 這行下面顯示的文件,就說明是已暫存狀態。

如果此時提交,那麼該文件此時此刻的版本,將被留存在歷史記錄中。

在 git add 命令後面可以指明要跟蹤的文件或目錄路徑。

如果是目錄的話,就說明要遞歸跟蹤該目錄下的所有文件。(其實 git add 命令的潛台詞就是把目標文件快照放入暫存區域,同時未曾跟蹤過的文件標記為已跟蹤。)

4)將文件從暫存區撤回到工作區

執行 git rm --cached 命令,將 readme.txt 文件從暫存區撤回到工作區。

並執行 git status 命令查看工作區、暫存區狀態。

可以看到結果, readme.txt 文件又成為了一個未被Git追蹤的文件。

5. git網頁版怎麼查看操作命令

進入網頁版之後滑鼠點擊右鍵,選擇網頁檢索,在裡面可以查到命令記錄

6. 幾個常用的git命令

1.安裝Git

7. git常用操作

如果不用"pick"或者"edit",而是指定"squash",Git 會同時應用那個變更和它之前的變更並將提交說明歸並。因此,如果想將這三個提交合並為單一提交, 可以將腳本修改成這樣

保存並退出編輯器,Git 會應用全部三次變更然後將送回編輯器來歸並三次提交說明。

然後保存,就會擁有包含前三次提交的全部變更的單一提交 。

註:最頂行pick 不能修改為squash

當你正在進行項目中某一部分的工作,裡面的東西處於一個比較雜亂的狀態,而你想轉到其他分支上進行一些工作。問題是,你不想提交進行了一半的工作,否則以後你無法回到這個工作點。解決這個問題的辦法就是 git stash 命令。

「『儲藏」「可以獲取工作目錄的中間狀態——也就是修改過的被追蹤的文件和暫存的變更——並將它保存到一個未完結變更的堆棧中,隨時可以重新應用。

當追准備切換分支,但是還不想提交你正在進行中的工作;所以儲藏這些變更。為了往堆棧推送一個新的儲藏,只要運行? git stash :

這時,你可以方便地切換到其他分支工作;你的變更都保存在棧上。要查看現有的儲藏,你可以使用? git stash list :

git stash apply :重新應用你剛剛實施的儲藏

git stash apply stash@{number} :應用更早的儲藏

只需回到需要合並的源分支,運行 git merge 命令指定要合並進來的分支即可;Git 作了合並,但沒有提交,它會停下來等你解決沖突。要看看哪些文件在合並時發生沖突,可以用 git status 觀察

任何包含未解決沖突的文件都會以未合並(unmerged)的狀態列出。Git 會在有沖突的文件里加入標準的沖突解決標記,可以通過它們來手工定位並解決這些沖突。可以看到此文件包含類似下面這樣的部分:

可以看到 ======= 隔開的上半部分,是? HEAD (即 master 分支,在運行 merge 命令時所切換到的分支)中的內容,下半部分是在 iss53 分支中的內容。解決沖突的辦法無非是二者選其一或者親自整合到一起。比如可以通過把這段內容替換為下面這樣來解決:

在解決了所有文件里的所有沖突後,運行? git add ?將把它們標記為已解決狀態(譯註:實際上就是來一次快照保存到暫存區域。)

pull時為了防止更改後pull Feiled的出現,先執行commit,stash or revert。

8. git如何查看當前分支是從哪個分支拉的

Git可以使用git reflog --date=local | grep +分支名來查看當前分支是從哪個分支拉下來的。

可以使用git log --graph --decorate --oneline --all來查看當前分支來查看是從哪個分支拉的。

用一個git branch這個比較萬能的命令來查看當前分支是從哪個分支拉取的。

(8)git的常用命令有哪些擴展閱讀:

Git的功能特性:

從伺服器上克隆完整的Git倉庫(包括代碼和版本信息)到單機上。

在自己的機器上根據不同的開發目的,創建分支,修改代碼。

在單機上自己創建的分支上提交代碼。

在單機上合並分支。

把伺服器上最新版的代碼fetch下來,然後跟自己的主分支合並。

生成補丁(patch),把補丁發送給主開發者。

看主開發者的反饋,如果主開發者發現兩個一般開發者之間有沖突(他們之間可以合作解決的沖突),就會要求他們先解決沖突,然後再由其中一個人提交。如果主開發者可以自己解決,或者沒有沖突,就通過。

一般開發者之間解決沖突的方法,開發者之間可以使用pull 命令解決沖突,解決完沖突之後再向主開發者提交補丁。

Git常用基本命令

gitinit:創建一個版本庫。

git add:增加內容跟蹤信息。

gitcommit:提交內容到版本庫。

gitstatus:看 git 的狀態提示。

gitshow-branch:這個命令讓我們看到版本庫的發展記錄。

參考資料來源:網路-Git

9. 【Git】checkout 用法總結

切克鬧(checkout)作為git中最為常用的命令之一,對它使用的熟練程度直接決定了你對git理解和掌握的熟練程度,因此我們有理由為這個命令好好的做一下總結。

checkout最常用的用法莫過於對於工作分支的切換了:

該命令會將當前工作分支切換到branchName。另外,可以通過下面的命令在新分支創建的同時切換分支:

該命令相當於下面這兩條命令的執行結果:

該命令的完全體為:

該命令的一個應用場景為:當我們剛從git上clone一個項目後,我們可以查看該項目的分支情況

可以看到,克隆完後,只會默認創建一個master本地分支,其他都是遠程分支,此時如果我們想切換到newBranch的遠程分支該怎麼操作呢?方法有很多種,我們簡單介紹兩種:
方法一:使用git checkout -b

方法二:使用git branch <branchname> [<start-point>]

方法一其實是方法二的簡化版

要想更深入的了解checkout,我們需要了解checkout的作用機制。該命令的主要關聯目標其實是.git 文件夾下的HEAD文件,我們可以查看工程下面的.git文件夾:

該文件夾下HEAD文件記錄了當前HEAD的信息,繼續查看HEAD文件:

可以看到當前HEAD文件指向了refs/heads路徑下的master文件,該文件記錄了master分支最近的一次commit id,說明當前HEAD指向了master分支。如果我們將當前分支切換到newBranch 分支,我們再看HEAD文件:

可以看到HEAD文件內容指向了newBranch分支

用法1:

該命令主要用於檢出某一個指定文件。
如果不填寫commit id,則默認會從暫存區檢出該文件,如果暫存區為空,則該文件會回滾到最近一次的提交狀態。
例如:
當暫存區為空,如果我們想要放棄對某一個文件的修改,可以用這個命令進行撤銷:

如果填寫commit id(既可以是commit hash也可以是分支名稱還可以說tag,其本質上都是commit hash),則會從指定commit hash中檢出該文件。用於恢復某一個文件到某一個提交狀態。

用法2:

該命令是文章開頭部分所說的checkout常見用法的擴展,我們可以指定某一個分支或者某一次提交來創建新的分支,並且切換到該分支下,該命令相當於下面兩條命令的執行結果:

用法3:

該命令主要加了一個可選參數B,如果已經存在了同名的分支,使用 git checkout -b <new_branch>會提示錯誤,加入-B可選參數後會強制創建新分支,並且會覆蓋原來存在的同名分支。

用法4:

假如你的某個分支上,積累了無數次的提交,你也懶得去打理,列印出的log也讓你無力吐槽,那麼這個命令將是你的神器,它會基於當前所在分支新建一個赤裸裸的分支,沒有任何的提交歷史,但是當前分支的內容一一俱全。新建的分支,嚴格意義上說,還不是一個分支,因為HEAD指向的引用中沒有commit值,只有在進行一次提交後,它才算得上真正的分支。

用法5:

這個命令適用於在切換分支的時候,將當前分支修改的內容一起打包帶走,同步到切換的分支下。
有兩個需要注意的問題。
第一,如果當前分支和切換分支間的內容不同的話,容易造成沖突。
第二,切換到新分支後,當前分支修改過的內容就丟失了。
所以這個命令,慎用

用法6:

這個命令可以用來打補丁。這個命令主要用來比較兩個分支間的差異內容,並提供互動式的界面來選擇進一步的操作。這個命令不僅可以比較兩個分支間的差異,還可以比較單個文件的差異哦!

註:文中如有任何錯誤,請各位批評指正!

閱讀全文

與git的常用命令有哪些相關的資料

熱點內容
我的世界怎麼在聯機大廳做伺服器 瀏覽:290
分手程序員 瀏覽:446
php將html導出為word 瀏覽:800
騰訊加密視頻能破解嗎 瀏覽:1007
反編譯後導入eclipse 瀏覽:947
買阿里雲伺服器有郵箱嗎 瀏覽:825
pdf卡片2004 瀏覽:309
e算量加密鎖檢測不到 瀏覽:776
python串口讀取數據類型 瀏覽:760
17年新款寶來壓縮機不跳 瀏覽:107
王者打著為什麼伺服器升級 瀏覽:847
aliyunlinux安裝 瀏覽:981
jdk8分層編譯 瀏覽:453
單片機脈沖計數程序 瀏覽:825
原相機文件夾名 瀏覽:330
淘寶雲伺服器靠什麼賺錢 瀏覽:136
單片機同步通信 瀏覽:259
游戲伺服器如何選 瀏覽:746
和平精英蘋果轉安卓怎麼轉不了 瀏覽:52
偉福單片機實驗箱 瀏覽:157