1、本博客主要参考尚硅谷的尚硅谷Git入门到精通全套教程(涵盖GitHub\Gitee码云\GitLab)
视频教程,整理不易,还请读者见谅。
2、尚硅谷的有些视频还不错(PS:不是广告,毕竟看了人家比较好的教程,得给人家打个call)
3、视频地址:尚硅谷Git入门到精通全套教程(涵盖GitHub\Gitee码云\GitLab)
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是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目
- 官网地址:http://git-scm.com/
版本控制
- 版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。
- 版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换
Git工作机制
- Workspace:工作区,就是你平时存放项目代码的地方
- Index / Stage:暂存区,,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
- Repository:仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
- Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换
Git和代码托管中心
代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库
- 局域网
- Gitlab( https://gitlab.cn/ )
- 互联网
- GitHub( https://github.com/ )
- Gitee码云( https://gitee.com/ )
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
创建仓库
删除仓库
IDEA 集成 Git
配置Git忽略文件
在用户家(C/User/用户名) 下创建
git.ignore
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (
.mtj.
# Package Files
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see
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会备份并记录每个文件每一次的修改、更新、变动。这样可以把任意一个时间点的档案恢复到想要的某个旧的版本,可以查看指定文件的更新历史记录。
SVN工作原理
我们使用SVN能做什么?
- 多人共享同一的资源,并且可以对资源实现修改和更新。
- 记录资源的每一次变更,以及记录更改该资源的人,并且可以恢复到之前的任何一个修改点。
SVN安装
SVN的安装分为 2 部分,第一部分是服务端安装,第二部分的客户端安装。
注意:一般情况下,我们只需要安装客户端即可,因为在企业中服务端是由运维来维护的,我们只需要开通一个账号即可。
常用的客户端又分为两种:安装在操作系统中的客户端、Eclipse的插件。
服务端安装
下载地址(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