本地開發分支,使用 add 命令將修改的內容添加到本地緩存空間,經過 commit 命令將添加的內容提交到本地倉庫, push 命令將本地倉庫的內容提交到關聯的遠程倉庫。java
DEVER -------(add) --> local cache ------(commit)--> local repository -------(push)--> remote repository
複製代碼
local --> remote
remote掛了,致使本地不能作任何操做
複製代碼
git 本地能夠作remote同樣的操做。
git能夠關聯多個遠程倉庫。
git remote還能夠備份。
git使用K-V存儲數據。SVN使用複製版本完成可回滾操做。
複製代碼
建立、克隆、添加、提交、push、pull、更新、關聯遠程nginx
- 建立git項目,生成一個 .git 目錄
git init
git remote add origin XXX.git
echo 'You is a bad man, haha!' > readme.md
git status
git add -A
git commit -m '提交記錄'
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 branch -r -d origin/ci
Deleted remote-tracking branch origin/ci (was 0a54700).
複製代碼
git add出現 "fatal: in unpopulated submodule XXX" 錯誤:git
當前處於: F:\217my_optLogs\001系統相關\系統設計\007\oschina\ydgw2407.github.io\themes
下面有目錄2個:github
hexo-theme-matery landscapeweb
由於hexo-theme-matery是從另外一個第三方的倉庫克隆的,在執行git add的時候"fatal: in unpopulated submodule hexo-theme-matery" 錯誤shell
解決辦法,在當前目錄打開git bash,執行:數據庫
git rm -rf --cached hexo-theme-matery
git add hexo-theme-matery/*
複製代碼
能夠看到該目錄已經add成功。緩存
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]: #展現變動的內容
複製代碼
場景: 當咱們提交了錯誤的代碼後,想回歸到原來的某個版本 可使用 reset 操做。bash
## 查看reset的語法
git help reset
複製代碼
將當前分支的head指向指定的commitid狀態, work tree 依賴於模式mode。網絡
git reset [<mode>] [<commit>]
複製代碼
mode 的值:
例如:回退到commitid 1a02031a7d86684246d878a58ff4e1601f14afb7 的版本。
git reset 1a02031a7d86684246d878a58ff4e1601f14afb7
複製代碼
此時,遠程分支的代碼已經在commitid版本以後了,因此push會失敗,可使用強制push覆蓋掉遠程代碼庫。
git push -f origin
複製代碼
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 查看是否新增了對象。
```bash
$ 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
複製代碼
本地共享目錄; 快速;簡單;局域網; 速度慢; 僅僅小項目;
D盤建立倉庫:
git init --bare hello.git : 建立一個裸項目
複製代碼
E盤克隆:
git clone /d/XXX/git
複製代碼
這樣本地倉庫在E盤,遠程分支在D盤,就是一個基本的git服務了。
git init --bare hello.git : 建立一個裸項目
複製代碼
git clone root@ip:XXX.git
複製代碼
ssh-keygen
複製代碼
nginx 是基礎(3 years experience)
通常不用
比 gitlab 輕便
github.com/gogs/gogs/r… 選擇要下載的版本
在解壓後的根目錄下執行
gogs.exe web
複製代碼
http://localhost:3000/ 能夠看到gogs服務啓動成功
第一次進入web頁面進行配置信息
gogs.exe backup
複製代碼
會在根目錄生成一個備份文件如: gogs-backup-20181004183106.zip
gogs.exe restore --from=gogs-backup-20181004183106.zip
複製代碼