作为程序员怎么能不了解git命令呢,但是由于本人不常用到git命令,现在的软件上也都一体化了,能够简化命令,直接运行都可以了,完全能够去实现git上的命令,导致输入git命令完全不会,git命令能够让我们更直观的去了解它的运行机制。所以写这个博客去了解他的运行机制
在运行git的时候首先要会去克隆他的项目
$ git clone (url)
把地址放入到url里面执行,就完成了项目克隆,这样你的本地就有了这个项目了
进入这个项目在里面进行更改,最后把项目提交到git上,就像把大象放冰箱里一样,分了三步,打开冰箱门,把大象放入冰箱,把冰箱门关上,git上要
把单个文件添加
git add <文件>
如果要是多个文件的话直接就输入,这样就把一个项目中要修改的都文件全部添加进去了,
git add .
接下来把添加的文件给给传到本地仓库上去
git commit -m "备注名称"
第三步,把本地仓库的内容传到远程上去
git push
以上内容全都是在系统默认的主分支master上面运行的,当你克隆了项目,在项目中打开命令,在命令窗口会出现
能够看到最后那个括号里面的内容,那就是分支的名称,来新建一个分支
git branch <分支名>
我这里建了一个dev的分支,来查看下是否 创建成功(查看分支)
git branch
看输出的结果,里面有这个分支了
接下来跳转到这个分支上来进行操作,在其中一个分支上进行操作,并不会影响其他分支的内容,这样的话,其中一个分支上线了,你在另一个分支上操作,不会影响上线的项目
git checkout dev
看结果,它后面的分支名进行了变化,说明他已经切换到了另一个分支上来了
有个一步到位的命令,创建分支并切换到该分支下
git checkout -b <分支名>
当你上传的这个分支没有问题了,想把它上线,只需要把在当前分支下输入想要合并的分支,进行一下替换就行了(在test分支上执行git merge dev ;test内容将会被dev替换)
git merge <分支名>
这个分支合并完了,我不想要这个分支了,就输出下面的命令
git branch -d <分支名>
输出的结果就是下面这样
这些只是在本地上进行创建分支,咋们最终的结果是要给它放到远程上面,就需要在远程上面去创建分支
git checkout -b <本地分支名> origin/<远程分支名>
把本地分支和远程分支连接起来
git branch --set-upstream-to=origin/<远程分支名> <本地分支名>
推送分支内容,本地分支和远程分支连接起来的话,可以直接输入git push,最好是同名的,如果不同名,不确认到底能不能行
git push origin <分支名>
用下面的命令来查看远程分支信息
git remote / git remote -v(小写)
标签管理
在这个分支下,添加标签,标签用途来查看它的修改内容标记
git tag <标签名>
如果想回退版本的话,就需要它的版本号了,想查找标签的时候并带着版本好一并查出就需要把标签和版本号一起写入
git tag <标签名> <版本号>
用命令来查看标签的内容
git show <标签名>
删除标签名
git tag -d <标签名>
推送到远程上
git push origin <标签名> / git push origin --tags
删除推送到远程的标签
git push origin :resf/tags/<标签名>
子模块
拉取子模块的命令,和克隆就不一样了用的是下面的命令
git submodule add url
用上面的命令去建一个字模块就行了
以后使用的时候,子模块内容完全不用去进行更改的,上传你项目代码的时候也不会去影响它的内容(注意空的子模块是显示不出任何内容的,上传到git上,你项目里面也不会像是有这个子模块的)
如果子模块进行了更改,你只需要在本地进行一下拉取就行了
git pull
子模块这还会有些问题,就是当你拉下子模块后,认为不对,就把这个拉取下来的模块删了,想重新拉取,就会出现警告,说这个名字的 子模块已经有了不能在拉取了。
解决办法:
拉取子模块后生成一个这个文件,需要把里面的你拉取子模块的名字干掉,
然后在git隐藏文件中,找到modules文件夹,删除里面对应的子模块名称文件,在config文件中删除对应子模块文件
》》》》》
冲突
两个人在没有拉取代码的情况下,进行推送同一个文件或代码,可能会出现一些bug问题,没有拉取传送顺序(1》2》1)就会出现代码覆盖git上面会出现警告,让你去合并代码,我当时输入合并命令没有管用,之后直接把合并请求关闭,回退了一下版本,然后拉取,在上传,结果问题就没了