1:新建远端项目(以码云为例),得到初始化项目和地址
![](https://img.haomeiwen.com/i4292830/2c9b861a0a50da3c.png)
2:克隆到本地
![](https://img.haomeiwen.com/i4292830/25e34ba477bdbccc.png)
进入本地查看是否成功拉取了文件,这里可以根据git status查看当前所在分支
![](https://img.haomeiwen.com/i4292830/7a16af8df25b20ee.png)
3:复制本地的项目到该路径,并提交到master.以android项目为例
![](https://img.haomeiwen.com/i4292830/afc7bcbad8ea07d8.png)
4:提交本地项目到master
直接提交会提示untracked files:xxx文件,所以这里提交文件之前应该先add file.
add file 文件名,然后可以看到
![](https://img.haomeiwen.com/i4292830/8007152802c7e246.png)
![](https://img.haomeiwen.com/i4292830/27e089905d579c46.png)
现在我们来提交到服务器:
git commit -m "描述信息"
![](https://img.haomeiwen.com/i4292830/779a62b5c1285bb6.png)
![](https://img.haomeiwen.com/i4292830/29902ecbec763726.png)
到这里后服务器还没有更新到文件,需要最后push推送过去,所以在commit后一定要记得push操作。
提交时候git push 报错如下:
![](https://img.haomeiwen.com/i4292830/e0d895afece9012b.png)
从新从资源管理器中输入用户名和密码,再次push就会弹出界面,然后输入正确的用户名和密码即可:
![](https://img.haomeiwen.com/i4292830/6d601d54c10a06c6.png)
提交成功后查看服务器是否提交成功:
![](https://img.haomeiwen.com/i4292830/d23532bd17bb40e9.png)
这个显示的时间是本地commit的时间并不是push的时间。
5:更新代码,这里可以手动进入查看页面后在服务端添加代码,然后我们是更新代码。
![](https://img.haomeiwen.com/i4292830/2c90337686525b9d.png)
本地修改文件后提交,如图:
![](https://img.haomeiwen.com/i4292830/9981db5a9a66d2e3.png)
这里查看时候发现本地和服务端不一致:
![](https://img.haomeiwen.com/i4292830/ee7977e70edfd341.png)
![](https://img.haomeiwen.com/i4292830/e41b14a89f56077e.png)
![](https://img.haomeiwen.com/i4292830/5edee36ba7b83ef8.png)
可以通过git status查看本地和服务端的差异,发现test.class被删除了。这里我们要么执行还原,更新到这个文件,要么删除这个文件。首先试试还原代码:
1:git log查看需要还原到哪个版本
2:git reset --hard 版本前几位
然后我们在试试删除服务器端的test.class:
![](https://img.haomeiwen.com/i4292830/d4df46e6ce753ad1.png)
==============================================================================================================================================
上诉说明了基本的语法,下面来创建管理分支。首先先明白git分支的好处,新特性和BUG修改都在不同的分支上进行开发和测试。这样规范了整个软件的开发流程。分支之间的互不影响这种特性可以增加团队合作的效率。GIT分支的另外一个重要特性就是可以合并不同软件仓库(fork)的分支。大体就是:开发团队有一个主软件仓库,开发者可以fork这个仓库,相当于克隆了一个私有的软件仓库,然后开发者就可以在自己的软件仓库中建立分支并开发测试,测试完毕之后,可以向主软件仓库提交merge request,这样新开发的特性就会被合并到主软件仓库的某个分支中。
1:创建分支
![](https://img.haomeiwen.com/i4292830/69996a3a7f7aa86e.png)
2:在dev上创建文件并提交,查看master区别
![](https://img.haomeiwen.com/i4292830/f237c0dd9cc17706.png)
![](https://img.haomeiwen.com/i4292830/93b0f64858b56495.png)
这里如果是添加或者修改了多个文件,不需要每次手动去把每个添加进来,可以直接添加文件夹,git add 文件夹,现在切换到master查看文件是否存在:
![](https://img.haomeiwen.com/i4292830/98c9ae15cd916817.png)
可以看到master中没有这个test文件。
3:合并分支到master
![](https://img.haomeiwen.com/i4292830/13a59b02a656ac55.png)
这个合并操作需要切换回master。
这里合并成功后,本地有了dev_test,但是服务端没有:
![](https://img.haomeiwen.com/i4292830/a8c7d47c5e8645f3.png)
所以这里还需要git push 到服务器上。
![](https://img.haomeiwen.com/i4292830/8d5fbf3b193f4727.png)
这里每次需要commit时候先pull更新带最新的代码。
下面附上git常用语法:
git config:配置相关信息
git clone:复制仓库
git init:初始化仓库
git add:添加更新内容到索引中
git diff:比较内容
git status:获取当前项目状况
git commit:提交
git branch:分支相关
git checkout:切换分支
git merge:合并分支
git reset:恢复版本
git log:查看日志
===============================================================
这里衍生一个遇到过的问题,如图:
![](https://img.haomeiwen.com/i4292830/638b4068fc762506.png)
结论:如果master主动删除了c文件,然后分支依然有c文件,并且新增了一个d文件,这个时候我们在master合并new分支代码时候,可以看到c文件是被移除的。
在合并时候会弹出这样的框:
![](https://img.haomeiwen.com/i4292830/cd7eb49a1ccda9f0.png)
1:可以输入i,然后在黄色字体里面写入合并信息
2:可以直接按Esc,然后输入 :wq 即可
记得合并后再push一下,以防万一!
如果分支new里面想跟master保持一致,也可以merge master.
==================================================================
我们再来看另一个问题:
![](https://img.haomeiwen.com/i4292830/6e589a2c28c91ecc.png)
这个时候,如果master合并到的文件会是怎样的呢?验证如下:
![](https://img.haomeiwen.com/i4292830/1dd9ff75cb59479e.png)
删除master上这个文件:
![](https://img.haomeiwen.com/i4292830/e1c7e852ab092a65.png)
在分支上修改这个类,然后提交.
![](https://img.haomeiwen.com/i4292830/f3f1c1f5c51e4970.png)
![](https://img.haomeiwen.com/i4292830/6aa675ee611a2bfb.png)
接着切换回master合并:
![](https://img.haomeiwen.com/i4292830/3e1710c112cd35f3.png)
![](https://img.haomeiwen.com/i4292830/ef4def04e5c082e5.png)
更新到了,这里如果
![](https://img.haomeiwen.com/i4292830/37744646c47e2348.png)
是想保留这个文件,就可以git add ,然后提交,如果不需要这个文件可以删除.
如果是master和分支同时对一个类进行了修改,在master合并时候会出现:
![](https://img.haomeiwen.com/i4292830/61a2a1ec9cc1c89e.png)
这个可以看到是这两次差异导致的冲突:
![](https://img.haomeiwen.com/i4292830/f707cf313186529d.png)
进入编辑器收到增删,然后在文件右键标记为解决.后台提交代码.
网友评论