GIT私服搭建及GIT的使用

搭建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 protected]"
保存在~/.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 protected]"
先删除当前用户.ssh文件夹, 执行命令, 生成私钥和公钥, 用户设置ssh密钥, 将公钥导入
[email protected]: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:masterfetch 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

你可能感兴趣的:(开发相关)