最近换了份工作,在新的公司里面,对于软件版本控制工具使用的是git,我之前的那家公司使用的是svn。
第一印象,感觉git比svn牛逼很多。现在我来比较下两个工具的区别,并简单介绍下git的命令。
一、区别
1、git是分布式的,svn是集中式的。
git和svn都有一个集中存放代码的地方,他们的区别在于每个开发者每次修改都是直接跟中心库交互。但是git的话开发者的修改时跟本地的仓库(repository)交互,等到特定的时间点或者进度点才推送(push)到中心库。
2、git把数据按元数据方式存储,但svn是按文件方式。
所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。如果你把.git目录的 体积大小跟.svn比较,你会发现它们差距很大。
3、git的分支概念优于svn
svn的分支概念就是新拷贝一份代码,这个办法非常原始,且耗时耗空间。git的分支是按一个快照的方式存储,创建分支快速且不耗空间。
4、GIT的内容完整性要优于SVN
GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
二、git命令总结
1、git status 查看当前仓库的状态
2、git diff 查看区别
git diff 比较工作目录树与暂存区的区别
git diff --cached 比较暂存区和版本库的区别
git diff HEAD 比较工作目录树(包括暂存区和未暂存)与版本库的区别
git diff HEAD -- filename.txt 查看文件filename.txt文件的区别
3、git add 把修改从工作目录树提交到暂存区
4、git commit -m "message..." 把修改从暂存区提交到版本库
5、git log 显示由近到远的提交日志
git log -n 显示输出的条数,n表示条数
git log --name-status 显示由近到远的提交日志,且日志中显示出每次提交修改的文件
git log --stat 仅显示简要的增改行数统计
git log --pretty=[oneline | format | short | full | fuller]
6、git reset
git reset -- hard HEAD^ 回退到上一个版本
git reset --hard [commit] 自commit以来在working directory 中的任何改变都会被放弃
git reset --soft [commit] 自commit以来的所有改变都会显示在git status的changes to be commited中
7、git checkout 检出
git checkout -- file 撤销修改(就是让这个文件回到最近一次git commit
或git add
时的状态)
git checkout -b branch1 master 新建一个分支,并检出到新分支
git checkout dev 切换到dev分支
8、git push 推送到远程
git push origin HEAD:refs/for/master 这是我公司的一个推送办法,再把修改推送到远程之前,要有个review的过程
9、git clone 克隆一个到本地库
10、git branch dev 创建分支dev
git branch -d dev 删除分支dev
git branch -m dev development 把dev分支重命名为development
11、git merge 合并dev分支到当前分支
git merge 直接合并[straight merge],将一条分支直接合并到另一条分支
git merge --squash branch1 压合合并[squashed commits],将一条分支上的所有提交压合成一个提交
12、git stash 工作做到一半,想切换到别的分支处理问题,保存本工作区的环境
git stash list 查看保存的工作区环境
git stash apply 恢复工作环境
git stash drop 删除stash的内容
git stash pop =git stash apply+git stash drop
13、git rebase 变基,重新定义分支的版本库状态
git rebase test
1、先将test分支的代码checkout出来,作为工作目录
2、然后将master分支从test分支创建起的所有改变的补丁,依次打上,如果打补丁的过程没有问题,就解决冲突
3、如果打补丁的时候出现冲突,就解决冲突,可以后运行git rebase -continue
4、如果你不想处理冲突,要么放弃rebase过程(git rebase -abort),要么直接用test分支取代当前分支(git rebase -skip)
14、git cherry-pick <commit-id> 将本地test分支上的一个commit合并到本地master分支上,就可以在master分支上执行该命令。
15、git tag <tag-name> <节点> 打标签
16、git blame
git blame test.file 行git blame
;命令时,会逐行显示文件,并在每一行的行首显示commit号,提交者,最早的提交日期
参考博客:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
相关推荐
git常用命令总结git常用命令总结git常用命令总结git常用命令总结git常用命令总结git常用命令总结git常用命令总结git常用命令总结git常用命令总结git常用命令总结git常用命令总结git常用命令总结git常用命令总结git...
### git常用命令总结 在日常开发工作中,Git作为版本控制系统被广泛使用,它能帮助团队高效地管理代码版本,提高协同工作的效率。本文将根据给定的文件信息,详细总结并解释Git中的常见命令及其用途。 #### 1. Git...
Git是目前世界上最先进的分布式版本控制系统。以上为git命令总结。
git是linux系统管理源码常用工具,本资源归纳总结git常用命令使用。
### git操作命令总结 #### 一、配置与初始化 **标题和描述中提及的知识点:** - **配置用户信息:** 使用 `git config --global user.name "zoujun"` 和 `git config --global user.email "zoujun@youku.com"` 来...
了解并熟练掌握这些Git命令,可以帮助开发者高效地管理代码,协同开发,避免版本冲突,追踪代码变更,确保项目稳定和团队协作的顺畅。在实际使用中,根据项目的具体需求,灵活运用这些命令,可以极大地提高工作效率...
git常用命令总结 git命令思维导图
git常用命令总结
理解这两种文件状态对于正确使用Git命令至关重要。 #### Git本地仓库基础操作 ##### 初始化新仓库 当你想要开始使用Git来管理现有项目的文件时,可以通过`git init`命令初始化一个新的仓库: ```shell git init ``...
Git常用操作命令: 因为Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识。
git常用命令总结 Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。 ...
### Git常用命令总结 #### 一、准备工作 **1.1 初始化仓库** - **命令**: `git init` - **说明**: 当你需要在一个新的项目中开始使用Git时,首先要做的就是在项目根目录下运行`git init`命令来创建一个新的Git...
git常用命令总结(涵盖整个git流程介绍总结)
在学习Git时总结的常用命令,内容包括git的三层结构、4种状态、git config配置命令、基本命令、git分支操作命令、远程仓库命令、git撤销命令等
在本文中,我们将深入探讨Git的一些关键命令,这些命令对于日常开发工作至关重要。 1. **添加文件到暂存区**: `git add filename` 这个命令将指定的文件`filename`添加到暂存区,意味着Git会开始跟踪该文件的更改...
- 官方文档:`https://git-scm.com/docs`,提供详细的Git命令参考。 - Pro Git书籍:`https://git-scm.com/book/en/v2`,深入讲解Git的使用和原理。 6. Git的使用场景: - 开源项目:如Linux、Android、jQuery、...
git常用命令总结,适合新手使用
常用git命令总结,常用git命令总结。 常用git命令总结。