版本控制工具 之 Git(常用命令)
- Git
- 2020-07-25
- 20热度
- 0评论
Git 与 SVN 区别点:
1、Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。
2、Git 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。
3、Git 分支和 SVN 的分支不同:分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。
4、Git 没有一个全局的版本号,而 SVN 有:目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。
5、Git 的内容完整性要优于 SVN:Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

//新的 Git 仓库初始化,目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。
//可以在任何时候、任何目录中这么做,完全是本地化的。
git init
//拷贝一个 Git 仓库到本地(类似 svn checkout),让自己能够查看该项目,或者进行修改。
git clone git://github.com/schacon/grit.git
//查看项目的当前状态,查看在你上次提交之后是否有修改
git status -s
//查看尚未缓存的改动
git diff
//查看已缓存的改动
git diff --cached
//查看已缓存的与未缓存的所有改动
git diff HEAD
//显示摘要而非整个
git diff --stat
//当你要将你的修改包含在即将提交的快照里的时候,需要执行 git add。
//将目录下以 .c 结尾的文件添加到缓存
git add *.c
//将目录下所有的文件添加到缓存
git add .
//配置用户名和邮箱地址,用于记录提交时的名字与电子邮箱地址
git config --global user.name 'runoob'
git config --global user.email test@runoob.com
//将缓存区内容提交到仓库中
git commit -m '初始化项目版本'
//如果你觉得 git add 提交缓存的流程太过繁琐,Git 也允许你用 -a 选项跳过这一步
git commit -am '初始化项目版本'
//用于取消已缓存的内容,该文件不会被 commit
git reset HEAD hello.php
//删除某个文件
git rm <file>
//如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f
git rm -f <file>
//仅是从跟踪清单中删除,不从工作区中删除文件,使用 --cached 选项
git rm --cached <file>
//如果后面跟的是一个目录做为参数,则会递归删除整个目录中的所有子目录和文件
git rm –r *
//用于移动或重命名一个文件、目录、软连接
git mv
//使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。
//列出分支
git branch
//创建分支
git branch test
//创建新分支并立即切换到该分支下
git checkout -b test
//切换分支,当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录。
git checkout test
//合并分支,将test分支合并到当前分支中去。合并出现冲突时就需要手动去修改它,用 git add 要告诉 Git 文件冲突已经解决
git merge test
//删除分支
git branch -d test
//查看提交历史
git log
//查看提交历史的简洁的版本
git log --oneline
//查看提交历史中什么时候出现了分支、合并。
git log --graph
//逆向显示所有历史
git log --reverse --oneline
//查找指定用户的提交日志
git log --author=mabokai --oneline -5
//查看 Git 项目中三周前且在1月25日之后的所有提交,使用 --no-merges 选项以隐藏合并提交
git log --oneline --before={3.weeks.ago} --after={2020-01-25} --no-merges
更多 git log 命令可查看:http://git-scm.com/docs/git-log
//给最新一次提交打上(HEAD)"v1.0"的标签。
//-a 选项意为"创建一个带注解的标签"。不用 -a 选项也可以执行的,但它不会记录这标签是啥时候打的,谁打的,也不会让你添加个标签的注解。
git tag -a v1.0
//指定标签信息
git tag -a v1.12 -m "标签1.12"
//指定提交记录打标签
git tag -a v0.9 96d1ece
//查看所有标签
git tag
//PGP签名标签
git tag -s v1.13 -m "标签1.13"
Git远程仓库使用可参考:版本控制工具 之 Git (远程仓库 Github)
//查看当前的远程库
git remote
//执行时加上 -v 参数,可以看到每个别名的实际链接地址
git remote -v
提取远程仓库的更新:
//从远程仓库下载新分支与数据
git fetch [别名]
//将服务器上的任何更新合并到你的任意分支
git merge [别名]/[分支]
//推送你的新分支与数据到某个远端仓库命令
git push [别名] [分支]
//删除远程仓库
git remote rm [别名]
解释:
1、执行 git fetch origin master 时,它的意思是从名为 origin 的远程上拉取名为 master 的分支到本地分支 origin/master 中。既然是拉取代码,当然需要同时指定远程名与分支名,所以分开写。
2、执行 git merge origin/master 时,它的意思是合并名为 origin/master 的分支到当前所在分支。既然是分支的合并,当然就与远程名没有直接的关系,所以没有出现远程名。需要指定的是被合并的分支。
3、执行 git push origin master 时,它的意思是推送本地的 master 分支到远程 origin,涉及到远程以及分支,当然也得分开写了。
4、还可以一次性拉取多个分支的代码:git fetch origin master stable oldstable;
5、也还可以一次性合并多个分支的代码:git merge origin/master hotfix-2275 hotfix-2276 hotfix-2290;

鲁ICP备19063141号
鲁公网安备 37010302000824号