Git知识点汇总表格总结

      Git应该是现在各个做开发公司使用最广泛的版本管理工具了,还有一些公司可能用的SVN,不过总体来说,Git绝对是主流,SVN是集中式版本管理,使用起来相对Git更简单,不过功能相对Git也略显简略,Git的优势也主要体现在分支的管理更灵活和强大。本文主要总结Git的特性和一些操作命令,在文末会对Git和SVN做一个简要的对比。

目录

1.Git概要介绍

2.Git的基本命令

3.Git的分支管理

 4.Git的工作流程

5.Git的高级命令和技巧

6. Git的远程操作和协作流程

7. Git的冲突和合并策略

8.Git的标签管理

9.Git的子模块管理

10. Git的引用管理

11.Git的钩子(hooks)系统

12. Git的性能优化和调试技巧

13.Git的邮件工作流

14.Git的子命令和辅助工具

15.Git的配置选项

16.Git的安全性和权限管理

17.Git的日志和审计功能

18.Git的打包和存档功能

19.Git的网络操作

20.Git的维护和故障排除

21.Git与SVN特点对比


1.Git概要介绍
概念解释
版本控制版本控制是一种记录文件变更历史的方法,Git是一种分布式版本控制系统
分布式每个开发者都有完整的代码库副本,可以独立提交和合并代码
仓库(Repository)存储项目文件和历史记录的地方,可以是本地或远程的
提交(Commit)将文件的变更记录到本地仓库中
分支(Branch)用于开发新功能或修复bug的独立开发线
合并(Merge)将一个分支的更改合并到另一个分支
冲突(Conflict)当两个分支有相同的更改时,合并时可能会发生冲突
克隆(Clone)创建本地仓库的副本,通常用于开始一个新的开发工作
拉取(Pull)从远程仓库获取最新的更改并合并到本地仓库
推送(Push)将本地仓库的更改推送到远程仓库
2.Git的基本命令
命令描述
git init初始化一个新的Git仓库
git clone克隆一个远程仓库到本地
git add将文件的更改添加到暂存区
git commit提交暂存区的更改到本地仓库
git status查看当前仓库的状态,包括未跟踪的文件和更改
git log显示提交历史
git branch列出所有分支,或创建/删除分支
git checkout切换到指定的分支或提交
git merge将一个分支的更改合并到当前分支
git pull从远程仓库拉取最新的更改并合并到本地分支
git push将本地分支的更改推送到远程仓库
git fetch从远程仓库获取最新的更改,但不自动合并
git diff显示文件更改的内容,或显示两个提交之间的差异
git reset重置当前HEAD到指定的状态,可以用于撤销提交
git rm从仓库中删除文件
git mv移动或重命名文件
git tag创建、列出、删除或验证标签
git config获取和设置Git配置选项
git stash临时保存工作进度,允许你切换分支而不丢失未提交的更改
gitignore指定Git应忽略的文件或文件夹
3.Git的分支管理
命令描述
git branch列出所有分支,可以使用 -b 创建新分支,或使用 -v 查看分支合并关系
git branch -a列出所有分支,包括远程的
git branch --all同上,--all 是 -a 的简写
git branch -r列出所有远程分支
git branch -d删除指定分支
git branch -m重命名分支
git checkout -b创建并切换到新分支
git checkout切换到指定分支
git merge将指定分支的更改合并到当前分支
git rebase将当前分支上的更改应用到另一分支上,重新设置基底
git cherry-pick将一个特定的提交应用到当前分支上
git branch --set-upstream-to设置当前分支跟踪的远程分支
git branch --unset-upstream取消当前分支跟踪的远程分支
git branch --contains查看哪些分支包含特定的提交
git branch --no-merge查看哪些分支尚未合并到指定分支
 4.Git的工作流程
工作流程步骤描述
git init初始化一个新的Git仓库
git clone克隆远程仓库到本地
git checkout -b创建并切换到新的分支
修改文件在本地进行文件的修改
git status查看当前工作目录的状态
git add将修改添加到暂存区
git commit提交更改到本地仓库
git push将本地分支的更改推送到远程仓库
git fetch从远程仓库获取最新的更改
git merge将远程分支的更改合并到本地分支
git pull拉取远程分支的更改并合并到本地分支(git fetch + git merge
git branch -d删除本地分支
git branch -r -d删除远程分支
git log查看提交历史
git diff查看文件差异或提交之间的差异
5.Git的高级命令和技巧
命令描述
git bisect二分查找,用于确定引入bug的提交
git blame显示文件的每一行的最后修改者和修改提交
git grep在工作目录或索引中搜索字符串
git ls-files列出当前Git跟踪的文件
git reflog显示本地仓库的操作日志
git reset --hard将HEAD重置到特定状态,并丢弃所有更改
git reset --soft将HEAD重置到特定状态,但不丢弃更改
git reset --mixed默认选项,重置HEAD但不丢弃更改
git revert创建一个新的提交,撤销之前提交的更改
git clean清除未跟踪的文件
git stash save保存当前的工作进度,清理工作目录
git stash list列出所有的储藏列表
git stash pop恢复最近的储藏,并从储藏列表中移除它
git stash apply应用指定的储藏到当前工作目录
git cherry-pick将一个或多个提交应用到当前分支
git rebase -i交互式变基,用于修改、删除或重新排序提交
git submodule管理项目中的Git子模块
git worktree允许你拥有多个工作目录,指向仓库的不同分支或提交
git gc清理不必要的文件和优化本地仓库的存储
git fsck检查Git仓库的完整性和腐败的文件
6. Git的远程操作和协作流程
命令描述
git remote add添加一个新的远程仓库
git remote -v列出所有已知的远程仓库及其URL
git remote rename重命名远程仓库
git remote rm删除远程仓库
git fetch从远程仓库获取最新的更改但不自动合并
git pull拉取远程分支的更改并尝试自动合并到当前分支
git push将本地分支的更改推送到远程仓库
git push -u推送本地分支到远程仓库,并设置为上游分支
git push --force强制推送更改到远程仓库,可能会覆盖远程仓库的更改
git remote update更新远程仓库引用
git remote show显示远程仓库的详细信息
git ls-remote列出远程仓库中的引用
git remote set-url设置或更新远程仓库的URL
git remote prune移除远程仓库中已不存在的引用
git remote branch管理远程分支
git remote prune origin移除本地仓库中不再存在的远程分支
git fetch --prune在获取数据的同时清理过时的远程跟踪分支
git push --mirror将本地仓库的所有分支和标签推送到远程仓库,适合创建镜像仓库
git remote set-branches设置远程跟踪分支
git remote set-head设置远程仓库的HEAD引用,指向特定的分支或提交
7. Git的冲突和合并策略
命令描述
git merge将一个分支的更改合并到当前分支
git mergetool启动图形化合并工具来帮助解决合并冲突
git diff --cached显示暂存区与上一个提交之间的差异
git diff显示工作目录与暂存区或当前分支的差异
git status显示当前工作目录的状态,包括未跟踪的文件和更改
git add将文件的更改添加到暂存区
git commit提交暂存区的更改到本地仓库
git rebase将当前分支上的更改应用到另一分支上,重新设置基底
git cherry-pick将一个特定的提交应用到当前分支上
git reset --merge取消自动合并操作,通常在合并冲突时使用
git reset --abort取消变基操作,通常在变基冲突时使用
git log查看提交历史,可以查看分支合并和变基的历史
git reflog查看本地仓库的操作日志,用于恢复丢失的提交
git revert创建一个新的提交,撤销之前提交的更改
git clean -n显示将要被清除的未跟踪文件,不执行清除
git clean -f清除工作目录中的未跟踪文件
git reset --hard重置当前HEAD到指定的状态,并丢弃所有更改
git reset --soft将HEAD重置到特定状态,但不丢弃更改
git reset --mixed默认选项,重置HEAD但不丢弃更改
git config --global merge.conflictstyle diff3设置合并冲突样式为diff3,显示所有父提交的内容

在Git中,冲突解决和合并策略是版本控制中常见的操作,特别是在多人协作的项目中。这些命令和配置选项可以帮助开发者更有效地处理分支合并时产生的冲突。 

8.Git的标签管理
命令描述
git tag列出当前仓库的所有标签
git tag <tagname>创建一个新标签,可以是轻量级标签(不附加任何信息)
git tag -a <tagname>创建一个带附加信息的标签(注释标签)
git tag -s <tagname>创建一个带签名的标签
git tag -d <tagname>删除一个标签
git show <tagname>查看标签的详细信息
git push tag <tagname>将本地标签推送到远程仓库
git push --tags推送所有本地标签到远程仓库
git fetch --tags从远程仓库拉取所有标签
git tag -l列出所有标签
git tag -a <tagname> -m "message"创建带消息的注释标签
git verify-tag验证GPG签名的标签
git tag -f强制创建标签,即使该标签名已存在
git describe显示特定的提交,通常是最近的标签,加上距离标签的提交数量
git ls-remote --tags <remote>列出远程仓库的所有标签
git checkout <tagname>切换到标签所在的提交
git tag --delete <tagname>删除本地标签,-d 是 delete 的简写
git push ---delete <tagname>删除远程仓库中的标签
git for-each-ref refs/tags显示所有标签的详细信息
git tag --sort=-v:refname按版本号排序标签列表

标签管理是Git中用于标记特定提交的一种机制,常用于版本发布。通过标签,可以轻松地引用和共享特定的代码快照。

9.Git的子模块管理
命令描述
git submodule add添加一个新的子模块到仓库
git submodule update更新所有子模块到最新的提交
git submodule init初始化所有子模块
git submodule管理子模块的命令,可以查看、更新、添加子模块
git submodule status显示所有子模块的状态
git submodule deinit取消初始化子模块,停止跟踪子模块
git submodule sync同步所有子模块的远程URL
git submodule foreach对所有子模块执行命令
git submodule update --remote更新子模块到其远程仓库的最新状态
git clone --recurse-submodules克隆仓库时也克隆所有子模块
git submodule update --init --recursive初始化并更新所有子模块,递归地
git submodule set-branch设置子模块的跟踪分支
git submodule set-url设置子模块的远程仓库URL
git submodule absorbgitdirs将子模块的 .git 目录合并到父仓库中
git submodule <submodule-name> update --remotes更新指定子模块的远程跟踪分支
git submodule <submodule-name> branch --set-upstream设置子模块的上游分支
git config -f .gitmodules编辑 .gitmodules 文件,定义子模块的元数据
git submodule foreach git pull为所有子模块拉取最新的更改
git submodule <submodule-name> diff显示指定子模块的更改差异
git archive --format=tar --submodules=all -o archive.tar HEAD归档当前仓库及其所有子模块的状态到tar文件

子模块允许你将一个Git仓库作为另一个仓库的子目录。这在大型项目中非常有用,特别是当你需要依赖外部库或项目时。

10. Git的引用管理
命令描述
git reflog显示本地仓库的操作日志,包括HEAD的变化和分支的更新
git show-ref显示所有已知的引用,包括分支和标签
git symbolic-ref显示或更新一个符号引用,如分支
git ls-remote列出远程仓库中的引用
git update-ref更新一个引用的目标,通常用于脚本
git for-each-ref对仓库中每个引用执行命令
git rev-parse解析出引用或对象的SHA-1哈希值
git log -g显示关于引用的日志
git whatchanged显示一个分支的日志,不包括合并的提交
git ls-tree列出树对象的内容,不包括树的树和blob
git cat-file显示Git对象的内容,如blob、tree或commit
git update-index直接修改索引文件,而不是通过git add
git name-rev显示基于引用的简化的名字,如分支或标签
git branch -r列出所有远程分支
git branch -a列出所有分支,包括本地和远程
git checkout切换到指定的分支或标签
git reset重置当前HEAD到特定的状态,可以是提交、树或blob
git branch --set-upstream-to为本地分支设置上游分支
git branch --unset-upstream移除本地分支的上游设置
git remote set-head设置远程仓库的HEAD引用,指向特定的分支或提交

引用管理是Git中用于操作和管理引用(如分支和标签)的命令集合。这些命令对于理解和操作Git的内部结构非常有用,尤其是在自动化脚本和高级Git操作中。

11.Git的钩子(hooks)系统
钩子类型描述
pre-commit在本地提交之前运行,常用于检查代码质量
post-commit提交后运行,可以用来发送通知或执行后续操作
pre-rebase在开始变基操作之前运行
post-checkout检出分支或文件后运行
post-merge合并操作后运行
pre-push在推送操作之前运行,可以用来进行最后一刻的检查
post-push推送操作完成后运行
pre-receive在接收推送之前运行,常用于服务器端验证
update用于更新引用,如在接收推送时
post-receive接收推送后运行,可以用来更新服务或触发构建
pre-auto-gc在自动垃圾收集之前运行
post-rewrite在历史重写(如 git commit --amend 或 git rebase)之前运行
prepare-commit-msg在准备提交信息模板之前运行
commit-msg在提交信息编写完成后、提交之前运行
pre-applypatch在应用补丁之前运行
post-applypatch在应用补丁之后运行
pre-merge-commit在合并提交创建之前运行
post-merge-commit在合并提交创建之后运行
pre-push在执行本地 git push 之前运行
fsmonitor监控文件系统更改,用于某些高级用途

钩子是Git仓库中的一种机制,允许在特定的Git事件发生时自动执行自定义脚本。这些脚本可以用于自动化常规任务、执行安全检查、运行测试或更新其他系统。

12. Git的性能优化和调试技巧
命令描述
git gc清理不必要的文件,优化仓库的存储
git gc --prune=<date>清理指定日期前未被任何对象引用的文件
git gc --aggressive执行更彻底的清理操作
git fsck检查Git仓库的完整性和错误
git reflog显示本地引用的日志,用于恢复丢失的对象或提交
git count-objects显示仓库中对象数据库的统计信息
git repack重新打包仓库中的松散对象
git config配置Git的性能选项,如大文件存储等
git config --list列出所有配置选项
git config --get获取特定配置项的值
git config --unset删除配置项
git config --edit编辑配置文件
git largefilelist管理大文件的排除列表
git lfsGit Large File Storage,用于处理大型文件
git bisect二分查找引入bug的提交
git blame -C显示文件每一行的最后修改者,考虑代码移动
git log --stat显示提交的统计信息,包括每个文件的更改
git log -p显示每个提交的内容差异
git log --pretty使用自定义格式显示日志
git log --graph显示分支和合并的图形化表示

性能优化和调试是Git使用过程中的重要部分,特别是在处理大型项目或需要维护长时间运行的仓库时。这些命令和配置选项可以帮助提高Git操作的效率,减少资源消耗,并帮助开发者更好地理解和控制Git的行为。

13.Git的邮件工作流
命令描述
git am应用邮件格式的补丁
git format-patch从提交中生成邮件格式的补丁
git send-email发送一个或多个补丁或提交到指定的邮箱
git request-pull生成一个摘要,用于请求从其他分支拉取更改
git imapsend将补丁发送到IMAP服务器
git ams用于处理邮件格式的补丁
git apply应用一个补丁,但不记录到项目历史中
git cherry-pick将一个或多个提交应用到当前分支上
git fetch从远程仓库获取最新的更改但不自动合并
git push将本地分支的更改推送到远程仓库
git pull拉取远程分支的更改并尝试自动合并到当前分支
git rebase将当前分支上的更改应用到另一分支上,重新设置基底
git archive将特定分支或提交的文件导出为一个存档文件
git diff显示提交、分支或文件的差异
git log显示提交历史
git shortlog显示提交历史的概要信息
git tag创建、列出、删除或验证标签
git blame显示文件的每一行的最后修改者和修改提交
git notes添加或查看关于提交的注解
git grep在工作目录或索引中搜索字符串

邮件工作流是一种使用邮件客户端来促进分布式版本控制系统中协作者之间沟通的Git工作模式。它允许开发者通过电子邮件发送补丁,然后由项目维护者将这些补丁应用到主仓库中。

14.Git的子命令和辅助工具
命令描述
git help <command>显示特定命令的帮助信息
git help -g显示所有可用的Git命令
git help -a显示所有可用的帮助主题
git help -w显示帮助主题的完整路径
git help --all显示所有帮助主题的列表
git help --man显示所有可用的man页
git help --web在浏览器中打开当前命令的帮助页面
git help --guide显示一些有用的Git指南链接
git help config显示关于Git配置选项的帮助信息
git help everyday显示日常使用Git的指南
git help glossary显示Git的术语表
git help tutorial显示Git教程
git help concepts显示Git的核心概念
git help workflows显示Git的工作流程
gitk启动Git的图形化界面查看工具
git-gui启动Git的图形用户界面
tig另一个文本模式的Git界面查看工具
git-cola一个跨平台的图形用户界面(GUI)
git status显示工作目录的状态
git diff显示当前工作目录与暂存区或分支的差异

Git提供了多种辅助工具和子命令来帮助用户更好地理解和使用Git。这些工具和命令可以提供额外的信息和功能,帮助用户更有效地管理项目

15.Git的配置选项
配置选项描述
user.name设置提交时使用的用户名
user.email设置提交时使用的电子邮件地址
commit.template为提交信息指定一个模板文件
core.editor指定默认的文本编辑器
core.excludesfile指定排除文件的列表
core.pager用于分页显示的程序
color.ui是否使用颜色高亮显示
push.default设置推送操作的默认行为
merge.tool指定合并时使用的图形用户界面工具
merge.conflictstyle设置合并冲突的显示风格
rebase.autosquash在交互式变基时自动压缩提交
branch.autosetuprebase设置新分支是否默认使用变基操作
branch.<branchname>.remote设置分支的上游分支
branch.<branchname>.merge设置分支合并的引用
remote.origin.url设置远程仓库origin的URL
remote.origin.fetch设置从origin远程仓库拉取时的默认引用
alias.<aliasname>为Git命令设置别名
core.autocrlf在Windows上自动转换换行符
core.filemode设置是否跟踪文件权限的更改
core.ignorecase设置在忽略文件时是否忽略大小写

Git的配置选项允许用户根据个人或项目的需要定制Git的行为。这些配置可以是全局的、针对特定仓库的,或者是系统级别的。

16.Git的安全性和权限管理
命令/配置描述
git config http.sslVerify设置是否验证SSL证书
git config core.protectHFS保护HFS+文件系统,防止创建不合法的文件名
git config core.protectNTFS保护NTFS文件系统,防止创建不合法的文件名
git config core.sharedRepository设置仓库是共享的还是单用户使用的
git config receive.denyNonFastForwards拒绝非快进推送,防止覆盖远程分支上的更改
git config receive.denyDeletes拒绝删除分支或标签的推送
git config receive.denyCurrentBranch阻止推送到当前分支,保护默认分支
git config transfer.fsckObjects在传输对象时检查对象的完整性
git config core.bare设置仓库是否为裸仓库
git config core.packedGitWindowSize设置打包Git对象时使用的内存大小
git config core.packedGitLimit设置允许的打包Git对象的大小
git config core.packedGitUseLoose设置在什么情况下使用松散对象
git config core.untrackedCache设置是否启用未跟踪文件的缓存
git config core.ignoreStat设置是否忽略文件的统计信息
git config credential.helper设置凭据存储帮助程序,用于存储和检索认证信息
git config http.postBuffer设置HTTP POST请求的最大缓冲区大小
git config pack.window设置打包Git对象时使用的内存大小
git config pack.depth设置打包Git对象时的深度
git config pack.compression设置打包Git对象时的压缩级别
git config gc.auto设置自动垃圾收集的阈值

安全性和权限管理是Git中重要的方面,尤其是在团队协作和公共仓库中。通过适当的配置和命令,可以保护仓库不受未授权的访问和潜在的安全威胁。

17.Git的日志和审计功能
命令描述
git log显示提交历史
git log --oneline以精简的一行格式显示提交历史
git log --graph以图形化的方式显示分支和合并的历史
git log --stat显示每个提交的文件更改统计
git log -p显示每个提交的差异
git log --pretty使用自定义格式显示日志
git log --follow显示文件的详细历史,包括重命名
git log --since显示指定时间之后的提交
git log --until显示指定时间之前的提交
git log --author显示由特定作者提交的提交
git log --grep搜索提交信息中包含特定文本的提交
git log --committer显示由特定提交者提交的提交
git shortlog以摘要形式显示提交历史
git reflog显示本地引用的日志,用于恢复丢失的对象或提交
git show显示特定的提交、分支或标签的信息
git whatchanged显示一个分支的日志,不包括合并的提交
git log --online显示简化的提交历史
git log --decorate显示引用信息,如分支和标签
git log --abbrev-commit显示简短的SHA-1哈希值
git blame显示文件的每一行的最后修改者和修改提交

日志和审计是Git中用于追踪项目历史和变更的重要工具。通过这些命令,用户可以获取关于提交、分支、标签和其他Git对象的详细信息。

18.Git的打包和存档功能
命令描述
git archive将特定分支或提交的文件导出为一个存档文件
git bundle创建一个包含特定提交或分支的包,以便在没有网络的情况下传输
git bundle create创建一个包文件
git bundle verify验证包文件的内容是否完整
git bundle list列出包文件中包含的引用
git gc清理不必要的文件,优化仓库的存储
git prune移除未被任何引用跟踪的对象
git reflog expire设置引用日志的过期时间
git pack-objects将松散的对象打包成一个包文件
git unpack-objects从包文件中解包对象
git repack重新打包仓库中的松散对象
git gc --prune清理过期的包文件和未使用的对象
git gc --aggressive执行更彻底的清理操作
git gc --auto设置自动垃圾收集的阈值
git gc --quiet安静模式执行垃圾收集
git gc --no-prune执行垃圾收集,但不清理过期的包文件
git gc --keep-largest-pack保留最大的包文件,不进行清理
git gc --no-keep-largest-pack允许清理最大的包文件
git gc --strict严格模式,检查潜在的错误
git gc --help显示垃圾收集命令的帮助信息

Git的打包和存档功能允许用户将仓库的状态导出为一个文件,这对于备份和迁移非常有用。垃圾收集(Git GC)则是用来清理不必要的文件,优化仓库的存储和性能。

19.Git的网络操作
命令描述
git fetch从远程仓库获取数据但不自动合并
git pull拉取远程仓库的数据并尝试合并到当前分支
git push将本地分支的更改推送到远程仓库
git remote显示或管理远程仓库的引用
git remote add添加一个新的远程仓库
git remote rename重命名远程仓库
git remote remove删除远程仓库
git remote set-url设置或更新远程仓库的URL
git ls-remote显示远程仓库的对象信息
git remote update更新所有远程仓库的引用
git remote show显示远程仓库的详细信息
git remote prune移除远程仓库中已不存在的引用
git submodule sync同步子模块的远程URL
git submodule update --init初始化所有子模块并更新到远程仓库的状态
git submodule foreach对所有子模块执行命令
git ls-remote --heads列出远程仓库的所有分支
git ls-remote --tags列出远程仓库的所有标签
git fetch --all从所有远程仓库获取数据
git fetch --prune在获取数据的同时清理过时的远程跟踪分支
git push --mirror将本地仓库的所有分支和标签推送到远程仓库,适合创建镜像仓库

网络操作是Git中用于与远程仓库交互的命令集合。这些命令允许用户共享和获取代码,以及管理远程仓库的引用。

20.Git的维护和故障排除
命令描述
git fsck检查Git仓库的完整性,查找丢失的对象或损坏的引用
git fsck --full执行更彻底的检查
git fsck --no-reflogs检查时不使用reflog文件
git prune移除未被任何引用跟踪的对象
git gc清理不必要的文件,优化仓库的存储
git reflog显示本地引用的日志,用于恢复丢失的对象或提交
git update-ref直接更新引用的目标,用于故障排除
git show-ref显示仓库中所有引用的目标
git lost-found恢复在清理过程中丢失的提交
git rerere重用记录的冲突解决方案
git config检查和修正配置问题
git help获取Git命令的帮助信息
git --no-pager禁止使用分页器,直接在终端中显示输出
git status显示当前工作目录的状态
git diff显示工作目录与最近提交的差异
git log --all --graph --decorate --oneline显示所有分支的图形化简化历史
git branch -avv显示所有本地和远程跟踪分支的最后提交
git clean清除工作目录中的未跟踪文件
git stash临时保存工作进度,允许你切换分支而不丢失未提交的更改
git bisect二分查找引入bug的提交

维护和故障排除是Git使用过程中的重要部分,尤其是在遇到问题时。这些命令和配置选项可以帮助用户诊断问题、恢复丢失的数据、优化仓库性能以及更好地理解Git的状态。

21.Git与SVN特点对比
特性GitSVN
架构分布式版本控制系统集中式版本控制系统
分支操作轻量级,分支是提交的引用较重量级,分支是目录的拷贝
用户体验学习曲线陡峭,功能强大简单易上手,对新手友好
权限控制缺乏内置的细粒度权限控制,虽然可以通过钩子(hooks)实现一些权限控制提供基于路径的细粒度权限控制,允许对每个文件和目录设置不同的读写权限
存储和性能对二进制文件存储不如SVN友好高效处理大型二进制文件
工作流程支持多种工作流程,如集中式、功能分支、Gitflow通常围绕一个中央仓库进行,适合企业内部多个并行项目的开发
社区和工具支持得到GitHub等平台的推广,有庞大社区支持稳定的用户基础,企业环境中广泛使用
适用场景开源项目、大型项目和需要复杂版本控制的场景企业内部项目、需要严格权限控制的项目
版本号没有全局版本号有全局版本号
内容完整性使用SHA-1哈希算法确保内容完整性不适用
锁定机制不提供独占文件锁定支持Lock-Modify-Unlock模型,使用svn:needs-lock属性
离线工作支持,可以本地推送和提交代码必须联网才能工作
合并冲突冲突解决不再像是SVN一样的提交竞赛,而是在需要的时候才进行冲突解决是一个提交速度的竞赛
项目管理适合通过Internet协作的单个项目开发适合企业内部由项目经理统一协调的多个并行项目的开发
分支管理可以针对整个仓库作branch,一旦删除,便无法恢复branch可以针对任何子目录,本质上是一个拷贝操作
版本号管理使用128位ID作为版本号,需要注明是哪个branch使用递增的序列号作为全局唯一的版本号,简明易懂
更新和还原可以通过历史版本还原,但无法简单地实现局部还原可以实现局部更新或者还原
安全性无法进行权限控制,代码的可见范围受限支持文件级权限控制,适合看重数据安全的公司

Git和SVN在面试中倒是很少会问,因为这只是一个简单的项目版本管理工具,重在实践,默认做开发都会,所以没必要写在简历中,也没必要为面试准备,主要还是要在项目中多实践,熟能生巧以及领悟各个命令的作用。

  • 31
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值