~~~
git编译安装与常用命令
=========================================
一:编译安装与设置
1.1:简介
github官网地址(下载源码包):https://github.com/git/git.git
git 在 windows mac等系统下载:https://git-scm.com/downloads
1.2:依赖关系(解决常见的依赖关系)
~]# yum -y install gcc openssl openssl-devel curl curl-devel unzip perl perl-devel expat expat-devel zlib zlib-devel asciidoc xmlto gettext-devel openssh-clients
~]# yum -y install openssh-clients
# ssh-keygen 出现 -bash: ssh: command not found 的解决办法
1.3:编译安装
方式一:
~]# make prefix=/usr/local/git all doc
~]# make prefix=/usr/local/git install install-doc install-html
方式二:
~]# yum -y install autoconf
~]# make configure 或者 autoconf
# 备注:生成 configure 文件
~]# ./configure --prefix=/usr/local/git
~]# make all doc
~]# make install install-doc install-html
方式三:
~]# yum -y install git # 安装 git
~]# yum -y install git-all.noarch # 安装 git 所有的包,非必须
1.4:环境配置
~]# echo 'export PATH=/usr/local/git/bin:$PATH' > /etc/profile.d/git.sh
~]# . /etc/profile.d/git.sh
~]# git --version # 查看版本
1.5:man 文档配置
~]# vim /etc/man_db.conf
MANDATORY_MANPATH /usr/local/git/share/man
查看帮助
格式一:
~]# git help init
格式二:
~]# man git-init
1.6:ssh用户,权限,服务器身份认证,初始化仓库 与 拉取仓库
1:添加用户:
~]# useradd git
2:权限(用户组合用户均为git):
/home/git/.ssh 权限为:700
/home/git/.ssh/authorized_keys 权限为:600
~]# mkdir /home/git/.ssh
~]# chmod 700 /home/git/.ssh
~]# touch /home/git/.ssh/authorized_keys
~]# chmod 600 /home/git/.ssh/authorized_keys
~]# chown -R git:git /home/git/.ssh
# 注意: id_rsa 权限为 600 id_rsa.pub 权限为 644
3:服务器身份认证(authorized_keys):
把本地的公钥 id_rsa.pub 里面的内容加入到 /home/git/.ssh/authorized_keys,一行一个,可以加入多个公钥,git 操作时不再需要密码。
4:初始化仓库:(结尾为 .git)
创建空项目
~]# cd /home/git # 进入git家目录
~]# git init --bare useryx.git
# 例如 git init --bare 仓库名.git
项目已有内容
~]# git init
# cd 进入项目进行初始化
~]# git clone --bare 目录名 仓库.git
# 例如:git clone --bare useryx useryx.git
# 仓库外面执行
5:修改仓库用户组为 git
~]# chown git:git useryx.git
6:拉取仓库
~]# git clone [ssh://]用户名@地址:仓库名.git
# 例如:git clone git@192.168.31.73:useryx.git 或者 家目录下的一个文件内如 git clone git@192.168.31.73:/home/git/dir/a.git
1.7:禁止ssh用户登录,可以不用设置。
~]# vim /etc/passwd
# 修改git 用户登录shell
1:使用linux系统的 /sbin/nologin 不允许登录
git:x:1001:1001::/home/git:/sbin/nologin
2:使用git服务 git-shell 的 /usr/local/git/bin/git-shell,which git-shell 查看命令位置。
git:x:1001:1001::/home/git:/usr/local/git/bin/git-shell
二:客户端初始化配置
2.1:客户端生成公钥与私钥 ssh-keygen(切换至需要生成公钥与私钥的用户)
~]# su - git # 切换至git用户
~]# ssh-keygen
# 使用默认 rsa 算法,2048 长度
~]# ssh-keygen -t rsa -b 4096 -C 'git@aliyun.com' -P '3a/Jd3v1wq6M1lrAO+Qc4bCHb2W3SynSTg3CT1GS'
# -t 指定算法
# -C 添加一个注释
# -b 指定加密长度,默认是2048,建议为4096
# -P 使用加密密码串
~]# openssl rand -base64 30 # 30 为生成字符串的长度
# 使用 ssh-keygen 按照提示操作,也可直接回车。
2.2:设置用户名和邮箱
~}# git config --global user.name "用户名"
~}# git config --global user.email "邮箱@aliyun.com"
2.3:初始化添加文件夹
1:创建新版本库(正常流程操作)
git clone git@192.168.18.35:useryx.git
cd useryx
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
2:已存在的文件夹或 Git 仓库
cd useryx
git init
git remote add origin git@192.168.18.35:useryx.git
git add .
git commit -m '初始化'
git push -u origin master
2.4:查看默认配置文件
~]# git config --list 或者 git config --l
2.5:不更新文件( .gitgmore)
~]# find ./ -name .gitignore
# 查找 .gitignore 文件
~]# find ./ -name .gitignore -delete
# 删除 .gitignore 文件
# 不更新的文件或目录放于此文件中
2.6:本地克隆
~]# git clone file://root/test /tmp/test
~]# git clone test /tmp/test
# 本地的 git 项目克隆
三:基础操作
3.1:添加文件(add)
~]# git add filename
# 添加某个文件
~]# git add . 或者 git add -A
# 添加当前目录所有文件
3.2:删除文件(rm)
~]# rm # 删除文件但不会删除索引
~]# git rm -f filename # 未提交需要 -f 删除
~]# git rm filename # 删除文件并删除索引
~]# git rm --cached file # 删除索引,改变为未追踪状态
~]# git cat-file -p hash码 # 查看文件内容
3.3:修改文件(mv)
~]# mv # 索引添加新文件,原来的索引会保留。提交时会有错误
~]# git mv filename newfilename # 修改文件同时修改索引
3.4:索引文件添加到快照(commit)
~]# git commit -m '注释'
~]# git commit -am '注释' # 添加文件并提交注释
3.5:状态
~]# git status
3.6:文件追踪
已追踪的(tracked)
~]# git ls-files
未追踪的(igored)
~]# git ls-files -o
被忽略的(untracked):
查看文件 .gitignore
3.7:提交与拉取
~]# git pull
# 拉取:从远程获取最新版本到本地,不会自动merge
~]# git fetch
# 拉取:从远程获取最新版本到本地,会自动merge
~]# git push origin master
# 提交:推送本地到远程主分支,
3.8:日志(log)
~]# git log
~]# git log --oneline
# 行显示,短格式
~]# git log --graph
# 树型图
~]# git log --pretty=oneline --abbrev-commit
3.9:文件比较不同
~]# git diff filename1 filename2
# 比较文件
~]# git diff dev
# 比较当前分支与主分支
3.9:撤销操作(reset)
1:git reset –mixed <commit id> <filename>:此为默认方式,它回退到某个版本,只保留源码,回退commit和index信息
2:git reset –soft <commit id> <filename>:只回退 commit 的信息,保留 index ,如果还要提交,直接commit
3:git reset –hard <commit id> <filename>:彻底回退到某个版本,本地的源码也会变为上一个版本的内容
HEAD:当前分支的最近提交
ORIG_HEAD:合并时,新生成的提交保存于此引用中
HEAD^ 回滚前一次,工作目录不受影响
^ 回退到上一次
~<n> 回到几次,等于连续的 HEAD^
~]# git reset --hard ORIG_HEAD # 提交后回退 commit 之前状态
四:分支
3.1:查看与新建分支
~]# git branch --all
~]# git branch --list
3.:2:创建与切换分支
~]# git branch <branch> # 创建分支(基于当前分支)
~]# git branch <branch> <hsah码> # 创建分支(基于指定 commit id 分支)
~]# git branch bug/first # 创建父目录分支(基于当前分支)
~]# git branch bug/first <hsah码> # 创建父目录分支(基于指定 commit id 分支)
~]# git checkout <branch> # 切换分支
~]# git checkout -b <branch> # 创建分支时直接切换
3.3:查看分支以及相关的提交
~]# git branch # 列出分支
~]# git branch --list # 列出分支
~]# git show-branch <branch> # 显示branch分支详细信息
3.4:删除分支
~]# git branch -d <branch>
~]# git branch -D <branch> # 强制删除分支
~]# git push origin --delete <branch> # 删除远程分支
~]# git push --delete origin <branch> # 删除远程分支
3.5:绑定本地分支到远程
~]# git push --set-upstream origin dev
# 本地在 dev 分支上,执行此次操作后在 dev 分支只使用 git push
3.6:比较两个分支差异
~]# git diff dev
# 比较当前分支与 dev 分支的区别
3.5:合并分支
~]# git merge dev
# 合并 dev 分支到当前分支
3.7:恢复到合并之前
~]# git reset --merge
# 撤销到合并之前
3.8:查看失败的合并文件信息
~]# git ls-files --unmerged
1:基础版本
2:我们的版本
3:他们的版本
~]# cat filename(冲突的文件)修改文件内容
++<<<<<
============
++>>>>>>>>>.
# 修改完成文件后 add 再次提交
3.9:重命名分支
~]# git branch -m <branch> <newbranch> # 重命名本地分支
3.10:推送分支
~]# git push origin <branch> # 推送本地分支到远程
五:打标签
5.1:tag介绍
git 有 commit,commit号是一串字符不便于查找,而 tag 的作用是更加清晰明了。
把完整的项目提交到 tag 标签,就可以实现版本的持续发布。
5.2:创建标签
~]# git tag <name>
5.3:查看标签
~]# git tag
~]# git show <tag name> # 可以查看到commit id
5.4:对 commit id 打标签
~]# git tag <tag name> <commit id>
~]# git tag -a <tag name> -m "注释信息" <commit id>
5.5:删除标签
~]# git tag -d <tagname> # 本地标签
~]# git push origin :refs/tags/<tagname> # 远程标签
5.6:推送标签
~]# git push origin <tagname> 推送指定的
~]# git push origin --tags # 推送全部
六:常见问题解决办法
6.1:git status 查看状态时中文乱码
git config --global core.quotepath false
6.2:文件权限引起的冲突(文件显示被修改)(低版本git一般会出现此问题)
git config core.filemode false
~~~
- 前端
- 技巧汇总
- 构建 Node + Webpack + React 热加载开发环境
- React
- Redux
- Webpack
- ES6
- HTML5+CSS3
- Javascript
- JS超简洁拖动代码
- jQuery
- 后端
- 技巧汇总
- 代码中特殊的注释技术——TODO、FIXME和XXX的用处
- PHP
- Xdebug不解之谜
- PHP时间获取
- PHP递归优化 使用匿名函数进行递归
- PHP 发起POST请求
- PHP获得数组的交集与差集
- PHP递归获取下级数组,可指定ID,一维数组
- PHP 判断是否为Get/Post/Ajax提交
- PHP实现分流队列平均显示信息
- PHP多维数组 指定列排序
- PHP 类Class详解 笔记记录
- PHP取整函数详解
- Node
- Elasticsearch
- 数据库
- 技巧汇总
- Mysql
- Mysql分区表实现
- Mysql union与union all 查询
- Mysql 表中表查询
- Mysql 分组查询 与 分组条件查询
- MySQL 添加列,修改列,删除列
- Mysql优化之:构建海量表,定位慢查询
- Mysql优化之:表的设计满足3NF
- Mysql优化常见方法
- Mysql存储过程详解
- 运维
- 技巧汇总
- Linux
- Linux Centos系统下 设置代理服务器上网
- Centos7增加开机启动脚本
- centos 挂载windows共享目录
- CentOS设置SSH Key登录
- Linux/CentOS单网卡绑定多个IP
- Windows
- Win10开机启动项设置全解攻略
- PuTTY连接Linux服务器经常断线解决方案
- Docker
- Docke启动文件 docker-compose.yml
- Docker命令简介(未完)
- Docker闲杂笔记
- Apache
- Nginx
- Nginx配置upstream实现负载均衡
- Nginx负载均衡学习
- IDE
- 技巧汇总
- WebStorm
- PHPStorm
- 协作
- 技巧汇总
- Git
- git 放弃本地修改 强制更新
- git编译安装与常用命令
- Svn