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 add命令來跟蹤新檔案,但如果使用git commit -am可以省略使用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 生成...