本地开发分支,使用 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
复制代码