1. 程式人生 > >Git工作區,暫存區,遠端倉庫及分支管理

Git工作區,暫存區,遠端倉庫及分支管理

一,Git的工作區與暫存區
Git的工作區(working directory),就像我們平時看到的目錄一樣。Git的版本庫中包含了暫存區(stage或者index)以及Git為我們自動建立的第一個分支master,和指向master的一個指標HEAD。
當我們把檔案往Git版本庫裡新增的時候,git add命令實際上是把檔案修改新增到暫存區,git commit命令實際上是把暫存區的所有內容提交大當前分支。對於我們每次所做的修改,如果不add到暫存區,就不會加入到commit中。
1),git checkout – file 命令可以丟棄工作區的修改,可以分為兩種情況:
一種是檔案自修改後還沒有被放到暫存區,撤銷修改就可以回到和版本庫一模一樣的狀態;
一種是檔案已經新增到暫存區後,又做了修改,撤銷修改就回到新增暫存區後的狀態。
2),git reset HEAD file

可以把暫存區的修改撤銷掉,重新放回工作區,HEAD表示最新的版本。
小結:
情形1:當你亂改了工作區某個檔案的內容,想直接丟棄工作區的修改時,用命令git checkout – file。
情形2:當你不但改亂了工作區某個檔案的內容,還新增到了暫存區時,想丟棄修改,分兩步,第一步使用命令git reset HEAD file,就回到了情形1,第二部步按情形1操作。
3),git rm 命令用於刪除一個檔案,如果一個檔案已經被提交到版本庫,則不用擔心會誤刪,但要小心,因為只能恢復檔案到最新版本,會丟失最近一次提交後所做的修改。

二,遠端倉庫
Git是分散式版本控制系統,同一個Git倉庫,可以分佈到不同的機器上,Github網站提供Git倉庫託管服務,只要註冊一個Github賬號,就可以免費獲得Git遠端倉庫,本地的Git倉庫和Github倉庫之間的傳輸是通過SSH加密的,所以需要一些配置(SSH:Secure Shell,是一種網路安全協議,主要用於登陸遠端計算機的加密過程。)
第一步:建立SSH Key,在使用者主目錄下,看看有沒有.ssh目錄,如果有,再看該目錄下有沒有id_rsa和 id_raspub這兩個檔案,如果已經有了,可以直接跳到下一步,如果沒有,開啟Shell(Windows下開啟Git Bash),建立SSH Key:

$ ssh-keygen -t rsa -C "your [email protected]"

需要把郵件地址換成自己的郵件地址,然後一路回車,使用預設值即可。完成後,可以在使用者主目錄裡找到.ssh目錄,裡面有id_rsa和id_rsa.pub兩個檔案,這兩個檔案就是SSH Key祕鑰對,id_rsa是私鑰,id_rsa.pub是公鑰。
第二步:登陸Github,進入SSH Key頁面,然後Add SSH Key,Title任意填寫,在Key文字框中貼上id_rsa.pub檔案的內容。
因為Github需要識別出你推送的提交確實是你推送的,而不是別人冒充的,而Git支援SSH協議,所以,Github只要知道了你的公鑰,就可以確認只有你自己才能推送。
1)關聯遠端倉庫:

使用命令git remote add origin [email protected]:path/repo-name.git 關聯一個遠端庫。
**2)新增遠端倉庫:**git push命令:把本地庫的內容推送到遠端,實際上是把當前分支master推送到遠端。由於遠端庫是空的,所以在第一次推送master分支時,加上引數-u,這樣,Git不僅會把本地的master分支內容推送到遠端新的master分支,還會把本地的master分支和遠端的master分支關聯起來,在以後推送或者拉取的時候就可以簡化命令。(第一次推送的命令為$ git push -u origin master 以後每次推送只需使用命令$ git push origin master
**3)從遠端庫克隆:**git clone命令可以從遠端庫進行克隆,要克隆一個倉庫,首先必須知道倉庫的地址。例如,遠端庫有一個名為gitskills的倉庫,在本地進行克隆的命令如下:

$ git clone git@github.com:path/gitskills.git

三,分支管理
**1)建立與合併分支:**git checkout命令加上-b引數表示建立並切換分支,即$ git checkout -b dev 這一條相當於以下兩條命令:

$ git branch dev
$ git checkout dev

git branch命令可以檢視當前分支,該命令會列出所有分支,當前分支前面會標一個*號。
這裡寫圖片描述

git merge命令用於合併指定分支到當前分支。
git branch -d dev 命令用於刪除dev分支。
總結:
檢視分支:git branch
建立分支:git branch
切換分支:git checkout
建立+切換分支:git checkout -b
合併某分支到當前分支:git merge
刪除分支:git branch -d
檢視合併分支圖:git log –graph

在合併分支的時候如果加上了–no-ff引數就可以用普通模式合併,合併後的歷史有分支,能看出來曾經做過的合併,而fast forward合併就看不出來曾經做過的合併。
2)Bug分支:修復bug時,通過建立新的bug分支進行修復,然後合併,最後刪除。如果手頭的工作還沒有完成時,可以先把工作現場git stash一下,然後再去修復bug,修復後,再git stash pop,回到工作現場。git stash命令可以把當前工作現場“儲藏起來”,等以後恢復現場後繼續工作。用git stash list 命令檢視工作空間存在哪裡,Git會把stash內容存在某個地方,需要恢復時有兩個辦法:
一是用git stash apply 恢復,但是恢復之後,stash內容並不刪除,需要使用git stash drop來刪除。
另一種方式是用git stash pop,恢復的同時把stash內容也刪除了。
3)Feature分支:一般會每新增一個新的功能時,會新建一個feature分支,在上面開發,完成後,合併,最後,刪除該feature分支。如果要丟棄一個沒有被合併過的分支,可以通過git branch -D <name>強行刪除。
4)多人協作: 當從遠端倉庫克隆時,Git會自動把本地的master分支和遠端的master分支對應起來,並且遠端倉庫的預設名字是origin。要檢視遠端庫的資訊,用命令git remote ,或者用命令git remote -v 顯示更詳細的資訊。
推送分支: 就是把該分支上的所有本地提交推送到遠端庫,推送時,要指定本地分支,這樣Git就會把該分支推送到遠端庫對應的遠端分支上:$ git push origin master
並不是一定要把本地分支往遠端推送,一般:
master分支是主分支,因此要時刻與遠端同步;
dev分支是開發分支,團隊所有成員都需要在上面工作,所以也需要與遠端同步;
bug分支只用於在本地修復bug,就沒有必要推到遠端了;
feature分支是否推到遠端,取決於你是否和你的小夥伴合作在上面開發。
抓取分支: 從遠端抓取分支,使用git pull,如果有衝突,要先處理衝突。
多人協作的工作模式通常如下:
1,首先,可以試圖用git push origin branch-name推送自己的修改;
2,如果推送失敗,則因為遠端分支比你的本地更新,需要先用git pull 抓取遠端的新提交,並試圖合併;
3,如果合併有衝突,則解決中途,並在本地提交;
4,沒有衝突或者解決掉衝突之後,再用git push origin branch-name推送就能成功;
如果git pull提示“no tracking information”,則說明本地分支和遠端分支的連結關係沒有建立,則用命令git branch --set-upstream branch-name origin/branch-name
在本地建立和遠端分支對應的分支:git checkout -b branch-name origin/branch-name

相關推薦

Git工作遠端倉庫分支管理

一,Git的工作區與暫存區 Git的工作區(working directory),就像我們平時看到的目錄一樣。Git的版本庫中包含了暫存區(stage或者index)以及Git為我們自動建立的第一個分支master,和指向master的一個指標HEAD。 當

Git入門——遠端倉庫分支管理

關於本地版本庫的操作,請見: Git入門——本地版本庫操作 本篇提到的所有命令: 小結 前面提到,Git相對於傳統的SVN有著很大的優勢,其中之一就在於集中式系統中,版本庫只能存在於中央伺服器上;而在Git中,版本庫可以克隆多個,甚至在同一臺主機中也可以克隆多個版本庫。當

Git學習筆記3——工作以及版本變更

暫存區 所有 cto tag clas 內容 blank 文件 set 工作區(Working Directory) 就是你在電腦裏能看到的目錄,比如我的Git_Learning文件夾就是一個工作區。 版本庫(Repository) 工作區有一個隱藏目錄.git,這個不

Git 工作和版本庫

git基本概念我們先來理解下Git 工作區、暫存區和版本庫概念工作區:就是你在電腦裏能看到的目錄。暫存區:英文叫stage, 或index。一般存放在 ".git目錄下" 下的index文件(.git/index)中,所以我們把暫存區有時也叫作索引(index)。版本庫:工作區有一個隱藏目

了解Git工作

mas 新建 osi alt tro 而是 track 指針 由於 Git有工作區,暫存區之分。 1.工作區 我們電腦上的某個被Git管理的文件夾,就是一個工作區。 比如說我的GitWorkText文件夾,如圖: 2.版本庫(Repository) 在工作區有一個隱藏目

Git】(1)---工作、版本庫、遠程倉庫

size 一個 工作區 本地 -s 新建 這樣的 cache 通過 工作區、暫存區、版本庫、遠程倉庫 一、概念 1、四個工作區域 Git本地有四個工作區域:工作目錄(Working Directory)、暫存區(Stage/Index)、資源庫(Repos

Git的學習與使用(四)——Git 工作和版本庫

基本概念 我們先來理解下Git 工作區、暫存區和版本庫概念 工作區:就是你在電腦裡能看到的目錄。 暫存區:英文叫stage, 或index。一般存放在 ".git目錄下" 下的index檔案(.git/index)中,所以我們把暫存區有時也叫作索引(index)。 版本庫:工作區有一個隱

GIt學習第二天之版本回退、工作

 搬運自 ‘廖雪峰的官方網站’ 地址:https://www.liaoxuefeng.com/ 1.版本回退   在Git中,我們用git log命令顯示從最近到最遠的提交日誌,如果嫌輸出資訊太多,看得眼花繚亂的,可以試試加上--pretty=oneline引數:      你看到的一大串類

瞭解git工作

瞭解git的工作區和暫存區 工作區:               git操作的當前目錄(該目錄下有.git 檔案,負責跟蹤管理版本庫)

GIT版本回退、工作管理修改、提交修改、撤銷修改、刪除檔案

git status命令可以讓我們時刻掌握倉庫當前的狀態。比如哪個檔案被修改過,並且是否提交過。 git diff具體檔名.字尾名命令可以檢視某個檔案修改前後的區別,顯示的格式正是Unix通用的diff格式。 版本回退: 版本回退是有條件的,就是你還沒有把自己的本地版本

Git工作、版本庫—— Git 學習筆記 15

Git 的工作區、暫存區、版本庫 大家都知道,在 Git 系統中有 “三棵樹” 的概念。 注意:“樹” 在這裡的意思是 “檔案集合”,而不是指特定的資料結構。 基本概念 樹 用途 HEAD(版本庫) 上一次提交的快照,下一次提交的父結點

git學習(廖雪峰git網站)(4)---工作

(1)名詞解釋: 工作區(Working Directory) 就是你在電腦裡能看到的目錄,比如你所建的資料夾就是一個工作區; 版本庫(Repository) 工作區有一個隱藏目錄.git,這個不算工作區,而是Git的版本庫。 Git的版本庫裡存了很多東西,其

Git工作與版本庫

本篇博文旨在介紹git的工作區,暫存區和版本庫的概念;並說明使用git add、git commit 等指令時,對工作區,暫存區以及版本庫分別造成的結果; 對於會使用git的人,git add,gi

git知識總結3——工作

Git和其他版本控制系統如SVN的一個不同之處就是有暫存區的概念。 先來看名詞解釋。 版本庫(Repository) 工作區有一個隱藏目錄.git,這個不算工作區,而是Git的版本庫。 Git的版本庫裡存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區,還有Git為

2.Git工作和版本庫(慕課網)

先來理解下Git工作區、暫存區和版本庫概念 工作區:就是你在電腦裡能看到的目錄。 暫存區:英文叫stage, 或index。一般存放在".git目錄下" 下的index檔案(.git/index)中,所以我們把暫存區有時也叫作索引index。 版本庫:工作區

Git使用手冊/Git教程:Git的使用:工作、本地倉庫遠端倉庫

相關文章:工作區、暫存區、本地倉庫、遠端倉庫1.   概念工作區:工作區就是你克隆專案到本地後,專案所在的資料夾目錄。暫存區:用於儲存工作區中新增上來的變更(新增、修改、刪除)的檔案的地方。操作時,使用

Git 學習筆記 - 04 - Git 工作的概念

Git 學習筆記 - 04 - Git 工作區和暫存區的概念 注:本文參照的是廖雪峰老師的Git教程 Git 工作區和暫存區的概念 工作區: ​ 就是你在電腦裡能夠看到的目錄。 ​ 我的理解:就是你受 Git 管理的檔案所在的目錄。 版本庫: ​ 工作區中有一個隱

Git命令列基礎(第三課) - 工作

工作區 .git所在的目錄 暫存區 存在於.git隱藏資料夾內 將"工作區"的變更新增到"暫存區" // 將檔案的修改、檔案的刪除,新增到暫存區。 $ git add -u (只能操作跟蹤過的檔案) // 將檔案的修改,檔案的新建,新增到暫存區。 $ git add

git -- 工作、版本庫

工作區、暫存區 工作區:就是你在電腦裡能看到的目錄。 暫存區:英文叫stage, 或index。一般存放在 “.git目錄下” 下的index檔案(.git/index)中,所以我們把暫存區有時也叫作索引(index)。 版本庫:工作區有一個隱藏目錄.git,這個不算工作區,而是Git的版本庫。

Git工作流程、 工作和版本庫

Git 工作流程 本章節我們將為大家介紹 Git 的工作流程。 一般工作流程如下: 克隆 Git 資源作為工作目錄。 在克隆的資源上新增或修改檔案。 如果其他人修改了,你可以更新資源。 在提交前檢視修改。 提交修改。 在修改完成後,如果發現錯誤,可以撤回提交併