Git & SVN 的区别
- Git 是分布式的,有本地和远程两个版本库,SVN是集中式,只有一个远程版本库
- Git把内容按元数据方式存储,而SVN是按文件:因为,.git目录是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。.git目录的体积大小跟.svn比较,你会发现它们差距很大
- Git没有一个全局版本号,而SVN有:目前为止这是跟SVN相比Git缺少的最大的一个特征
- 刚开始用时很狗血的一点,SVN必须先Update才能Commit,忘记了合并时就会出现一些错误,git还是比较少的出现这种情况。
Git & SVN 命令区别
作用 | git | svn |
---|
版本库初始化 | git init | svn create | clone | git clone | svn co(checkout) | add | git add (.除去.gitignore,*所有的文件) | svn add | commit | git commit | svn commit | pull | git pull | svn update | push | git push | - | 查看工作状态 | git status | svn status | 创建分支 | git branch <分支名> | svn cp <分支名> | 删除分支 | git branch -d <分支名> | svn rm <分支名> | 分支合并 | git merge <分支名> | svn merge <分支名> | 工作区差异 | git differ (-cached / head) | svn diff | 更新至历史版本 | git checkout | svn update -r | 切换tag | git checkout | svn switch | 切换分支 | git checkout branch | svn switch branch | 还原文件 | git checkout - path | svn revert path | 删除文件 | git rm path | svn rm path | 移动文件 | git mv path | git mv path | 清除未追踪文件 | git clean | svn status sed -e |
Git 使用
Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目
版本控制
- 版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。
- 版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换
Git工作机制
- Workspace:工作区,就是你平时存放项目代码的地方
- Index / Stage:暂存区,,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
- Repository:仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
- Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换
Git和代码托管中心
代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库
Git安装
官网地址:https://git-scm.com/
https://github.com/git-for-windows/git/releases/download/v2.37.3.windows.1/Git-2.37.3-64-bit.exe
安装
可以观看的安装网站:https://blog.csdn.net/fzx1597965407/article/details/124371720
Git基本命令
命令名称 | 作用 |
---|
git config --global user.name 用户名 | 设置用户签名 | git config --global user.email 邮箱 | 设置用户签名 | git init | 初始化本地库 | git status | 查看本地库状态 | git add 文件名 | 添加到暂存区 | git commit m " 日志信息 " 文件名 | 提交到本地库 | git reflog | 查看历史记录 | git reset hard 版本号 | 版本穿梭 |
设置用户签名
设置登录的用户,这个只是标识而已
git config --global user.name 用户名
设置登录的邮箱,这个只是标识而已
git config --global user.email 邮箱
查看git的版本信息
git --version
查看当前登录的用户
git config --global user.name
查看当前登录用户的邮箱
git config --global user.email
这个用户指的是你当前使用的这个用户,在自己 C:\Users\用户\xxx 下有个 .gitconfig 文件,打开里面就是我们设置的用户签名
如果没有配置这个用户签名,否则没有办法可以提交代码 ,签名的作用是标识区分不同的操作者的身份的。注意:这里设置的用户签名和将来登录 GitHud(或者其他的代码托管中心)的账号是没有任何的关系的
初始化本地仓库
luoch@monster MINGW64 /e/app/test (master)
$ ll -a
total 8
drwxr-xr-x 1 luoch 197609 0 Oct 2 11:41 ./
drwxr-xr-x 1 luoch 197609 0 Oct 2 11:41 ../
drwxr-xr-x 1 luoch 197609 0 Oct 2 11:41 .git/
.git文件解释
任意文件夹中,用 git init 命令初始化仓库,即可在此文件夹下创建 .git 文件夹(. 打头为隐藏文件夹,所以平时可能看不到)。这个文件夹之外的部分叫做工作区(Working Directory),.git 文件夹我们称做 Git仓库 (Git Repository)
介绍:https://developer.aliyun.com/article/716483
查看本地库状态
新建文件
在查看的时候,先保存!
添加到暂存区
添加暂存区
git add 文件名
git add 文件夹名/.
提交本地库
提交
git commit -m "日志消息" 文件名
修改文件
历史版本
查看日志消息
git reflog
git log
版本穿梭
git reset --hard 版本号
Git分支
- 在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支
- 使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行
- 对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本
分支的好处
- 同时并行推进多个功能开发,提高开发效率。
- 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
分支的操作
命令名称 | 作用 |
---|
git branch 分支名 | 创建分支 | git branch -v | 查看分支 | git checkout 分支名 | 切换分支 | git merge 分支名 | 把指定的分支合并到当前分支上 |
查看分支
git branch -v
创建分支
git branch 分支名
切换分支
git checkout 分支名
修改分支中的文件
合并分支
你如果想把 dev分支合并到 master分支,那你的指针应该指向 master分支上进行合并
git merge 要合并的分支名
产生冲突
冲突产生的原因:
- 合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。
- 有两套完全不同的修改。 Git无法替我们决定使用哪一个。必须 人为决定新代码内容
我们首先在 master 分支的倒数第二行进行修改,并将其添加到暂存区,再提交到本地库
接着,我们去 dev 分支的倒数第一行进行修改,并将其添加到暂存区,再提交到本地库
之后我们在 master 分支上合并 dev 分支,发现产生冲突
解决冲突,在 master分支中修改冲突文件
代码托管中心
远程仓库操作
命令名称 | 作用 |
---|
git remote -v | 查看当前所有远程地址别名 | git remote add 别名 远程地址 | 起别名 | git push 别名 分支 | 推送本地分支上的内容克隆到本地 | git clone 远程地址 | 将远程仓库的内容克隆到本地 | git pull 远程库地址别名 远程分支名 | 将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并 |
跨团队协作
令狐冲请东方不败改代码,东方不败通过 fork 命令从岳不群的的远程库中拿取代码,再通过 clone 克隆命令到自己的本地库,修改完成后使用 push 推送到在自己的远程库,使用 Pull request 拉取请求给岳不群,岳不群审核完成后使用 merge 命令合并对方的代码到自己的远程库中,再通过 pull 命令到自己的本地库中,这样修改过后的华山剑法岳不群和令狐冲就都可以使用了
GitHud
GitHub 网址:https://github.com/
创建远程仓库
查看远程仓库地址
git remote -v
创建远程仓库别名
git remote add 别名 远程地址
推送本地分支到远程仓库
git push 别名 分支 或者 git push 别名
去到GitHub进行观看
拉取远程库分支到本地库
git pull 别名 分支 或者 git pull 别名
克隆远程仓库到本地
克隆不需要登录账号就可以克隆,除非对方的私有库,而且还没有把你拉进私有库
git clone 远程地址
团队内协作
推送失败了,这是因为令狐冲还不是岳不群的弟子(仓库开发者)
现在岳不群在招弟子了,于是他想把令狐冲招进去(仓库开发者),于是他开启一套的流程
现在令狐冲是岳不群的弟子了(仓库开发者),于是它在push就可以了,而且令狐冲可以在自己的找可以看到岳不群的仓库的
跨团队协作
岳不群将仓库链接发个了东方不败,东方不败也进行fork到自己的账号中了
东方不败修改完代码后拉取请求
点击进去之后可以看到的,可以聊天也可以同意对方的请求
SSH登录
ssh-keygen -t rsa -C atguiguyueyue@aliyun.com
cd .ssh/
cat id_rsa.pub
将钥匙放到账号中,在账号中找到设置
Gitee
官网:https://gitee.com/
创建仓库
删除仓库
IDEA 集成 Git
配置Git忽略文件
在用户家(C/User/用户名) 下创建 git.ignore
*.class
*.log
*.ctxt
.mtj.
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
.classpath
.project
.settings
target
.idea
*.iml
在 .gitconfig 文件中引用忽略配置文件(.gitconfig 在家目录中)
[core] excludesfile = C:/Users/xxxxx/git.ignore
IDEA初始化本地库
使用IDEA初始化 git项目,初始化之后我们可以用文件夹看到 .git文件夹,前提是你开了可以看隐藏文件
IDEA添加到暂存区
将所有的添加完了,现在我们要做的是提交文件
IDEA切换版本
IDEA创建分支和切换分支
第一种创建分支的方法
第二种创建分支的方法,点一下也是可以创建得
点击了 new branch
切换分支
IDEA合并
正常合并
切换成 master 分支了
冲突合并
现在 master 和 hot-fix分支都是一样得代码,现在 hot-fix修改了代码
提交成功之后,切换分支到master,如果到了master分支直接就是合并那肯定是正常合并得,所以我们在合并之前也在master修改代码
IDEA 集成 GitHud
IDEA登录 GitHud
idea登录githud(1)
idea登录githud(2)
获取githud令牌
IDEA将项目分享GitHud上
push推送本地库到远程库
第一种 push
第二种 push
push
远程端仓库
pull拉取远程库到本地库
注意:push是将本地库代码推送到远程库,如果本地库代码跟远程库代码版本不一致,push的操作是会被拒绝的。也就是说, 要想 push成功,一定要保证本地 库的版本要比远程库的版本高! 因此一个成熟的程序员在动手改本地代码之前,一定会先检查下远程库跟本地代码的区别!如果本地的代码版本已经落后,切记要先 pull拉取一下远程库的代码,将本地代码更新到最新以后,然后再修改,提交,推送!
clone克隆远程库到本地库
删除现在得项目
IDEA 集成 Gitee
将项目分享到gitee上
push项目
pull项目
复制GitHud项目
强制更新
githud上面得代码发生了修改
凭证管理器
Git速查表
SVN 使用
SVN的全称是Subversion,SVN是一个跨平台的开源的版本控制系统,svn版本管理工具管理着随时间改变的各种数据,这些数据放置在一个中央档案库(repository)中,svn会备份并记录每个文件每一次的修改、更新、变动。这样可以把任意一个时间点的档案恢复到想要的某个旧的版本,可以查看指定文件的更新历史记录。
官网地址:https://tortoisesvn.net/
SVN工作原理
我们使用SVN能做什么?
- 多人共享同一的资源,并且可以对资源实现修改和更新。
- 记录资源的每一次变更,以及记录更改该资源的人,并且可以恢复到之前的任何一个修改点。
SVN安装
SVN的安装分为 2 部分,第一部分是服务端安装,第二部分的客户端安装。
注意:一般情况下,我们只需要安装客户端即可,因为在企业中服务端是由运维来维护的,我们只需要开通一个账号即可。
常用的客户端又分为两种:安装在操作系统中的客户端、Eclipse的插件。
服务端安装
官网:https://www.visualsvn.com/
下载地址(64-bit):https://www.visualsvn.com/files/VisualSVN-Server-5.1.1-x64.msi
下载地址(32-bit):https://www.visualsvn.com/files/VisualSVN-Server-5.1.1-win32.msi
下载过后得样子
开始安装
客户端安装
官网:https://www.visualsvn.com/visualsvn/download/
下载地址(64-bit):https://www.visualsvn.com/files/TortoiseSVN-1.14.3.29387-win32-svn-1.14.2.msi
下载地址(32-bit):https://www.visualsvn.com/files/TortoiseSVN-1.14.3.29387-x64-svn-1.14.2.msi
下载过后的样子
开始安装
点击右键查看是否有SVN选项
其他人的教程
TortoiseSVN安装中文语言包教程:https://blog.csdn.net/qq_61771146/article/details/124466992
高效开发 — SVN使用教程图文详解:https://blog.csdn.net/zhanghuaishu0/article/details/78487628
Windows10环境下使用VisualSVN server搭建SVN服务器:https://blog.csdn.net/qq_32786873/article/details/80535567
SVN安装及使用教程图文详解:https://blog.csdn.net/Ruishine/article/details/121467191
B站:https://www.bilibili.com/video/BV1mW411M7yR/?p=1
|