Git 工作原理與常用命令

2021-10-10 03:03:38 字數 4119 閱讀 8091

workspace:工作區

index / stage:暫存區

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

remote:遠端倉庫

工作區間: 即我們建立的工程檔案, 在編輯器可直觀顯示;

快取區: 只能通過git gui或git shell 視窗顯示,提交**、解決衝突的中轉站;

本地倉庫: 只能在git shell 視窗顯示,連線本地**跟遠端**的樞紐,不能聯網時本地**可先提交至該處;

接下來, 我們以三個實際操作的例子講解git的日常,**如何在上述4個區域流動。

乙個正常的**推送流程:

指令解釋:

git init表示在當前的專案目錄中生成本地的git管理;

git add readme.md將「readme.md」檔案儲存至快取區,實際開發中一般使用git add -a,使用-a:將新增、刪除、修改的檔案改動全儲存至快取區;

git commit -m "first commit"將**從快取區儲存至本地倉庫,實際開發中一般使用git commit -am "說明的文字",使用 -a:如果沒檔案更改操作(增、刪、改名)就可以省略git add指令;

git remote add origin將本地倉庫與指定的遠端倉庫建立 聯絡;

push -u origin master將本地倉庫**推送至遠端倉庫,實際開發中 該指令後需要輸入github 賬號以及密碼。(首次提交注意別遺漏-u指定預設主機)

以上指令正常執行後, 本地倉庫的**就提交到遠端倉庫了:

作用命令

列出所有本地分支

$ git branch

列出所有遠端分支

$ git branch -r

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

$ git branch -a

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

$ git branch [branch-name]

新建乙個分支,並切換到該分支$ git checkout -b [branch]

新建乙個分支,指向指定commit

$ 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]

選擇乙個commit,合併進當前分支

$ git cherry-pick [commit]

刪除分支

$ git branch -d [branch-name]

刪除遠端分支

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

刪除遠端分支

$ git branch -dr [remote/branch] 作用

命令新增指定檔案到暫存區

$ 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 status看看是否有檔案需要git add):

提交是只將**提交到本地**倉庫區。

作用命令

提交暫存區到倉庫區

$ git commit -m [message]

提交暫存區的指定檔案到倉庫區

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

提交工作區自上次commit之後的變化,直接到倉庫區

$ git commit -a

提交時顯示所有diff資訊

$ git commit -v

使用一次新的commit,替代上一次提交。

如果**沒有任何新變化,則用來改寫上一次commit的提交資訊

$ git commit --amend -m [message]

重做上一次commit,幷包括指定檔案的新變化

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

git -commit -m 與git commit -am的區別

注意:git -commit -m 與git commit -am的區別。 在此之前,你要理解,什麼是檔案的跟蹤狀態。

總結

這兩個命令的區別的關鍵就是git add命令

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

我們需要用git add命令來跟蹤新檔案,但如果使用git commit -am可以省略使用git add命令將已跟蹤檔案放到暫存區的功能

git add 在解決衝突時使用

解決衝突後提交本地修改的思路大概如下:

將本地修改的**放在快取區, 然後從遠端倉庫拉取最新**,拉取成功後再從快取區將修改的**取出, 這樣最新**跟本地修改的**就會混雜在一起, 手工解決衝突後, 提交解決衝突後的**。

作用

命令$ git fetch [remote]

顯示所有遠端倉庫

$ git remote -v

取回遠端倉庫的變化,並與本地分支合併$ git pull [remote] [branch]

上傳本地指定分支到遠端倉庫$ git push [remote] [branch]

強行推送當前分支到遠端倉庫,即使有衝突

$ git push [remote] --force

推送所有分支到遠端倉庫

$ git push [remote] --all

git pull命令相當於git fetch+ git merge命令。git fetch用於獲取遠端某個倉庫的某個分支,然後git merge會將拉取的分支與本地分支進行合併。

如果你想拉取遠端倉庫的某個分支,那麼使用git pull

命令。例如下面的命令會拉取遠端develop分支到本地。

場景一

我在本地修改了**時,其他人又推送了最新的**在遠端倉庫,這時我想保留本地的一些修改,又想拉取最新的**。怎麼辦呢?

場景二

讓本地分支與遠端分支關聯

git branch --set-upstream-to=origin/dev

Git原理及常用命令

1,git版本控制原理圖 2,檢視版本或是否安裝命令 linux gitwindows git version 3,git安裝命令 linux sudo apt get install git windows 注意 git config global user.name your name git ...

git 工作中常用命令

1.刪除本地分支 git branch d branchname 2.將本地分支推到遠端倉庫,並在遠端倉庫建立新的分支 git push origin localbranch romotebranch 3.合併兩個分支 先切換到目標分支targetbranch,再進行merge操作 git chec...

git工作中常用命令

git config global user.name your name here git config global user.email your email here git config l 檢視你當前的配置 ssh keygen 預設設定就可以 cat ssh id rsa.pub 生成...