Git 概念

Git 概念

1、Git 工做流程

 

  ~ Workspace:工做區git

  ~ Index/ Stage:暫存區fetch

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

  ~ Remote:遠程倉庫3d

工做區

  進行開發改動的地方,是當前的,也是最新的。日常咱們開發就是拷貝遠程倉庫中的一個分支,基於該分支進行開發。在開發過程當中就是對工做區的操做。版本控制

暫存區

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

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

本地倉庫

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

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

遠程倉庫

  遠程倉庫的內容可能被分佈在多個地點的處於協做關係的本地倉庫修改,所以它可能與本地倉庫同步,也可能不一樣步,可是它的內容是最舊的。同步

總結:

  1.任何內容都是在工做區中誕生和被修改;

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

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

  4.與協做者分享芬迪的修改,能夠把它們push到遠程倉庫來共享。

 

2、經常使用命令

HEAD

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

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

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

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

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

涉及到協做,天然會涉及到分支,關於分支,大概有展現分支,切換分支,建立分支,刪除分支這四種操做。

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

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

git fetch <remote> merge以前先拉一下遠程倉庫最新代碼 git merge <branch> 合併指定分支到當前分支 通常在merge以後,會出現conflict,須要針對衝突狀況,手動解除衝突。主要是由於兩個用戶修改了同一文件的同一塊區域。以下圖所示,須要手動解除。

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的一些經常使用命令及詳細闡述,相信能對Git有一個初步的認識。

相關文章
相關標籤/搜索