1. 程式人生 > >Git基本核心操作總結

Git基本核心操作總結

git 與 svn 的區別

  • 儲存方式
  • 使用方式
  • 管理模式

git 提交程式碼流程

本地開發分支,使用 add 命令將修改的內容新增到本地快取空間,通過 commit 命令將新增的內容提交到本地倉庫, push 命令將本地倉庫的內容提交到關聯的遠端倉庫。

DEVER -------(add) --> local cache ------(commit)--> local repository -------(push)--> remote repository

SVN 管理模式

local  -->  remote
remote掛了,導致本地不能做任何操作

GIT 管理模式

git 本地可以做remote一樣的操作。
git可以關聯多個遠端倉庫。

git remote還可以備份。

git使用K-V儲存資料。SVN使用複製版本完成可回滾操作。

git 核心命令

建立、克隆、新增、提交、push、pull、更新、關聯遠端

  • 建立git專案,生成一個 .git 目錄
  • git init
  • echo ‘You is a bad man, haha!’ > readme.md
  • git status
  • git add -A
  • git commit -m ‘提交記錄’
  • git remote add origin XXX.git
  • git push --set-upstream origin master (首次),後面git push即可
  • git pull
  • git clone XXX.git 本地目錄名

管理模式

  • mkdir -p src/main/java/com
  • echo ‘package com’ > hello.java
  • git remove --cached target -r
  • git commit -am ‘註釋’
  • git commit -m ‘註釋’

分支

  • git branch : #顯示本地分支

  • git branch -av : #包含顯示遠端分支

  • git branch -avv : #包含顯示遠端分支,包含關聯資訊

  • git branch 新分支name :# 基於當前分支新建分支

  • git branch 新分支name #已存在分支 :# 基於已存在分支新建分支

  • git branch 新分支name commitid :# 基於提交id新建分支

  • git checkout 分支名 : #切換分支

  • git branch -d 分支名: # 刪除分支

  • git merge branch : #將branch合併到當前分支

遠端倉庫

  • git remote -v : #檢視遠端資訊
  • git remote add origin XXX.git
  • git remote add origin2 XXX.git
  • git push --upstream origin2 master : #推送到關聯的第二個倉庫
  • git push origin[2]
  • git remote remove 遠端倉庫名 : # 刪除關聯的遠端倉庫

日誌

  • git log: # 檢視提交日誌
  • git log --online : # 一行行的檢視
  • git log branch --online: # 檢視分支的日誌
  • git log dev…master : # master有多少提交沒有同步到dev來。
  • git log --graph --online : #檢視提交網路圖
  • git show [commitId]: #展示變更的內容

git 原理

git 儲存物件

git 是一個內容定址檔案系統,核心是一個簡單的KV資料庫,插入任意內容會返回一個用於取回該值的hash。

  • find .git/objects/ -type f : 查詢所有的git物件
  • git hash-object -w README.md
  • git cat-file -p commitId > README.md : # 回滾內容,可以將commitId的內容寫入到README.md中,完成了一次回滾的操作
  • git cat-file -t commitID : # 檢視資料型別

git add 會在objects新增物件。 使用後可以 用 find .git/objects -type f 檢視是否新增了物件。

$ find .git/objects -type f
.git/objects/69/f22ff2d6d6d4d8288fa9fa99ac2d58927ab1d6
.git/objects/99/f5369cae277ef56123d0012e2ef952e2e9d825

$ git add git基礎.md

$ find .git/objects -type f
.git/objects/69/f22ff2d6d6d4d8288fa9fa99ac2d58927ab1d6
.git/objects/90/0aabe1fb581794dd7e5cd238828f112f5109af   #新增的
.git/objects/99/f5369cae277ef56123d0012e2ef952e2e9d825