当前位置: 首页 > news >正文

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

相关文章:

Git知识点汇总表格总结

Git应该是现在各个做开发公司使用最广泛的版本管理工具了&#xff0c;还有一些公司可能用的SVN&#xff0c;不过总体来说&#xff0c;Git绝对是主流&#xff0c;SVN是集中式版本管理&#xff0c;使用起来相对Git更简单&#xff0c;不过功能相对Git也略显简略&#xff0c;Git的优…...

漫谈:C语言 奇葩的指针定义规则

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 C语言的语法很麻拐。 初学者的…...

spring boot中一般如何使用线程池

在Spring Boot中&#xff0c;线程池作为并发编程的核心工具&#xff0c;对于提升应用程序性能、优化资源利用和保证系统稳定性具有重要作用。本文将详细阐述如何在Spring Boot中正确使用线程池&#xff0c;包括配置参数、实例化、任务提交、监控及常见问题处理等环节&#xff0…...

Shader 纹理动画和顶点动画

一、内置变量--时间 要实现动画&#xff0c;我们需要把时间添加到计算当中&#xff0c;让画面可以随着时间变化而变化。在Unity Shader提供了如下关于时间的内置变量以便于在shader中访问时间实现各种动态效果。 名称类型描述_Timefloat4t是自该场景加载开始所经过的时间&…...

使用macof发起MAC地址泛洪攻击

使用macof发起MAC地址泛洪攻击 MAC地址泛洪攻击原理&#xff1a; MAC地址泛洪攻击是一种针对交换机的攻击方式&#xff0c;目的是监听同一局域网中用户的通信数据。交换机的工作核心&#xff1a;端口- MAC地址映射表。这张表记录了交换机每个端口和与之相连的主机MAC地址之间…...

力扣:1979. 找出数组的最大公约数(Java)

目录 题目描述&#xff1a;输入&#xff1a;输出&#xff1a;代码实现&#xff1a; 题目描述&#xff1a; 给你一个整数数组 nums &#xff0c;返回数组中最大数和最小数的 最大公约数 。 两个数的 最大公约数 是能够被两个数整除的最大正整数。 输入&#xff1a; nums [2,5,6…...

电瓶车充电桩:潜藏的暴利行业,简单入门到月入万元!

近几年来&#xff0c;电瓶车凭借其环保、经济特点已成为居民出行的必备工具之一。而促使电瓶车快速普及的原因之一即是电瓶车充电桩的普及。如果留心观察的话&#xff0c;相信大家都可以看出&#xff0c;国内大部分小区都已安装了充电桩设备&#xff0c;电瓶车充电桩已实现了大…...

mac监听 linux服务器性能可视化(Grafana+Promethus+Node_exporter)

Grafana和promethus(普罗米修斯)的安装和使用 监控系统的Prometheus类似于一个注册中心&#xff0c;我们可以只需要配置一个Prometheus,而在其他服务器&#xff0c;只需要安装node_exporter,它们的数据流转就是通过exporter采集数据信息&#xff0c;然后告诉prometheus它的位置…...

【负载均衡在线OJ项目日记】运行功能开发

目录 前言 运行功能开发分析 获取子进程运行信息 程序运行资源限制 运行功能开发代码 前言 上篇文章我们对客户端服务器传来的临时文件进行编译&#xff0c;这篇文章主要对编译成功的代码在我们的服务器运行这块功能的开发。 运行功能开发分析 在运行功能开发之前我们默…...

Qt | QLineEdit 类(行编辑器)

01、上节回顾 Qt | QComboBox(组合框)02、QLineEdit 1、QLineEdit 类是 QWidget 类的直接子类,该类实现了一个单行的 输入部件,即行编辑器,见右图 2、验证器(QValidator 类)和输入掩码简介:主要作用是验证用户输入的字符是否符合验证器 的要求,即限制对用户的输入,比…...

Mamba结构的Demo源码解读

文章目录 前言一、mamba结构构建辅助函数解读1、dataclass方法解读2、Norm归一化LayerNormRMSNormRMSNorm源码 3、nn.Parameter方法解读 二、mamba原理二、mamba模型构建1、主函数入口源码解读2、Mamba类源码解读 三、ResidualBlock的mamba结构源码解读四、MambaBlock构成Resid…...

金仓面对面 | 人大金仓×安硕信息共话金融信用风险管理数字化转型之道

金仓面对面 在数字化浪潮的推动下&#xff0c;人大金仓携手行业先锋&#xff0c;共同开启一场关于创新与转型的思想盛宴——金仓面对面。这不仅是一场对话&#xff0c;更是一次智慧的火花碰撞&#xff0c;一次行业数字化转型洞察的深度挖掘。 行业精英汇聚&#xff1a;我们荣幸…...

JavaScript值类型与引用类型的区别

值类型&#xff08;原始类型&#xff09; 值类型包括&#xff1a;undefined、null、boolean、number、string、symbol 和 bigint。这些类型的特点是&#xff1a; 存储位置&#xff1a;值类型的数据直接存储在栈&#xff08;Stack&#xff09;中。复制行为&#xff1a;当一个值…...

每日一博 - 闲聊架构设计中的多级缓存设计

文章目录 方法论概述客户端缓存应用层缓存服务层缓存缓存设计的注意事项总结 思维导图戳这里 方法论概述 从客户端到服务层&#xff0c;缓存的应用广泛而重要。通过合理的缓存设计&#xff0c;能够有效地提高系统的性能并降低延迟。 客户端缓存 在客户端层面&#xff0c;浏览…...

轻松实现MySQL集群配置:一主一从与一主多从教程

在数据驱动的时代&#xff0c;数据库的高可用性和负载分散成为了维护在线服务稳定运行的关键。MySQL作为世界上最流行的开源关系型数据库管理系统&#xff0c;其集群配置是任何DBA或开发人员必须掌握的技能之一。本文将为您详细介绍如何轻松配置MySQL的一主一从和一主多从集群&…...

Leetcode刷题-(41~45)-Java

算法是码农的基本功&#xff0c;也是各个大厂必考察的重点&#xff0c;让我们一起坚持写题吧。 遇事不决&#xff0c;可问春风&#xff0c;春风不语&#xff0c;即是本心。 我们在我们能力范围内&#xff0c;做好我们该做的事&#xff0c;然后相信一切都事最好的安排就可以啦…...

【Android】源码解析Activity的结构分析

源码解析Activity的结构分析 目录 1、Activity、View、Window有什么关联&#xff1f;2、Activity的结构构建流程3 源码解析Activity的构成 3.1 Activity的Attach方法3.2 Activity的OnCreate 4、WindowManager与View的关系总结 1、一个Activity对应几个WindowManage&#xff0…...

小猪APP分发:重塑应用分发市场的创新力量

在移动互联网蓬勃发展的今天&#xff0c;应用分发平台作为连接开发者与用户的桥梁&#xff0c;扮演着至关重要的角色。然而&#xff0c;随着市场的饱和&#xff0c;如何在众多平台中脱颖而出&#xff0c;为开发者提供更宽广的舞台&#xff0c;同时确保用户能够便捷、安全地获取…...

区块链 | IPFS 工作原理入门

&#x1f98a;原文&#xff1a;What is the InterPlanetary File System (IPFS), and how does it work? &#x1f98a;写在前面&#xff1a;本文属于搬运博客&#xff0c;自己留存学习。 1 去中心化互联网 尽管万维网是一个全球性的网络&#xff0c;但在数据存储方面&#…...

减速机齿数速算

1.齿轮相关参数 1.1 模数 &#xff0c; 因为 齿数*齿距 Pi*直径 所以&#xff1a;直径/齿数 齿距/PI 模数 国标现行标准&#xff08;截止2024/5&#xff09;是&#xff1a; GB/ 1357-2008 / ISO 54-1996 模数有国标的一个序列标准&#xff1a; 1.2.轴径 轴径的国标是&a…...

2万字长文:海豚调度器(DolphinScheduler)面试题深入了解

目录 海豚调度器的主要功能和特点 海豚调度器与Oozie、Azkaban等调度器相比的优势...

全双工音频对讲模块-支持空中升级、多级无线中继

SA618F30是一款高集成的大功率全双工无线音频模块&#xff0c;发射功率高达32dBm。该音频模块简化接口&#xff0c;只需外接音频功放或麦克风即可作为一个小型对讲机&#xff0c;方便快捷嵌入到各类手持设备中。支持多级无线中继&#xff0c;支持OTA空中升级。 SA618F30配备1W…...

Spring扩展点(二)Spring事务生命周期

Spring事务生命周期 Spring事务事务生命周期 接口 TransactionSynchronizationTransactionalEventListener&#xff08;另一种监听事务周期的方式&#xff09; Spring事务 Spring对JDBC事务做了封装&#xff0c;使其易于使用。主要分为声明式事务和编程式事务。 Transactiona…...

foobar2000 for Mac:卓越音乐播放器

当您在寻找一款音质卓越、功能丰富的音频播放器时&#xff0c;foobar2000 for Mac无疑是您的首选。它拥有简洁明了的界面设计&#xff0c;易于上手&#xff0c;同时支持多种音频格式&#xff0c;让您无需担心兼容性问题。 foobar2000 for Mac v2.6.4免激活版下载 foobar2000 fo…...

【自动驾驶|毫米波雷达】初识毫米波雷达射频前端硬件

第一次更新&#xff1a;2024/5/4 目录 整体概述 混频器&#xff08;MIXER&#xff09; 低通滤波器&#xff08;LPF&#xff1a;Low-Pass filter&#xff09; 数模转换器&#xff08;ADC&#xff1a;Analog to Digital Converter&#xff09; 毫米波雷达功能框图 整体概述 完…...

实战BACnet/IP标准通信网关在楼宇自动化中的应用

智慧楼宇建设实现不同设备间的互联互通是一项巨大挑战&#xff0c;尤其是在那些历史悠久的建筑中&#xff0c;新旧系统并存的情况尤为普遍。某大型商业综合体就面临着这样的困境&#xff1a;老旧的暖通空调系统采用Modbus RTU协议&#xff0c;而新部署的能源管理系统却要求BACn…...

设计模式的原则与分类

一、设计模式的原则 1、单一职责原则 一个类只需要负责一种职责即可&#xff0c;一个类发生变化的原因&#xff0c;必然是所负责的职责发生变化 2、接口隔离原则 单一职责原则是接口隔离原则的基础&#xff0c;单一职责原则注重职责的划分&#xff0c;从职责角度进行类和接口…...

在ubuntu虚拟机中手动安装VMware Tools(VMware Workstation 17 player)

可参考官方文档&#xff1a;在 Linux 虚拟机中手动安装 VMware Tools 以下列出我在安装过程中遇见的问题&#xff1a; 1、“安装VMware Tools”选项为灰&#xff0c;无法选中 原因是VMware Tools的安装包镜像在Player的安装目录下&#xff0c;需要在虚拟机启动的时候加载这个…...

十个数据安全最佳实践:保护数据的简单方法

在德迅云安全将介绍数据安全的主要原则&#xff0c;并了解适用于大多数行业的 10 种数据安全最佳实践&#xff0c;以及云端安全检测的重要性。 数据威胁和维护数据安全的好处 什么是数据安全&#xff1f; 数据安全是旨在保护组织敏感资产的流程和工具的组合。有价值的数据在…...

【leetcode】二分搜索题目总结

704. 二分查找 class Solution { public:int search(vector<int>& nums, int target) {int left 0, right nums.size() - 1;while (left < right) {int mid left (right - left) / 2;if (nums[mid] target) {return mid;} else if (nums[mid] < target) …...

万网网站 banner图片不显示/seo分析报告怎么写

HDM(H3C Device Management&#xff0c;H3C设备管理)系统是H3C UIS服务器的一个标准组件&#xff0c;通过它可以简化服务器初始设置、监控服务器运行状况、优化电源和散热系统以及对服务器进行远程管理等。HDM系统依靠智能微处理器、专用内存和共享网络接口等技术&#xff0c;实…...

国家工商商标注册官网查询/seo是什么职业

本文主要了解下面内容&#xff1a;1、JVM常用的配置参数如、内存配置参数、GC策略配置参数、日志配置参数、异常信息参数。2、通过一些辅助指令可以帮助我们查找参数的指令&#xff0c;以及在运行期间查看和更改一些参数配置。3、常用的一些应用启动参数&#xff0c;在项目启动…...

wordpress 审核插件/品牌营销策划有限公司

第一篇文里学习了在路由的基础知识&#xff0c;了解了路由5个对象Routes,RouterLink,RouterOutlet,Router的写法&#xff0c;这篇文里来学习如何在路由时传递数据, 还有如何使用ActivatedRoute的使用方法 传递数据方式主要有3种&#xff0c;说明&#xff1a;第一种&#xff1a;…...

平度网站建设公司/举例一个成功的网络营销案例

转载自 https://www.cnblogs.com/linxiyue/p/7834817.html https://www.jianshu.com/p/f0513d18742a...

新闻网站伪原创同义词/互联网广告投放代理公司

深夜从梦中惊醒&#xff0c;梦中回到了老家&#xff0c;很多场景清晰可见&#xff0c;朋友家的房屋&#xff0c;我家的厨房。惊醒于拿着物体砸向父亲身边的墙体&#xff0c;结果物体反弹回来砸到了父亲的头上&#xff0c;砸开了一个洞。 我彻底惊醒了。 回想起以往生活中自己…...

东莞定制网站建设/企业网站网页设计

网络下载图片方法一&#xff1a;//处理图片url---下载图片---保存图片到相册 //-(void)dealDownloadImageStr{ // dispatch_queue_t queue dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); // dispatch_semaphore_t semaphore dispatch_semaphore_cre…...