Git和远程仓库联系起来
克隆仓库 git clone [url]
①首先啥是远程仓库呢?
- 例如github、码云这种常见的名词叫做软件项目的托管平台,我们在上面可以创建自己的项目和仓库。例如我们公司有Trinity项目,而我们公司有前后端开发人员,每个前端人员负责的界面不同,每个后端人员负责的功能也不同。那么我们每个程序员写完的代码不能总通过线下,拿个u盘去互相拷贝代码再让项目完整吧,所以我们就可以用一个远程仓库。每个程序员写完了代码就可以通过git命令(举例)来把代码放到远程仓库上,而其他程序员也可以通过git命令下载他写的代码。方便项目的管理哦。
②步骤:(以我公司使用的GitLab为例)
- 第一步:找到你要克隆的项目(想克隆项目的远程仓库)
- 第二步:点击clone,并复制如图所示的链接
- 第三步:找本机上到一个你想要放置此项目的文件夹(只要你喜欢,放哪都行),右键。选择Git bash here
- 第四步:输入 git clone 后面加上我们刚才复制的那个链接(如下图)
恭喜你呀,我们克隆成功辽,那么你远程仓库上面的一些文件就放到了你电脑的文件夹上。
推送到远程仓库 git push origin [branchName]
- 我们想把自己的代码放在远程仓库上步骤如下
- ①第一步:首先,点进我们下载下来的那个文件夹,在这个文件夹里面右键git bash here
- ②第二步:新建分支,新建分支的意思就是方便你以后改正你的错误,万一你这代码跑不通你直接给放到主干master上了,以后会给大家带来不必要的麻烦,所以就乖乖的在自己的分支上悄悄的开发,等万无一失,再合并到主干上将你的功能上线,多美好。
- ③第三步:你要在新建的自己的分支上做一些改动,比如说你可以新建点文件之类的(假装我们写了很炫酷的代码)
那么如何用git命令窗口尽行新增文件嘞,输入 vim [文件的名字],按照我们上面讲到的vim编辑器用法,给文件写入点东西
i 键输入文本,esc键 后输入 :wq 保存并退出
④第四步:按照我们上面讲过的add和commit方法将新文件提交到本地仓库
⑤第五步:输入git push origin [你的分支名称] 将你的文件放入远程仓库
查看远程仓库端的效果:
这样就可以看见我们刚才上传的文件辽。
合并分支 git merge [branchName]
-
合并分支是撒子意思嘞,就是把另一个分支里面的文件下载下来和你当前分支的文件放在一起。
①第一步:创建一个新的分支 hot_fix
(热修复分支),因为我们的项目会运行在服务器上,我们修改bug的时候项目是不停的,依旧跑在服务器上;而我们将服务器上的项目停止了再进行fix的话,这样就是冷修复了哦;
②第二步:在里面给test.txt(做一些改动)再创建几个新文件,随后add、commit、push到远程仓库这里我们新建了一个test2.txt,还修改了test.txt
③第三步:切换到之前的myNewBranch分支上,输入“git merege hot_fix”将hot_fix分支上做的改动合并到merge上
我们在这个分支上,查看一下文件有撒子变化;使用 cat test.txt test2.txt 可以一下子查看两个文件
这下我们在本地合并成功了,接下来再将myNewBranch分支push到远程仓库就可以啦!
解决冲突 git mergetool (再记录一遍,上面没看懂这里就仔细看)
-
什么是冲突?冲突是指在上面合并分支的时候,同一个文件的同一处(同一行)在两个分支上都被改动了!而且内容不同,当你想合并的时候,计算机不知道该以哪个分支的改动为主,所以会让你解决冲突。
①第一步:在myNewBranch分支下对test.txt尽行改动,随后直接commit;
②第二步:切换到hot_fix分支下,对相同的地方进行改动并commit;
③第三步:切换到myNewBranch分支上进行对hot_fix的合并
内容解析:
上图说的是冲突:在合并的时候检测到了test.txt文件有冲突
上图是说自动合并失败,请解决冲突后再提交④第四步:使用 git mergetool 解决冲突(和上面第一次讲解的有点不同)
按照提示敲下回车,看到如下界面
按照vim编辑器的方法进行编辑即可,把所有的陌生符号都删掉,只留下你想留下的代码即可;
退出就先:wq 后面:q就可以退出辽!
注意:使用git mergetool会生成一个.orgi的文件,这里面是具有上图特殊符号的内容
解决冲突过程中发现的问题
- 当我们在修改myNewBranch文件的时候,不进行add和commit操作,直接切换到hot_fix分支对同一文件进行修改操作,按照我们想的,同一文件不同分支的内容可以是不同的,但我发现文件的内容是在myNewBranch修改过的内容,我就在思考,是不是进行修改的时候,这个文件是不是动态的,如果此时我在hot_fix分支直接进行提交,那么hot_fix分支就直接变为myNewBranch分支修改过的内容了(可是我命名没有修改),为什么会有这种现象呢?
- 答案:当你还没有提交到本地仓库,这时候切换分支,在myNewBranch的未提交的工作也一起跳转到新的分支辽。而切换了新分支后直接进行commit提交,则myNewBranch的修改被提交到了新分支!
git的规矩是,在哪个分支上提交,就算哪个分支上的工作。那为什么会有这么个规矩嘞,是这样的,git的开发者想到:如果一个人在修改文档的时候,突然发现怎么没新建分支,直接在master上修改不太好,就这样开发者宣布有这么个规矩,在哪个分支上提交工作,就算在是哪个分支上的。
从远程仓库下载分支 git fetch
-
①第一步:找到一个远程仓库上有而本地仓库没有的分支,这里我在远程上新建了一个aNewBranch的分
-
②第二步:在命令行中输入 git fetch 之后会提示多了一个分支
-
③第三步:想要拿到新分支中的文件就要再输入 : git merge 新分支名
-
从远程分支直接下载分支其中文件 git pull origin <你想要下载的远程分支名>
其他的命令,可以看(Git常用命令篇)