Git基本核心操作總結
阿新 • • 發佈:2018-12-13
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