引言:对于Git的使用已经有一段时间了。不会太多的命令行操作,主要使用基于Android Studio和Eclipse对git进行使用。仓库的创建,代码的提交、更新、冲突解决等等。
时间:2016年7月23日12:12:27
作者:JustDo23
版本:[ Git ][ Windows ][ 2.6.4 ][ 2015-12-14 ]
01. 下载安装
打开Git的官方网站选择自己需要的平台下载最新版的Git并进行安装。
02. Android Studio中配置
如果需要在Android Studio或Eclipse等开发工具中进行使用,都需要进行相关的配置。在Android Studio中指定git.exe
的安装路径。
配置之后点击界面的Test
按钮进行测试。执行成功之后会提示当前安装的Git版本信息。
03. 新建项目
在Android Studio中新建一个Android项目。
-
在Git服务器GitBlit中同样新建一个项目。
在以上截图中,如果选择了
加入RedMe
或加入.gitignore
后期操作会变得复杂。-
创建成功之后会跳转一个提示界面。提示学习Git以及提示代码推送操作步骤。
04. 仓库连接
服务器仓库建立完成之后,需要在本地建立仓库,同时将本地仓库和服务器的仓库建立连接。
切换到刚才在AS上新建项目的根目录下。
-
右键 选择
Git Bash Here
。 -
执行init指令初始化仓库。
git init
-
执行add指令,将本地仓库与服务器仓库连接。
git remote add origin ssh://admin@192.168.1.149:29418/JustGit.git
05. 配置AS可以使用Git
在配置完成git.exe
的路径之后,还需要进行一步操作,配置之后在AS中才会有Git相关的选项。配置如下:
这一步操作其实在其他地方也有可能会遇到,例如,你从别的地方copy了一份含有git的代码。当你利用AS从本地打开该项目之后就会发现没有git相关操行的入口了。此时,进行上述的操作,就可以了。
操作之后,会在AS左下角的工具栏中发现多出一个Version Control
的标签。同时,许多文件都使用红色的。这一点是和SVN类似,文件的颜色表明了文件在Git仓库中的不同状态。
06. 忽略文件
Git下面有有个.gitignore
的文件。这个文件主要是来配置Git将哪些文件进行过滤,进行忽略的。Git是代码版本控制管理的工具,版本控制就是对一个文件进行追踪,进行监控,记录各个版本信息。需要忽略的文件就不需要再进行监控了。
那么,哪些文件需要进行忽略呢?根据个人经验,编译生成的文件,集合环境IDE自动生成的文件等等都可以进行忽略。因为这些文件每更换一个环境就会发生改变。关注这些文件的版本变化,不仅没有任何作用,反而会加重开发者的负担,甚至影响工程的编译和开发。所以忽略这些文件以及忽略文件的配置就显得十分重要。
在AS中切换到Project
视图。下图框选的部分都是需要进行忽略的。部分不忽略没有关系,比如gradle文件是可以不进行忽略。
07. 配置忽略文件
-
打开根目录下的
.gitignore
文件,配置如下*.iml .gradle /local.properties /.idea/workspace.xml /.idea/libraries .DS_Store /build /captures .idea # 以下是可以选择的 用#进行注释 /gradle gradle.properties gradlew gradlew.bat
-
打开app目录下的
.gitignore
文件,配置如下*.iml /build
配置成功之后,被忽略的文件颜色从红色变成了黑色。说明配置成功。
08. 添加代码到Git索引
忽略文件配置完成之后,就可以放心大胆的将代码提交到本地仓库了。提交之前需要进行添加追踪,添加索引的操作。因为代码文件颜色还是红色,红色代表没有添加至索引,需要执行add操作。
继续之前的操作,同样在AS的Project
视图下,选择项目的根目录
,然后在菜单栏中选择 VCS
选择 Git
选择 Add
这里需要注意的是,选中项目根目录
之后,后续操作的操作范围
就是整个项目目录结构。如果是选择app目录,那操作范围缩小了。也就是说,先用鼠标选择操作范围,然后再执行相应的操作。这一点还是比较重要的。
09. 将代码提交本地仓库
将文件添加索引之后,文件的颜色就从红色
变成了绿色
。继续之前操作,同样选择项目的根目录
,然后在菜单栏中选择 VCS
选择 Git
选择 Commit Directory
点击之后,会提示选择需要Commit的文件,以及填写这一次Commit的描述
重要提示,这一步操作的时候,需要认真查看自己提交的代码,确认需要提交的就勾选,否则就不要勾选提交。另外,这里 Git 强与 SVN 的地方,就是提交描述是必须填写的,不填写就无提交。
点击Commit
,进行提交,同时会提示一些警告,初学Git的人不用害怕。继续点击Commit
提交成功之后,会在左下角的菜单栏进行提示,界面提示的信息是一定要注意看的。
走到这里不要想着大功告成,代码提交完毕了。在Git中Commit
操作只是将代码提交到本地仓库了。将代码提交至服务器仓库,需要通过Push
操作才可以。
10. 更新服务器代码
走到这一步,我们需要将服务器仓库中的代码进行更新。其实按照上边操作服务器现在仍然是个空仓库,没有任何代码可以进行更新。如果之前勾选了加入RedMe
或加入.gitignore
,那么更新操作就十分必要了。这一步操作进行更新代码,一方面是为了确保万无一失,另一方面是为了强调更新的重要性,强调在以后的使用过程中不要忘记了代码更新。
在Git中通过Pull
操作来进行代码更新。在菜单栏中选择 VCS
选择 Git
选择 Pull
点击Pull
之后,进入如下界面
点击ssh
连接后边的刷新按钮
,提示进行连接,进行ssh安全连接
点击Yes
进行连接,同时提示输入密码
很显然,没有任何可以进行更新的文件。同时,我们看到本地仓库和服务器仓库已经切实的建立了连接。
11. 将本地仓库代码提交到服务器仓库
上边已经提到,代码还没有提交到服务器仓库中。在Git中通过Push
操作来进行代码更新。在菜单栏中选择 VCS
选择 Git
选择 Push
点击 Push
之后,会提示之前Commit的记录,将这些Commit的记录push到服务器,同时还会显示每一次的Commit注释。
点击 Push
之后,需要输入密码。
点击 OK
之后就开始将代码Push
到服务器,成功之后,会在右下角有提示。
接下来,打开浏览器,查看刚才提交的记录。
12. 小结
走到这一步,完成了git的配置,仓库的创建,忽略文件,代码更新,代码提交等等操作。最重要的就是从无到有,完成了第一次的代码提交。
以上所有操作都是使用管理员账号admin进行操作的。接下来使用另一个账号也就是搭建服务器时候创建的账号just,进行仓库的克隆,代码的提交,更新,冲突的解决等等。
所以明确一下,两个账号相当与两个开发者,通过git仓库URL可以判断使用的是哪个账号。
- 账号:admin
- 账号:just
13. 仓库的克隆
克隆服务器仓库到本地需要使用服务器仓库URL进行克隆,打开浏览器,使用账号just
进行登录,登录之后可以获取到该账户的仓库URL。
打开Android Studio点击File
选择New
选择Project from Version Control
点击Git
弹出对话框,输入仓库的地址,点击Clone
进行仓库的克隆
输入密码,克隆之后,选择使用一个新的界面进行打开
打开刚才克隆的项目之后,会提示Gradle目前没有配置,点击OK
进行自动配置
配置结束之后,克隆完毕。可以到磁盘目录查看刚才克隆的项目。
14. 克隆方法
除了上边的克隆方法外,还有其他一些路径,总体而言都是大同小异。建议使用上边提到的第一种方法。不推荐使用以下的方法。
-
第二种方法:
-
第三种方法:
其实这两种是相同的,只不过路径不同。点击Git
之后,同样是弹框提示输入仓库地址,不同的是,Clone之后会提示是否打开,
打开之后会提示进行gradle的配置
配置之后依旧是打不开的,因为没有提交本地SDK路径配置的文件local.properties
所以,以这两种方式clone之后,应该使用open an existing Android Studio Project
的方法进行项目的打开。
所以,这两种打开路径并不进行推荐。
15. 一个流程
将仓库克隆之后,就可以进行开发。这里简单整理一个操作的流程:
- 更新服务器代码
- 进行本地代码开发
- 开发结束,更新服务器代码
- 这一步更新之后,可能更新成功,也可能更新失败。
- 更新失败,可能是本地某个文件有改动,服务器这个文件同样有改动
- 更新成功或失败,都可以继续往下操作
- 本地代码Commit
- 更新服务器代码
- 本地带Push到服务器
- 结束
这个流程是笔者自己总结的,也是比较推荐,其中有多次代码更新,也是Pull
操作。在多人协作开发的过程中,服务器的代码是随时有可能变更的,可以在浏览器中进行查看,多次更新代码好处多多。
16. 实践
使用just账号进行一个流程的实践。
-
更新服务器代码
-
在项目中新建一个类
JustActivity
,当这个类建好之后,会提示将其添加到Git索引
勾选
Remember
,以后新建的文件会自动添加到索引。添加索引参考以上第八点讲到的知识。JustActivity
的代码如下/** * 账号:just */ public class JustActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.e("just", "This is just ."); } }
更新服务器代码,服务器没有任何变动,这里更新不下东西。更新之后,会在界面左下角工具栏中显示信息,
Version Control
的标签内显示更新的文件。Commit操作,参考第九点讲解
更新代码
Push操作,参考第十一点讲解
结束
提交之前需要明确当前用户对服务器仓库是否有权限,没有权限需要进行权限的添加
提交之后,打开浏览器,查看提交的记录。
打开账户admin
的项目,进行代码更新。
17. 冲突解决
冲突的出现:
- 修改了同一个文件的不同地方
- 这种冲突解决比较方便,更新之后会自动进行合并。
- 修改了同一个文件的同一地方
- 这种冲突需要手动进行合并。
为了演示冲突的解决,两个账号修改进行同一文件同一行代码,账号admin
先提交代码,账号just
更新遇到冲突,并进行解决。按照如下操作:
两个账号中` MainActivity `的代码如下 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }
-
账号admin
在MainActivity
中添加一行代码,结果如下public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.e("conflict", "This is admin"); } }
-
账号just
在MainActivity
中添加一行代码,结果如下public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.e("conflict", "This is just"); } }
账号admin
进行代码的更新与提交。没有冲突,账号admin
很轻松的将代码提交至服务器,打开浏览器可以看到提交记录。-
账号just
进行代码的更新。因为本地文件和服务器文件都有改动。所以提示更新失败了。 账号just
进行代码的Commit-
账号just
进行代码的更新。会弹框提示代码冲突。同时,可以看到文件中也有进行标识冲突的地方
-
进行代码合并可以手动在代码文件中进行修改,也可以点
Merge
进行对比合并。通过界面的
双向箭头
和叉号
进行代码的合并点击界面的
Apply
完成合并 账号just
合并结束,没有任何错误的时候,需要进行代码的Commit账号just
进行Push
操作,提交代码打开浏览器查看提交记录
账号admin
进行代码更新-
冲突解决完毕。合并结果如下:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.e("conflict", "This is admin"); Log.e("conflict", "This is just"); } }
18. 查看历史
如有需要查看某个文件的历史记录,选中文件,右键选择Git
选择Show History
19. 文件还原
文件还原的功能其实就是用来帮我们后悔,或者是回退的操作。这里举出两个使用的地方:
- 如有对某个文件进行修改之后,不想将其Commit,希望还原回旧版本,选中文件,右键选择
Git
选择Revert
- 对于已经
添加add
的文件,如果你不想继续对其添加索引,可以进行撤销add
,方法就是还原
后记
- Git的使用基本完成
- 对于Git命名行操作,并没有接触太多
- Git中的分支操作没有涉及