目录
git的前世今生
在讲操作之前我们先来认识一下什么叫git,git又是干什么用的和gay又有什么区别?
在很久以前人们没有git的出现时,人们在修改和编程时总是需要小心翼翼地,生怕不小心把这份自己辛辛苦苦编写出来的文件整坏了,这时候重置起来又会很复杂。这时候是你也会想到,我们备份不就好了。确实,git的发明人就是想到了。但是每个版本都有每个版本的修改,git就是帮你记住你的每个版本。在你把一切都搞砸前,帮你记住上一次的样子。当你搞砸了之后让你有个后悔药吃。git就是你的版本托管器,在这个理念的基础上又诞生了很多托管的平台。就是你可以把这些代码托管到别人的平台,然后你通过git来连接,节省你本地的一些空间。比较出名的有著名的程序员聚集地GitHub,以及Gitee等。这节内容我们以国内的托管平台Coding为例子,为什么不用国外的呢?因为国内的比较快。
git的安装
在了解git之前我们肯定得有啊!接下来教你安装git。
打开官网地址:Git - Downloads,选择你的系统以及系统版本下载安装。
其余的全部默认不动,一路Next下去,然后结束安装就可以正常使用了。
git分支
首先来认识分支,什么是分支呢?其实也很好理解,你想想如果你要上线一个项目肯定会先经过测试,不会直接上线吧,万一搞砸了,人家线上那么多人都给你一个人卡住了怎么办?你线上的环境这时候就需要一个它自己不受你测试代码影响的分支,也就是我们平时常用的master分支,这个分支一般就是我们在线上已经正式运行的分支了。然后我们不断修改完善的分支一般就是dev分支了,这个分支我们一般用来修改代码上传。然后确认代码无误后没啥问题后,再合并到master分支。当然也有个人分支,我们这里就不赘述了。
git基本操作
git clone 你的克隆链接
这个操作可以说是最最最基本的了,这个是你当你电脑里没有项目时,想从托管平台上拉时,必备操作。我们找到我们自己想放项目的文件夹,右键看到Git Bash Here,点击。这时候就能看到这样一个小框。
这时候就可以在里面输入命令啦,这个时候比如我们的Coding平台为例。
点击这个克隆就会出现一个链接这时候就放到我们的git clone命令的后面,像上面那种格式。这时候可能会要你的在Coding平台上的账号密码,输入即可这时候就会成功拉取了。
git checkout 分支名
拉下来时一般都是默认的master分支,我们刚刚才说万一整坏了可难办了,所以这个时候就先用这个命令来切换到dev分支,我们在这个上面造作。
git pull
在我们造作代码前,先确保自己的代码是最新的,不然等下代码冲突了咋整,你把和别人同时改,git是听你的还是听他的,所以每次编写代码之前先更新你的代码。
在线上服务器拉项目时一定要查看分支是否干净,免得有人动了线上的代码,导致冲突
git status //查看分支干净情况
git checkout . //清楚分支至最新
在你一番造作之后,你觉得自己的Bug写的非常好,可以上传了,可以推到远程仓库祸祸别人了,这时候我们又该咋整呢?
git add .
把所有文件先添加到本地仓库,你也可以推送一点点,但是建议的话就是用这个命令全部推,这样确保你不会出纰漏。
git commit -m "你想说的话"
添加到本地仓库后,告诉他们我这次提交就是来给大家添乱的,使用commit命令提交到本地仓库。(千万注意冒号是英文的!!!)
git push
最后的最后推送到远程仓库,push就完事了。其实这样一个流程就已经走完了。但是避免你闯祸了想不为人知怎么办?教你几个你肯定会用到的命令(我也经常用嘿嘿)
git log
用完后会出来之前的版本号像这样,红框里的就是版本号
查看之前的版本号,这个有什么用呢?往下看
git reset --hard HEAD^ //回退到上个版本
git reset --hard 版本号前几个数全部输完也行 //回退到指定版本
这样子就可以坐时光机回滚到你想要的那个版本了,但是本地回滚后记得要推到远程仓库,让远程仓库也进行回滚,但是你正常的push远程仓库肯定不答应啊所以看接下来的命令,我们强推它。
git push --force
这个只是回滚操作,怎么让你的坏事做的无声无息无人知晓呢?这就不得不说接下来这个操作了,删除版本号
git rebase -i 你想毁尸灭迹的版本号
输入这个命令后,你会进入一个新的窗口,用上下左右键移到pick处按下i或者s会进入编辑模式,这个时候把pick删去改成drop,或者直接把这行删了按Esc输入:wq保存退出,你再使用git log命令会发现那个版本已经不存在了
这个时候正常push我们远程仓库肯定又不答应啊,还会报个错来反抗下你,跟你说
Your branch and 'origin/master' have diverged, and have 1 and 1 different commits each, respectively
翻译:你的分支和主流分支已经发生分歧,分别有一个不同的提交
没关系我们用git push -f origin master推送到远程仓库即可,但是说归说,使用还是不建议的,除非是那种你一个人玩的分支。如果你删除到一半后悔了,可以使用如下命令
git rebase --abort //撤销这次删除
git常见问题(不断更新)
1.git问你为啥要提交合并
Please enter a commit message to explain why this merge is necessary.
翻译:请输入提交消息来解释为什么这种合并是必要的
如果你想说为啥的话和就按字母i或者s进入编辑模式直接修改上面那段话,然后再按Esc输入:wq进行保存,如果没啥好说的就直接按Esc输入:wq进行保存。
2.git本地代码和远程代码冲突时
error: Your local changes to the following files would be overwritten by merge:
application/index/controller/MemberCenter.php
Please commit your changes or stash them before you merge.
翻译:
错误:您对以下文件的本地更改将被“合并”覆盖:
application/index/controller/MemberCenter.php
请在合并前提交或隐藏更改。
这个时候直接上三板斧(如果你想保留本地更改的话)
git stash
git pull
git stash pop
git stash这个操作呢就类似于你把自己修改到的代码部分隐藏起来,然后再git pull操作成功将自己的代码和线上同步,然后这个时候git stash pop进行一个取消隐藏操作,然后接下来你就常规操作上传代码就好啦
如果不想保留本地更改的就更简单了,用到我们上面做坏事的方法,回退到上个版本,然后再把代码拉下来
git reset --hard
遇到啥问题记得评论区留言哦
总结
git和gay一点关系都没有,只不过用git会gay(adj.)
各位看官老爷,收藏起来呗,万一以后用得到呢,再不行点个赞再走/(ㄒoㄒ)/~~
(以上内容仅供学习参考,若有错误之处欢迎指正交流)