git介绍git是一个分布式版本控制工具git一图流概括git安装部署windows直接从官网下载Git - Install for WindowsLinuxsudo apt-get install git拓展Linux编译git源码安装打开网址Index of /pub/software/scm/git/下载合适版本# 安装git依赖 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel yum install gcc perl-ExtUtils-MakeMaker # 移除旧的git yum remove git # 进入git解压目录并预编译git ./configure --prefix/usr/local/git_2.9.5 # 编译并安装git make make install # 将git的脚本软连接到/usr/bin/ 目录下 ln -s /usr/local/git_2.9.5/bin/* /usr/bin/ # 查看是否安装成功 git --version初始化本地仓库和签名初始化本地仓库命令# 初始化本地仓库 git init # 查看本地仓库状态 git status设置用户签名git config 配置有system、global和local三个级别级别大小分别是localglobalsystem级别大的会覆盖掉级别小的# 默认情况下是 local 级别 git config user.name bugmaker git config user.email 1597532486qq.com # system级别每个系统用户都共有。存在git安装目录下的/etc/gitconfig git config --system user.name bugmaker git config --system user.email 1597532486qq.com # global级别每个系统用户独有且相互隔离。 # Windows通常保存在C:\Users\xxxx\.gitconfigLinux为/home/xxx/.gitconfig git config --global user.name bugmaker git config --global user.email 1597532486qq.com # local级别当前仓库独有。存在当前仓库的.git目录下 git config --local user.name bugmaker git config --local user.email 1597532486qq.com # 拓展删除配置项的值 git config --global --unset user.name配置远程库和拉取代码配置远程库# 添加远程库 git remote add name 远程库url git remote add origin https://gitee.com/bugmaker/demo.git # 查看已配置的远程库 git remote -v # 删除远程库 git remote rm name git remote rm origin # 修改远程仓库名 git remote rename old_name new_name拉取代码使用git clone# 拉取代码 git clone https://gitee.com/bugmaker/demo.git暂存区命令# 工作区 - 暂存区 git add file git add . # 暂存区回退到工作区 git restore --staged file git restore --staged . # 工作区修改的文件回退到修改前 git restore file # 删除工作区文件并且将这次删除放入暂存区 git rm file # 停止追踪指定文件。不再被 Git 管理但它还在你的项目文件夹里 $ git rm --cached file # 暂存区提交到本地仓库不加文件名提交所有暂存区的数据 git commit -m message file # 自动把所有已经跟踪过的文件暂存并提交跳过 git add 步骤 git commit -a -m message file本地仓库命令查看历史版本# 查看详细的历史版本 git log # 查看简洁版 git log --oneline # 类似于树形结构 git log --graph版本回退# 此为默认方式所有修改的内容和版本回退的内容都会退回到工作区 # 等同于不带任何参数的git reset git reset --mixed head # 回退到某个版本所有修改的内容不会变动版本回退的内容都会退回到暂存区 git reset --soft head # 彻底回退到某个版本本地的源码也会变为上一个版本的内容所有修改的内容都会丢失 git reset --hard head # 回退到上一个版本 git reset HEAD^ # 回退到上上个版本 git reset HEAD^^ # 回退到上5个版本 git reset HEAD~5 # 回退到指定版本 git reset 版本号本地库与远程库交换常用命令# 从远程仓库拉取代码 git pull # 将本地仓库代码推送到远程仓库 git push origin mastergit pull和git fetch区别git pullgit fetchgit mergegit fetch只拉取不合并。它只是去远程仓库把最新的提交记录、分支信息下载到本地的.git目录中完全不影响你当前的本地工作区。你的本地文件不会发生任何改变也不会产生新的合并冲突。git pull它执行两步操作。首先像fetch一样下载最新代码然后立即尝试将这些代码合并到你当前所在的本地分支上。git pull --rebase命令相当于git fetchgit rebase它会将你本地的未推送提交“挪到”远程最新提交的后面避免产生多余的 Merge Commit。分支命令创建和修改分支# 创建分支 git branch new_branch # 修改分支名称 git branch -m old new查看分支# 查看分支 git branch # 查看分支详情 git branch -v # 查看远程分支 git branch -r # 查看所有分支 git branch -a切换分支# 切换分支 git checkout branch_name # 切换到上一个分支 git checkout - # 创建分支并切换到创建的分支 git checkout -b new_branch删除分支# 删除分支 git branch -d 分支名称 # 强制删除 git branch -D 分支名称分支合并及冲突解决分支合并# 将一个分支合并到另一个分支 git merge 分支名称 # 回退合并 git merge --abort分支合并文件冲突一般解决方案# 1. 解决存在冲突的文件 # 2. 解决完成后将冲突的文件提交到暂存区 git add 冲突文件 # 3. 将暂存区提交到本地仓库 git commit -m 解决冲突 # 4. 提交到远程仓库 git push origin masterTag命令如果你达到一个重要的阶段并希望永远记住那个特别的提交快照你可以使用 git tag 给它打上标签# 给当前所在分支打标签 git tag v1.0 # 指定标签名、说明文字和提交节点 git tag -a v0.1 -m version 0.1 released 1094adb # 查看所有标签 git tag # 查看指定标签 git show v1.0 # 删除标签 git tag -d v1.0 # 推送标签到远程仓库 git push origin v1.0 # 将本地仓库所有标签都推送到远程仓库 git push origin --tagsstash命令假设您正在为产品新的功能编写/实现代码当正在编写代码时突然出现软件客户端升级。这时您必须将新编写的功能代码保留几个小时然后去处理升级的问题。在这段时间内不能提交代码也不能丢弃您的代码更改。 所以需要一些临时等待一段时间您可以存储部分更改然后再提交它# 添加到stash git stash # 指定提交信息名称 git stash save message # 查看Git栈 git stash list # 默认恢复git栈中最新的一个stash{num} git stash pop # 指定恢复git栈中的stash git stash pop stash{1} # 默认恢复git栈中最新的一个stash{num}该命令不会将内容从对堆栈中删除 git stash apply # 指定恢复git栈中的stash该命令不会将内容从对堆栈中删除 git stash apply stash{1} # 默认删除git栈中最新的一个stash{num} git stash drop # 指定删除git栈中的stash git stash drop stash{1} # 移除所有的栈 git stash clear其他命令# 显示指定文件是什么人在什么时间修改过 git blame file