git
零、说明
该博客有大部分图是网上摘抄,版权所有归原作者所有。
一、介绍
分布式版本控制系统
Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。
Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper,后者之前一直是 Linux 内核开发人员在全球使用的主要源代码工具。开放源码社区中的有些人觉得BitKeeper 的许可证并不适合开放源码社区的工作,因此 Torvalds 决定着手研究许可证更为灵活的版本控制系统。尽管最初 Git 的开发是为了辅助 Linux 内核开发的过程,但是我们已经发现在很多其他自由软件项目中也使用了 Git。例如 很多 Freedesktop 的项目迁移到了 Git 上。
二、不多说安装部署走起
下载地址:https://git-scm.com/download/win
ubuntu安装
apt-get install git
CentOS7
yum install -y git
编译安装
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker wget https://github.com/git/git/archive/v2.7.4.zip unzip v2.7.4.zip cd git-2.7.4 make prefix=/usr/local/git all make prefix=/usr/local/git install rm -rf /usr/bin/git ln -s /usr/local/git/bin/git /usr/bin/git git --version
windows
三、git初始化
mkdir /git cd /git git init git config --global user.name "ago" # 配置git使用用户 git config --global user.email ago@ago.com # 邮箱 git config --global color.ui true # 语法高亮 git config –list # 查看
四、git命令介绍
git add 加入暂存(索引区) git status 查看状态 git status -s 状态概览 git diff 尚未暂存的文件 git diff --staged 暂存区文件 git commit 提交更新 git reset 回滚 git rm 从版本库中移除 git rm --cached README 从暂存区中移除 git mv 相当于mv git rm git add三个命令
五、git工作区介绍
git add * 存入暂存区,把所有的工作目录都放入暂存区
git commit -m ‘解释’ 把暂存区的数据保存到本地仓库
git push 把本地仓库推送到远程仓库
六、分支管理
使用git checkout 进行分支切换
分支命令介绍
git branch # 列出所有分支,并在显示当前分支 git branch –v # 详细 git branch –-merged # 查看被merge过来的分支 git branch --no-merged # 没被merged的分支 git branch -d testing # git checkout # 跳转分支 git merge # 合并分支 ,merge完之后当前分支多了一次提交 git log # 查看版本号等信息 git stash # 做暂存区 git tag # 打标签
标签使用
git tag v1.0 # 当前提交内容打一个标签。每次提交都可以打个tag git tag # 查看当前所有标签 git show v1.0 # 查看当前1.0版本的详细信息 git tag -a v1.2 -m "version 1.2 release is test" # 创建带有说明的标签-a指定标签名字,-m指定说明文字 git tag -d v1.0 #我们为同一个提交版本设置了两次标签,删除之前的v1.0
七、git高级
gitcheck 切换指针
git checkout 命令:用于切换分支。 # 加分支名 git checkout -- file.ext 撤销对文件的修改 # 加文件名
git check head~2
Checkout一个文件和带文件路径git reset 非常像,除了它更改的是工作目录而不是缓存区。不像提交层面的checkout命令,它不会移动HEAD引用,也就是你不会切换到别的分支上去。
如果你缓存并且提交了checkout的文件,它具备将某个文件回撤到之前版本的效果。注意它撤销了这个文件后面所有的更改,而git revert 命令只撤销某个特定提交的更改。
撤销对文件的修改
git reset 回滚命令
--soft # 缓存区和工作目录都不会被改变 --mixed # 默认选项。缓存区和你指定的提交同步,但工作目录不受影响 --hard # 缓存区和工作目录都同步到你指定的提交
git reset HEAD~2
Reset参数影响
文件层操作
当检测到文件路径时,git reset 将缓存区同步到你指定的那个提交。比如,下面这个命令会将倒数第二个提交中的foo.py加入到缓存区中,供下一个提交使用。 git reset HEAD~2 foo.py 运行git reset HEAD foo.py 会将当前的foo.py从缓存区中移除出去,而不会影响工作目录中对foo.py的更改。 --soft、--mixed和--hard对文件层面的git reset毫无作用,因为缓存区中的文件一定会变化,而工作目录中的文件一定不变。
reset file
使用场景
命令 | 作用域 | 常用情景 |
git reset | 提交层面 |
版本回滚,在私有分支上 舍弃一些没有提交的更改 |
git reset | 文件层面 | 将文件从缓存中移除 |
git checkout | 提交层面 | 切换分支或查看旧版本 |
git checkout | 文件层面 | 舍弃工作目录的更改 |
git revert | 提交层面 | 在公共分支上回滚 |
git revert | 文件层面 | 没有 |
git reflog
git reflog 命令分析你所有分支的头指针的日志来查找出你在重写历史上可能丢失的提交。
八、远程管理
命令
git clone https://github.com/AgoCan/MySalt.git # 克隆远程代码到本地库 初始化操作
git push # 推送本地库代码到远程 认证后 git pull # 拉取代码到工作空间 合并到当前分支里面去。 git fetch # 拉取代码到本地库 没有合并 git push origin master # 指定分支 git remote # 查看 origin等于default 查看远程信息 git remote –v # 查看详情 git remote add xxx http://xxx # 添加叶远程地址 git remote show origin # git remote rename pb paul # 重命名 git tag -a v1.0 -m ‘abc’ # 打标签
git branch -r # 拉取代码到本地之后用这个命令查看分支代码
git push origin master # 提交到master分支上