友情提醒:
第一章、Git的下载和安装
1.1)登录GitHub官网注册账户密码
登录官网:https://github.com/
注册账号密码,如果发现注册页面打不开,继续往下看
国内访问github很卡解决方式
看这个
下载加速器加速访问GItHub
1.2)注册完账号密码后下载本地git
登录https://git-scm.com/download/win (根据自己电脑的位数和系统下载git)
1.3)安装git
双击Git-2.9.0-64-bit.exe文件安装git,点击next
选择安装目录,点击next
勾选如下的组件,点击next
继续next
一直next到这里的时候,选择使用命令行环境
接下来不管出现啥都点击next,直到出现Install后点击安装
安装成功
第二章、Git基本配置
2.1)配置git用户和邮箱
鼠标右键点击电脑桌面空白处,选择Git Bash Here
①出现Git的命令行窗口,在Git命令行配置用户名和登录邮箱
1、设置用户名:git config --global user.name '在github上注册的用户名';
2、设置用户邮箱:git config --global user.email '注册时的邮箱';
3、配置后,我们用git config --list
查看是否配置好
2.2)生成密钥文件
②查看 c盘->用户->正在使用的用户名->.ssh下是否有id_rsa文件,没有就用下面的命令生成rsa密钥
ssh-keygen -t rsa -C "注册的邮箱@qq.com"
输入后点击enter回车,回车,回车
生成后去 c盘->用户->正在使用的用户名->.ssh中查看生成的公钥和私钥
2.3)登录git官网配置密钥
①打开.ssh文件夹下的id-rsa.pub文件的内容,全部复制。
②登录你的git服务器点击头像选择settings—》寻找ssh and GPG keys—》new ssh.key—》将id-rsa.pub文件的内容全部粘贴后点击add ssh key
第三章、基本使用
3.1)创建远程仓库,初始化本地项目
①第一次使用Git上传代码需要登录你的git账户创建远程仓库,登录后点击上方导航栏的‘+’按钮,选择 New repository
②出现以下页面,填写repository也就是仓库的名称,点击下方创建createrepository
③创建成功后,在首页会出现你的repository仓库,选择一个进入如:baomingshu/ssm
④进入后出现如下页面点击右侧code。
a.是你创建的repository仓库的http地址
b.是你创建的repository仓库的ssh地址,将他们都复制保存
⑤初始化本地项目,使用cd命令进入Java工程所在的本地目录 e:/workspace/heima_ssm/
进入后在当前目录下输入git init
进行初始化项目(初始化创建一个新的git仓库)
这将在当前目录下创建一个名为.git的子目录,其中包含了初始化的Git仓库。
可以输入ls
查看文件夹下有什么
3.2)gitignore使用
①如果没有.gitignore文件使用下面命令创建
touch .gitignore
②使用命令设置gitignore:
.gitignore可以将文件将不需要提交的与我们代码无关的文件比如:target文件,.settings文件,.project文件.class文件不提交到远程仓库。输入命令Vi .gitignore
打开
③点击i键后,开始输入以下不需要提交的文件名称:
heima_ssm_web/target/*
.settings
.classpath
.project
④输入完成后点击esc退出,再输入冒号,才能输入命令wq,回车
自动保存后退出。
⑤.gitignore语法介绍
1、.gitignore文件中匹配规则:
#表示注释
*表示匹配任意多个字符
?表示匹配任何一个字符
!表示取反取反
[abc]表示匹配方括号当中的任何一个字符
[0-9]表示匹配0-9当中任意一个数字
两个*号表示任何中间目录,比如src/**/build,可以匹配到src/test/build,也可以匹配到src/current/build。
2、取反规则:指定可以不遵守忽略条件的文件名,就算pom.xml文件在被忽略的文件路径下,也不会被忽略。
!pom.xml
3、相对路径写法,过滤掉ssm_web/target/*文件夹下的所有内容:
ssm_web/target/*
4、忽略,过滤掉.text类型的文件:
*.text
5、忽略掉target路径下的所有java文件:
target/*.java
3.3)提交代码到远程库
①第一次提交代码到远程库
第一次提交代码时需要先使用git remote add origin +刚刚保存的git 的ssh项目地址如git@github.com:baomingshu/ssm.git
设置,执行成功以后本地仓库的项目便已经同远端仓库的项目保持同步
②输入git add *
将文件提交到git暂存仓库
③输入git commit –m ‘init ssm project’
提交到本地仓库,其中单引号中的内容是自己定义的备注,
相当于你备注一下这次提交了什么
④Git log
查看提交记录
⑤提交到本地后,使用Git push origin master
将提交到远程仓库
⑥Git status
查看状态,成功后进入git hub出现以下页面
3.4)代码下载到本地
①使用cd e:/workspace/heima_ssm/命令进入项目位置
使用Git clone +刚刚保存的git 的ssh项目地址如git@github.com:bxxx/ssm.git
或者如图复制
如图就可以将git hub 中的代码下载到本地项目中。
②Git pull origin master
下载远程库中与本地有区别的代码
如果失败了 不能下载代码,是因为本地仓库跟远端仓库关联不成功引起的,执行下面的命令设置一下
git branch --set-upstream master origin/master
第四章、git远程仓库与本地仓库合并
4.1)分支的创建和切换
克隆下载一个现有的 Git 仓库到本地
git clone ssh仓库地址
在本地建立我自己的分支(取名develop)才能提交到远程仓库上develop的分支
#第一种方式:创建develop分支
git checkout -b develop
#第二种方式:创建develop分支
git branch develop
使用下面这个命令来查看当前分支。
git branch
如图:
使用下面这个命令来切换分支。
git checkout develop
如图:
4.2)有了改动后的提交
当我本地有了改动,用命令查看改动
git diff 文件名<file>
如图,绿色是改动新增,红色是删除的地方
把有改动的文件(modified状态)添加到暂存区,准备进行提交。
git add 文件名<file>
#再使用status命令查看是否添加成功(变绿)
git status
如图:
如果使用add的时候添加错了,可以使用下面这个操作把文件从add到暂存区的文件退下来
git restore --staged 文件名<file>
#再使用status命令查看是否退回成功(变红)
git status
如图;
确认无误后,提交暂存区的文件到本地仓库,-m’xxx’是指添加提交信息。
git commit -m 'bms dev first commit'
如图
查看日志信息是否commit提交成功:包括提交者、提交时间、提交信息等。
git log
如图:
4.3)推送到不同的远程仓库分支
将本地仓库的改动推送到远程仓库develop分支。这里的develop相当于在远程仓库创建了develop分支,如果分支已经存在就不会创建了(有可能是和别人共用分支)
#选择推送到远程仓库的develop分支
git push origin develop
#选择推送到远程仓库的master分支
git push origin master
在github上,如果没有代码冲突,就将自己的分支merge(合并)到共用的分支
在github上直接用UI可以合并
4.4)从远程仓库的分支拉取最新的代码
从远程仓库的某个分支拉取最新的代码,并合并到本地仓库。
#从master分支拉取
git pull origin master
#从develop分支拉取
git pull origin develop
第五章、本地不同分支的合并
5.1)本地分支的切换测试
5.1.1)切换之前的master分支下文件内容
执行命令 切换到master分支
git checkout master
此时的master分支下的文件内容如下:
5.1.2)切换到develop分支后修改文件
执行命令 切换到develop分支
git checkout develop
对文件内容进行以下修改:修改后内容如下:
5.1.3)切回master分支出现报错:
报错如下: error: Your local changes to the following files would be overwritten by checkout: fileMergeTest.txt Please commit your changes or stash them before you switch branches. Aborting |
您对以下文件的本地更改将被签出覆盖:
fileMergeTest.txt
请在切换分支之前需要提交(commit),或者缓存(stash )
5.2)解决方式
5.2.1)方式1:commit提交修改
先在develop分支修改本地文件内容,如图:
切换到master分支时提示:
使用commit,提交保存到本地仓库再切换分支:
git add filename
git commit -m "message"
如图执行:
提交后,本地文件就被修改了,这时候切换成功了git checkout develop
切换回develop分支会发现,文件内容是修改保存的。
想要还原这次commit提交的话可以:
使用git log
查看提交的历史记录 找到,
再使用下面命令恢复本次提交的修改
git revert <commit-id>
#也就是
git revert fceb33de10e82ed956fe68aa25c0c567bfdace47
出现下面的界面:Git会打开一个文本编辑器,让您输入撤销提交的相关信息。可以按i然后直接按下Esc键,输入:wq,然后按下Enter键。默认使用当前信息。
5.2.2)方式2:stash
先在本地develop分支下修改文件内容
切换到master分支时提示:
可以使用git stash #封存修改
切换到master以后再切回来,
发现文件内容怎么少了一段
原来是要把封存的修改用git stash pop
命令取出来
git stash pop #把封存的还原
封存的修改就还原了
5.2.3)方式3;放弃修改
不推荐这样做,改完了又放弃,这不是傻嘛。
git clean -n //这个是清除文件预览
git clean -f fileName //强制清除文件
执行后效果如下:
86130@Bms MINGW64 /f/Git/mergetest (develop)
git clean -n
Would rempve fileMergeTest.txt.bak
86130@Bms MINGW64 /f/Git/mergetest (develop)
git clean -f fileMergeTest.txt.bak
Removing fileMergeTest.txt.bak
5.3)将develop分支合并到master分支
5.3.1)查看develop分支下的内容
执行命令 切换到develop分支
git checkout develop
发现内容如下:
5.3.2)查看master分支下的内容
执行命令 切换到master分支
git checkout master
master分支下的文件内容如下:
5.3.3)合并develop分支到master分支
执行下面的命令先切到master
git checkout master
合并develop分支到当前的master分支
git merge develop
这是在master分支下查看文件内容,发现已经和develop分支同步了
第六章、合并时出现代码冲突
6.1)Git代码冲突介绍
6.1.1)什么是Git代码冲突
①git merge命令介绍
git merge 用于本地分支的合并。将一个本地分支的更改合并到另一个本地分支时,你会使用git merge命令。
git merge命令用于将一个分支的更改合并到另一个分支。它会将两个分支的更改整合在一起,保留详细的合并信息,并成为一个新的提交。
例如,假设有一个 develop分支和一个 master 分支,您在 develop分支上开发了新的功能,然后想要将这些更改合并到 master 分支中。您可以切换到 master 分支,然后运行 git merge develop命令来实现这一目的。
②代码冲突原因
指在合并(merge)分支或拉取(pull)远程代码时,Git无法自动解决不同分支或版本之间的代码差异,从而导致代码冲突。这种冲突通常发生在同一文件的同一行或相邻行上,但内容不一致的情况下。当Git检测到这种情况时,会标记出冲突的部分,并要求开发人员手动解决这些冲突。通常需要开发人员手动编辑代码,选择保留和合并哪些代码,最终手动解决冲突并提交合并后的代码。
6.1.2)提示代码冲突的两种情况
①本地不同分支的文件有差异时:
在Git中,合并分支可以在本地进行,也可以在远程仓库进行。因为一般不会去远程仓库合并。我们这里只讨论本地分支合并。
使用git merge命令合并本地分支时,因为各种原因造成了不同分支的相同文件有差异合并时就会导致代码冲突。
场景1:合并本地分支
从本地master分支拉出了develop分支,在develop分支上开发,在这期间,各种原因,master分支发生了变化。等你想把develop分支合并到master分支,提示代码冲突。
②本地仓库和git远程仓库的文件有差异时:
pull命令自动将远程分支的更改合并到当前本地分支,
push命令自动将当前本地分支的更改合并到远程分支,
因此实际上这两个命令包含了合并(merge)操作。可能导致代码冲突。出现代码冲突一般都需要在本地手动解决,不可能push上去远程仓库那边,那边没有人会给你处理冲突,所以这里只讨论pull操作。
场景2:pull拉取代码
开发者A和开发者B都从远程仓库克隆了代码到本地。A开发者修改了一个代码文件后提交代码到git远程仓库成功,B开发者在本地修改了同一个代码文件的相同部分,这时本地仓库和git远程仓库的文件出现了差异,拉取会提示代码冲突。
6.1.3)解决合并时的代码冲突
①打开冲突文件,手动编辑以解决冲突:
查看冲突标记:在文件中查找冲突标记,通常是"<<<<<<<“,”=======",和 “>>>>>>>”, 这些标记将冲突的代码块分隔开来。
②解决冲突:
手动编辑文件,选择保留需要的代码,删除不需要的代码,并移除冲突标记,保存文件。
③添加文件并提交到远程仓库:
使用 “git add” 命令将解决冲突后的文件添加到暂存区。。运行 “git commit” 命令提交已解决冲突的文件。运行git push命令将修改后的代码推送到远程仓库。
6.2)远程与本地冲突实例
6.2.1)模拟冲突
开发者A修改了文件fileMergeTest.txt的第5行,然后将更改推送到远程仓库。如图:
同时,开发者B在本地也修改了文件fileMergeTest.txt的第5行如图:
开发者B尝试将远程仓库pull到本地。由于开发者A和开发者B修改了同一个文件的相同部分,开发者B在拉取时会遇到代码冲突。并提示自动合并失败,需要修复冲突,并提交最新修改后的版本
开发者B在打开fileMergeTest.txt文件,会看到类似以下的标记:
<<<<<<< HEAD
// 开发者B的更改
=======
// 开发者A的更改
>>>>>>>
如图:
6.2.2)手动编辑文件,解决冲突
开发者B需要手动编辑fileMergeTest.txt文件,决定保留哪些更改,删除哪些更改,直到解决所有冲突。 我选择保留本地修改:
解决冲突后,开发者B使用git add fileMergeTest.txt命令提交到暂存区,使用git commit命令提交更改,然后使用git push命令将更改推送到远程仓库。
查看远程仓库,已经同步更新了
6.2.3)如果本地修改量很大
先用git stash封存修改,再正常git pull了,git pull后,执行git stash pop将之前本地做的修改恢复到当前工作区。这个时候就会报代码冲突了,
打开冲突文件,手动编辑解决后,commit继续push
6.3)本地develop与本地master冲突实例
6.3.1)模拟冲突
master分支修改第五行:修改文件内容后执行命令
git add .
git commit -m 'messag'
切换到develop分支,依然修改第五行:修改文件内容后执行命令
git add .
git commit -m 'messag'
切回master分支,合并develop分支
git checkout master
git merge develop
提示合并失败,内容冲突
文章来源:https://www.toymoban.com/news/detail-495805.html
6.3.2)解决冲突
打开文件,发现冲突位置
手动编辑这个文件,解决冲突后提交
文章来源地址https://www.toymoban.com/news/detail-495805.html
到了这里,关于代码托管/版本控制工具:Git的安装和使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!