如果你想在简历上写“会常用的Git的命令“,那么这篇文章值得你要看,那我们需要掌握什么呢?其实会简单的操作就行,需要再上网搜,平时自己实际用到的也就几个命令,克隆别人的,添加提交、推送自己的,冲突合并,回退版本。下面将使用一个非常非常简单的实战,没有安装git教程,也没有gitee注册创建添加SSH公钥教程,这些建议自行参看教程或者上网搜。
推荐教程:廖雪峰,教程是实战类的,还不错,个人觉得就是不突出重点,就是一个教程,我最近开始参加实习,才意识到抓住重点才是关键,而不是啥都学,例如你看那种java语言基础视频,学是学了很多,但你不知道关键的东西,所以总是容易忘,看了就那样,也不知道学了干嘛。
git是一个分布式版本管理系统,简单点说就是版本管理,例如你看到的gitee或github上的那些开源项目,有很多版本,而且一个项目能让很多人一起协同参与,这都是管理系统的功劳,而git就是其中一种。当然自己用还没有到这种高大上的操作,但是学了git,当不懂git的人还在gitee上下载zip时,你一顿git操作猛如虎,相信能给你装不少B.
内容:掌握常用命令、push冲突处理、结合idea用于实际项目
创建个空文件夹,叫sb
,作为我们的项目。
mkdir sb
cd sb
# 创建a文件
touch a
1、初始化、查看仓库状态
git init
git status
2、添加文件到暂存区、提交
git add a
git commit -m '本地仓库首次提交'
💡暂存区就是还没提交
3、远程关联远程仓库、推送 fish
git remote add sb git@gitee.com:zhandiming/sb.git
git push sb master
4、查看远程库名称
git remote -v
5、查看分支情况
git log
# 以图形的方式查看
git log --graph
6、Zone忙活了一天,终于通过echo命令向a文件中写了一句经典的文字
echo "Hello Zone" > a
7、此时Tom正在gitee浏览他们的sb项目,看着空空的a文件,添加了一句代码,然后点击提交。
8、然后Zone检查了半天,觉得没问题,就提交并进行推送
git add a;
git commit -m "我是Zone,我在a文件中写入Hello Zone"
git push sb master
💡但发现拒绝推送,这就是冲突,其中提示的意思就是有个小可爱推送过了,你得把远程的拉下来进行合并,然后再提交
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'git@gitee.com:zhandiming/sb.git'
提示......
9、拉取远程分支
git pull sb master
注意这里代码会自动合并,但是只是将远程和本地代码不同的地方放到一起,至于最终怎么处理,需要你手动进行合并,查看a文件就会发现如下内容
<<<<<<< HEAD
Hello Zone
=======
Hello World
>>>>>>> e3ab3a382ebf9ad7036f771d35840d95edc95b34
通过git status你也会发现a文件回到了工作区的状态,因为他需要你手动修改合并,然后再次提交、推送。这就是冲突。但是这种冲突只会出现在修改的地方是同一个文件,否则会自动合并,并不需要进行手动修改合并,后面会举例
10、于是Zone手动修改合并,然后提交推送
echo "Hello Zone" > a
git add a
git commit -m '我是Zone,由于合并冲突,我手动修改a文件'
git push sb master
至此,冲突就解决了。
11、过了几天,Tom又去gitee浏览他们的sb项目,看着a文件上咋写着"Hello Zone",有些不爽,但是善良的Tom又想着算了,自己创建一个不就行了,于是添加了b文件并提交
12、Zone今天突然想起还有Tom这个小可爱,于是在a中写入第二句话并提交、推送
echo "Hello Tom" >> a
git add a
git commit -m '我是Zone,我在a文件中添加Hello Tom'
git push sb master
💡推送时时,发现又被拒绝了,于是使用pull进行拉取
git pull sb master
这时会发现,会跳出页面让我们输入合并行为
如果直接保存退出,默认就是自动合并提交,然后提交的默认信息就是第一句,可自行编辑。
如果以#开头则会提示由于提交没有带消息(相当于没有-m),需要我们在本地进行手动提交,部分提示如下
error: Empty commit message.
Not committing merge; use 'git commit' to complete the merge.
总结:不同文件修改会自动合并,相同文件修改需要手动合并,后者才算真正的冲突。
使用idea创建sb项目(maven或springboot都行),完成任务一,同时要求使用.gitignore排除无关文件的上传,例如.idea
文件夹
💡实际开发中还是会直接用idea进行git管理,所以有必要掌握,而且很简单,就是得找到按钮。
出现冲突,idea可以用Update Project,而不是pull,对于不同文件的修改的合并,他会选择默认自动合并,而不是像命令行让你选,因为大部分情况确实是只需要自动合并。但相同文件就一样,需要点击界面进行修改。本质上也是pull,不过多了更多人性化处理,可通过控制台查看所使用的命令。