中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Git的工作流程及常用的命令整理

發布時間:2021-08-19 13:40:34 來源:億速云 閱讀:110 作者:chen 欄目:大數據

本篇內容介紹了“Git的工作流程及常用的命令整理”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!


一、Git工作流程

Git的工作流程及常用的命令整理

以上包括一些簡單而常用的命令,但是先不關心這些,先來了解下面這4個專有名詞。

  • Workspace:工作區

  • Index / Stage:暫存區

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

  • Remote:遠程倉庫

工作區

程序員進行開發改動的地方,是你當前看到的,也是最新的。

平常我們開發就是拷貝遠程倉庫中的一個分支,基于該分支進行開發。在開發過程中就是對工作區的操作。

暫存區

.git目錄下的index文件, 暫存區會記錄git add添加文件的相關信息(文件名、大小、timestamp...),不保存文件實體, 通過id指向每個文件實體。可以使用git status查看暫存區的狀態。暫存區標記了你當前工作區中,哪些內容是被git管理的。

當你完成某個需求或功能后需要提交到遠程倉庫,那么第一步就是通過git add先提交到暫存區,被git管理。

本地倉庫

保存了對象被提交 過的各個版本,比起工作區和暫存區的內容,它要更舊一些。

git commit后同步index的目錄樹到本地倉庫,方便從下一步通過git push同步本地倉庫與遠程倉庫的同步。

遠程倉庫

遠程倉庫的內容可能被分布在多個地點的處于協作關系的本地倉庫修改,因此它可能與本地倉庫同步,也可能不同步,但是它的內容是最舊的。

小結

  1. 任何對象都是在工作區中誕生和被修改;

  2. 任何修改都是從進入index區才開始被版本控制;

  3. 只有把修改提交到本地倉庫,該修改才能在倉庫中留下痕跡;

  4. 與協作者分享本地的修改,可以把它們push到遠程倉庫來共享。

下面這幅圖更加直接闡述了四個區域之間的關系,可能有些命令不太清楚,沒關系,下部分會詳細介紹。

Git的工作流程及常用的命令整理

二、常用Git命令

Git的工作流程及常用的命令整理

網上找了個圖,別人整理的一張圖,很全很好,借來用下。下面詳細解釋一些常用命令。

HEAD

Git的工作流程及常用的命令整理

在掌握具體命令前,先理解下HEAD。

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

add

Git的工作流程及常用的命令整理

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

git add .添加當前目錄的所有文件到暫存區
git add <dir>添加指定目錄到暫存區,包括子目錄
git add <file1>添加指定文件到暫存區

commit

Git的工作流程及常用的命令整理

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

git commit -m <message>提交暫存區到本地倉庫,message代表說明信息
git commit <file1> -m <message>提交暫存區的指定文件到本地倉庫
git commit --amend -m <message>使用一次新的commit,替代上一次提交

branch

Git的工作流程及常用的命令整理

涉及到協作,自然會涉及到分支,關于分支,大概有展示分支,切換分支,創建分支,刪除分支這四種操作。

git branch列出所有本地分支
git branch -r列出所有遠程分支
git branch -a列出所有本地分支和遠程分支
git branch <branch-name>新建一個分支,但依然停留在當前分支
git checkout -b <branch-name>新建一個分支,并切換到該分支
git branch --track <branch><remote-branch>新建一個分支,與指定的遠程分支建立追蹤關系
git checkout <branch-name>切換到指定分支,并更新工作區
git branch -d <branch-name>刪除分支
git push origin --delete <branch-name>刪除遠程分支

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

merge

Git的工作流程及常用的命令整理

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

git fetch <remote>merge之前先拉一下遠程倉庫最新代碼
git merge <branch>合并指定分支到當前分支

一般在merge之后,會出現conflict,需要針對沖突情況,手動解除沖突。主要是因為兩個用戶修改了同一文件的同一塊區域。如下圖所示,需要手動解除。

Git的工作流程及常用的命令整理

rebase

Git的工作流程及常用的命令整理

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

在開始階段,我們處于new分支上,執行git rebase dev,那么new分支上新的commit都在master分支上重演一遍,最后checkout切換回到new分支。這一點與merge是一樣的,合并前后所處的分支并沒有改變。git rebase dev,通俗的解釋就是new分支想站在dev的肩膀上繼續下去。rebase也需要手動解決沖突。

rebase與merge的區別

現在我們有這樣的兩個分支,test和master,提交如下:

      D---E test
     /
A---B---C---F master

在master執行git merge test,然后會得到如下結果:

      D--------E
     /          \
A---B---C---F----G   test, master

在master執行git rebase test,然后得到如下結果:

A---B---D---E---C'---F'   test, master

可以看到,merge操作會生成一個新的節點,之前的提交分開顯示。而rebase操作不會生成新的節點,是將兩個分支融合成一個線性的提交。

如果你想要一個干凈的,沒有merge commit的線性歷史樹,那么你應該選擇git rebase
如果你想保留完整的歷史記錄,并且想要避免重寫commit history的風險,你應該選擇使用git merge

reset

Git的工作流程及常用的命令整理

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

git reset —soft <commit>只改變提交點,暫存區和工作目錄的內容都不改變
git reset —mixed <commit>改變提交點,同時改變暫存區的內容
git reset —hard <commit>暫存區、工作區的內容都會被修改到與提交點完全一致的狀態
git reset --hard HEAD讓工作區回到上次提交時的狀態

revert

Git的工作流程及常用的命令整理

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

revert與reset的區別

Git的工作流程及常用的命令整理

  • git revert是用一次新的commit來回滾之前的commit,git reset是直接刪除指定的commit。

  • 在回滾這一操作上看,效果差不多。但是在日后繼續merge以前的老版本時有區別。因為git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch時,導致這部分改變不會再次出現,減少沖突。但是git reset是之間把某些commit在某個branch上刪除,因而和老的branch再次merge時,這些被回滾的commit應該還會被引入,產生很多沖突。關于這一點,不太理解的可以看這篇文章。

  • git reset 是把HEAD向后移動了一下,而git revert是HEAD繼續前進,只是新的commit的內容和要revert的內容正好相反,能夠抵消要被revert的內容。

push

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

git push <remote><branch>上傳本地指定分支到遠程倉庫
git push <remote> --force強行推送當前分支到遠程倉庫,即使有沖突
git push <remote> --all推送所有分支到遠程倉庫

其他命令

git status顯示有變更的文件
git log顯示當前分支的版本歷史
git diff顯示暫存區和工作區的差異
git diff HEAD顯示工作區與當前分支最新commit之間的差異
git cherry-pick <commit>選擇一個commit,合并進當前分支

“Git的工作流程及常用的命令整理”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

git
AI

蓬溪县| 栾城县| 凭祥市| 武宣县| 通城县| 龙川县| 铅山县| 庐江县| 中西区| 夹江县| 临泉县| 陵水| 万载县| 鄂尔多斯市| 华亭县| 福安市| 藁城市| 武陟县| 温泉县| 普兰店市| 墨脱县| 墨玉县| 乌兰察布市| 台江县| 潞城市| 武强县| 霍山县| 福州市| 连州市| 中牟县| 泾阳县| 察雅县| 苍溪县| 临武县| 桦南县| 壶关县| 通海县| 合山市| 如皋市| 宁陕县| 郸城县|