搭建git私服
安装软件git,percona数据库
yum install git
tar xvf Percona.tar
yum install shared, server, client
ps aux | grep mysql # 查看进程
service mysql start
chkconfig mysql on
mysql_secure_installation # mysql配置
useradd git
su - git
cd gogs
mysql -u root -p < scripts/mysql.sql # 创建gogs的库
grant all on gogs.* to 'gogs'@'%' identified by 'gogs'; # 给gogs库创建mysql用户gogs,并授权
flush privileges; # 使用户权限生效
配置gogs
vim gogs/custom/conf/app.ini
APP_NAME = gogs
RUN_USER = git
RUN_MODE = dev
[server]
HTTP_ADDR = 0.0.0.0
HTTP_PORT = 3000
[database]
DB_TYPE = mysql
HOST = 127.0.0.1:3306
NAME = gogs
USER = gogs
PASSWD = gogs
[security]
INSTALL_LOCK = false
SECRET_KEY = www
启动服务器
./gogs web
使用git用户在gogs目录下建一个log目录,否则启动不了,
配置默认启动
# root用户
cp /home/git/gogs/scripts/init/centos/gogs /etc/init.d/
chmod +x /etc/init.d/gogs
chkconfig gogs on
chkconfig --list gogs #centos 7查看
service gogs start
ss -tanl
ps aux | grep gogs
登陆
install 修改域名,应用URL,yum install git
gogs图片加载慢,在app.ini中禁用gravatar服务
重启gogs服务service gogs reload
使用GIT
remote
: 远程仓库
repository
: 仓库,本地版本库
workspace
: 工作区
staging area
: 暂存区staging area, 索引index
workspace–add–>stage–commit–>repository–push–>remote
remote–clone–>wlorkspace
remote–pull–>repository,workspace
文件分类: untracked, tracked, ignored
基本命令
git init
: 初始化版本库.git目录
git add .
: 递归暂存所有文件,untracked状态 -> tracked. 目录需要加/
.
.gitignore
文件: git仓库忽略的文件,目录以/
结尾,行起始是!
就是取反,#
添加注释
https://github.com/github/gitignore/blob/master/Python.gitignore
git commit [file][-a] -m "First Commit"
: modified files must be added,才能commit,加-a
可以直接提交modified files
git commit --amend
: 追加到上一次commit中commit
git --dry-run
: 获得下一次可以commit的提醒
查看
git status
: 查看状态,获得输入提醒
git log
: commit log
git reflog
: 列出所有对commit的操作
比较
git diff
: diff between workspace and Index
git diff HEAD
: diff between workspace and HEAD
git diff --cached
:dif between Index and HEAD
HEAD^
,HEAD^^
,..,HEAD~n
: 相对HEAD, 前几个commit
检出
git checkout
: index->workspace列出可检出的文件
git checkout file
: index -> workspace,覆盖workspace文件
git checkout branchname/commit_uuid
: 切换分支, 检出提交
git checkout commit_uuid file
: 检出指定commit的指定文件到index and workspace,覆盖文件,.
代表所有文件
git checkout -b branchname
: 创建分支
git branch
: 列出现有分支
重置
git reset [--hard] [--keep] [commit] [file]
重置当前分支HEAD为[指定commit]默认HEAD,[指定文件]默认所有文件到index,workspace不变
--hard
同时重置workspace, 等价于git checkout commit
--keep
表示index和workspace都不变,只重置HEAD
git reset HEAD file 等价于 git rm –cached file
移动和删除
git mv src dest
:
git rm [--cached] file
: remove from workspace and index[only index]
配置本地用户名和邮箱
git config --global user.name "name"
git config --global user.email "email@email.com"
保存在~/.gitconfig
,是用户级别配置文件, –global
/etc/git/gitconfig
,是系统配置文件, –system
.git/config
,是仓库特有配置文件
关联远程版本库
git remote add origin http://username:password@url
http协议,origin是习惯用法,将建立origin和后面url的映射,保存在.git/config
中
推送数据, repository->remote
git push
:将本地的更新推送到远程主机;
git push <远程主机名> <本地分支名>:<远程分支名>
git push -u origin master
:-u
第一次加,以后不用加
免密登录:
ssh-keygen -t rsa -C "email@email.com"
先删除当前用户.ssh文件夹, 执行命令, 生成私钥和公钥, 用户设置ssh密钥, 将公钥导入
git@192.168.10.129:adm/mapy.git
使用ssh协议, 免密登录
克隆,获取更新, 先配置本地用户名,邮箱
git config --global user.name/email "name/email"
git clone ssh_url
git fetch
:取回远程服务器的更新;
git pull
:取回远程服务器更新,而后与本地的指定分支合并;
git pull <远程主机名> <远程分支名>:<本地分支名>
git pull origin dev
: 表示fetch origin 的dev分区到当前目录,并与当前分支合并
相当于git fetch origin dev && merge origin dev
git pull origin dev:master
fetch origin 的dev分区,并和master合并
合并
无冲突合并:
git checkout master
git status
git merge BRANCH_NAME
有冲突合并:
手动解决冲突
解决完成之后:
git add
git commit
Pycharm中git的使用
git stash
: 还原最后一次commit的状态(需要有commit)
git stash pop
: 从stash中pop存储的变化
merge合并
No fast forward: 保留branch
fast forward: 不保留branch