主要内容:熟练掌握Git、GitHub、Gitee码云的使用
文章目录
1.Git概述
- Git是个免费的、开源的分布式版本控制系统
1.1版本控制
-
版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统
-
版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换
1.2版本控制工具
- 集中式版本控制工具:CVS、SVN、VSS…
- 程序员修改代码之后要上传到中央服务器,另外一名程序员才能再中央服务器将代码下载下来修改
- 缺点:当中央服务器宕机单点故障,则在故障期间谁都无法提交更新,也无法协同工作
- 分布式版本控制工具:Git、Mercurial、Bazaar
- 可以在自己的电脑上做版本的控制,会有一个远程库,让不同的程序员协同工作,当远程库宕机或者故障,只是不能提交更新,但是还是可以在自己的电脑上做版本控制
1.3Git和代码托管中心
- 代码托管中心是基于网络服务器的远程仓库,一般简称为远程库
- 局域网:GitLab
- 互联网:GitHub(外网)、Gitee码云(国内网站)
2.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 版本号 | 版本穿梭 |
2.1设置用户签名
- 首次使用Git一定要在Git Bash窗口设置用户签名:
git config --global user.name 用户名
git config --global user.email 邮箱
2.2初始化本地库
-
语法:
git init
-
示例:
要想让git可以操作gitdemo这个文件夹,则要在当前文件夹下先进行初始化
可以使用ll -a查看被隐藏的.git文件,如果有.git文件说明初始化成功
2.3查看本地库状态
2.3.1首次查看
-
语法:
git status
-
示例:
可以看到目前没有提交过东西,也没有东西可以提交。
2.3.2新增文件
- 新增一个hello.txt文件
- 进入到vim模式之后,按"i"进入插入模式,可以编辑代码
- 编辑完之后按esc退出插入模式
- 按shift+;后再按wq,回车,保存并退出vim模式
- 输入ll命令查看是否新增文件
2.3.3再次查看
-
语法:
git status
-
再次查看:
发现有hello.txt文件显示
2.4添加暂存区
2.4.1将工作区文件添加到暂存区
1.语法:
git add 文件名字
2.操作如下:(有警告不用管)
2.4.2查看状态(检测到暂存区有新文件)
- 文件呈现绿色说明已经上传到暂存区,想删掉则用git rm --cached 文件名
- 在暂存区删掉在工作区依旧存在
2.5提交本地库
2.5.1将暂存区的文件提交到本地库
1.基本语法:
git commit -m “日志信息” 文件名
2.示例:
3.通过查看日志来查看版本:
2.5.2查看状态(没有文件需要提交了)
2.6修改文件
1.修改文件:vim hello.txt,再按i修改文件即可。
2.6.1查看状态(检测到文件被修改)
2.6.2将修改后的文件提交到暂存区
- 再次查看状态,就能发现文件名字变回绿色了。
- 再次进行提交
2.7历史版本
2.7.1查看历史版本
1.基本语法:
git reflog 查看版本信息
git log 查看版本详细信息
2.示例:
2.7.2版本穿梭
1.基本语法:
git reset --hard 七位的版本号
2.示例:
3.Git分支操作
3.1分支的概念
在版本控制过程中,同时推进多个任务,我们就为每个任务创建一个分支,使用分支意味着程序员可以把自己的工作从开发的主线上分离开来,开发自己分支的时候不会影响主线的工作。
3.2分支操作
命令名称 | 作用 |
---|---|
git branch 分支名 | 创建分支 |
git branch -v | 查看分支 |
git checkout 分支名 | 切换分支 |
git merge 分支名 | 把指定的分支合并到当前分支上 |
1.查看分支
2.创建分支
3.切换分支
4.合并分支(如果当所合并的分支有对原分支的文件进行修改,合并之后会显示修改后的内容)
3.3合并分支(冲突合并)
产生冲突的原因:合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改,Git无法代替我们使用哪个,便会产生冲突,此时必须人为的决定新代码内容:
- 先切换到hot-fix分支中将hello.txt文件进行修改如下:
- 再将修改好之后的文通过指令git add hello.txt添加到暂存区,然后使用git commit -m “hot-fix second” hello.txt提交日志
- 再切换回master分支,对hello.txt中的系统位置的内容进行修改,并且提交到暂存区,使用git commit -m “master second” hello.txt提交日志
- 便会出现报错如下,并且文件会将冲突的部分显现出来:
- 手动修改完之后再对文件进行上传到暂存区,再提交日志(记得不用带文件名)即可
4.Git团队协作
4.1团队内协作
4.2团队外协作
5.GitHub操作
5.1创建远程仓库
创建成功后会跳转到该页面
5.2远程仓库操作
5.2.1创建远程仓库别名
1.基本语法:
git remote -v 查看当前所有远程地址别名
git remote add 别名 远程地址
2.示例:
5.2.2推送本地分支到远程仓库
1.基本语法:
git push 别名 分支名
2.示例
5.2.3拉取远程库到本地库
1.基本语法:
git pull 别名 分支名
2.拉取的文件会自动提交到本地库,不用直接再commit
5.2.4克隆远程库到本地
1.基本语法:
git clone 远程地址
2.在想要拉取文件的文件夹打开Git Bash ,输入对应指令,不用初始化本地库,直接拉取github代码即可,也不用登录
- clone会自动进行以下操作:
- 将github代码拉取到当前目录
- 初始化本地库
- 自动创建别名(默认别名为origin)
5.2.5团队内协作
要想让他人拉取代码修改之后,可以推送到远程库,则要将那个人添加成仓库的成员:
5.3跨团队协作
- 先将所要修改的库拉到克隆到本地,修改好之后,点击pull request,创建新的request,然后提交,库的主人便会收到修改好的文件,他可以自行选择查看或者合并。
6.IDEA集成Git
6.1配置Git忽略文件
像项目中一切和无关的文件要配置将其忽略,例如:
配置如下:
-
创建忽略文件xxx.ignore(建议命名成git.ignore)
-
文件模板如下:
*.class # Mobile Tools for Java (J2ME) .mtj.tmp/ # Package Files # *.jar *.war *.ear # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* target/ **/target/ pom.xml.tag pom.xml.releaseBackup pom.xml.versionsBackup pom.xml.next release.properties dependency-reduced-pom.xml buildNumber.properties .mvn/timing.properties *.iml ## Directory-based project format: .idea/ # if you remove the above rule, at least ignore the following: # User-specific stuff: # .idea/workspace.xml # .idea/tasks.xml # .idea/dictionaries # Sensitive or high-churn files: # .idea/dataSources.ids # .idea/dataSources.xml # .idea/sqlDataSources.xml # .idea/dynamic.xml # .idea/uiDesigner.xml # Gradle: # .idea/gradle.xml # .idea/libraries # Mongo Explorer plugin: # .idea/mongoSettings.xml ## File-based project format: *.ipr *.iws ## Plugin-specific files: # IntelliJ /out/ /target/ # mpeltonen/sbt-idea plugin .idea_modules/ # JIRA plugin atlassian-ide-plugin.xml # Crashlytics plugin (for Android Studio and IntelliJ) com_crashlytics_export_strings.xml crashlytics.properties crashlytics-build.properties
-
-
将忽略文件放到电脑的家目录下
-
再在.gitconfig文件下配置
-
[core] excludesfile = C:/用户/xxx/git.ignore
-
6.2定位Git程序
用idea打开项目设置,选择版本控制中的Git,将git.exe的路径上传,然后测试,如果显示出版本号说明测试通过,idea即可使用git。
6.3初始化&添加&提交
1.初始化
直接打开项目,然后点击上面的VCS,然后创建新的Git仓库(默认会在当前项目文件目录下创建)
点击完之后,项目中的文件颜色都会变红色,说明还没有添加到暂存区
2.添加
右键项目或者所要添加的文件,选择Git,然后点击添加即可:
3.提交
右键项目或者所要添加的文件,选择Git,然后点击提交即可,弹出的界面可以选择想要提交的文件:
6.4切换版本
6.5创建分支
- 第一种方式:右键项目,选择Git,然后会有创建新分支的选项,选择即可
- 第二种方式:点击右下角的master,会弹出创建新分支,创建即可
- 切换分支,在右下角会显示所有分支,点击想要切换到的分支即可。
6.6合并分支
- 正常合并:选择所要合并的分支,点击合并到当前分支即可。
- 冲突分支:合并的时候会弹出代码框,让你手动合并代码。
7.IDEA集成GitHub
7.1设置GitHub账号
- 点击idea左上角文件,选择设置,在版本控制里面有Github选项,选择,添加github账号
- 因为账号密码登录会很难响应,所以可以通过使用令牌登录:
- 先在浏览器登录github账号,然后再idea添加账号页面选择令牌登录,然后点击生成,就会跳转到令牌生成页面,所有权限都勾选上,然后生成令牌,复制令牌登录即可。
7.2分享项目到GitHub
将项目分享到github上面,而且是自动生成远程库,并且push到github:
7.3推送修改后的代码到远程库
- 将代码修改后,先提交到本地库,在右键项目,便会有pull和push的选项:
也可以点击右上角的版本控制器来进行操作
- 点击之后会弹出所要push的路径
- 注意:push是将本地库代码推送到远程库,如果本地库代码跟远程库代码版本不一致,push操作
会被拒绝,就是说想要push成功,一定要保证本地库版本要比远程库版本高。所以一般都会先pull拉取一下代码,再修改,再提交推送。
7.4拉取远程代码合并本地库
-
按照上面的操作,点击pull,选择所要拉取的链接,进行拉取即可。
-
注意:pull是拉取远端仓库代码到本地,如果远程库代码和本地库不一致会自动合并,有时候会出现合并冲突问题,则需要自己手动合并代码。
7.5clone克隆远程库到本地
点击idea,先不要进入任何一个项目,点击左上角vcs工具,然后导入github仓库的链接,克隆项目即可。
8.国内代码托管网站Gitee
8.1创建远程库
和github一样操作即可
8.2IDEA集成码云
1.打开idea安装码云插件
2.打开再版本控制里面先添加gitee账号
3.对于push和pull操作和github类似,都是右键项目点击对应选项即可。
8.3码云导入Github项目
1.点击新建仓库,点击右上角的导入仓库
2.然后点击github的url,登录github账号就会看到自己的的所有仓库,然后选择导入即可。
3.当在github对项目代码进行修改之后,在gitee的对应的仓库名字旁边会有个更新的符号,点击即可更新代码。