设为首页 收藏本站
查看: 776|回复: 0

[经验分享] Android Studio配置Git及Git文件状态说明

[复制链接]

尚未签到

发表于 2018-1-14 23:50:12 | 显示全部楼层 |阅读模式
  Android Studio配置Git还是比较简单的,麻烦的是可能中间出现各种问题。如果你想了解或感兴趣,请往下看。
  首先你得下载Git客户端,网址:http://git-scm.com/download/。
  根据需要下载相应的版本,并安装。然后在Android Studio中指定git.exe,点击“Test”,成功则会弹出以下提示。

  由于我用的是Android Studio 2.0 Preview,根本不存在“Enable Version Control Integration”提示,害我找了半天 T~T。其实有个类似的操作。

  就是这个“Create Git Repository”,不然你会一直得到“...such that source detected in git but Unregistered Vcs root detected”提示。以下图示中unregistered roots上面的两个工程就完成了配置。

  完成了这一步,往下就是为git添加remote了。我使用开源中国在线代码托管,先得到一个地址:https://git.oschina.net/***.git.
  打开git base,并切换到项目的根目录,输入以下命令
  

git remote add origin https://git.oschina.net/***.git  

  顺利的话这一步就完成了。
  然后在Android Studio中进行git add操作。

  接着就是commit directory,最后push代码到远程仓库。

  至此,一次提交结束。
  默认情况下,Android Studio的项目会有这几个文件夹:build, libs, src. 但每次提交代码到git,都会提示build文件夹中的众多需要提交的文件,其实我们根本不关心build文件夹中的文件改动情况。怎么办呢?利用.gitignore把它过滤掉。
  在工程根目录建立.gitignore文件,然后添加
  

build  

  就这么简单!如果你想过滤其它文件,添加相应的规则就可以了。
  保存.gitignore文件后,还需要运行一下以下几个命令,以便把.gitignore文件提交到git上。
  

git rm -r --cached .  
git add .
  
git commit
-m "添加.gitignore文件"  
git push origin master
  

  “git rm -r -- cached 某个目录”,这个命令有点狠,会把目标目录清空,--cached .(注意:此处表示所有的文件,有一个点);"git add .",再把所有的文件重新加入缓存(stages new and modified, without deleted)。如果你当前其它文件已经是最新且已经push到远程仓库,完全可以用add .gitignore了事。
  此外,还可以用以下命令代替git rm -r --cached .
  

git add -A  

  表示stages All。新手可能不太明白。好,我从git中的三种文件状态及其转换说起。
  ---------------------------------------------------------------------------------------------
  华丽的分隔线
  ---------------------------------------------------------------------------------------------
  1、首先,我在git对应的工程目录下创建一个test.txt,并输入以下字符串并保存。
  

Hello  

  2、打开git bash,输入命令git status,查看文件状态

  你会看到,红色的test.txt处于待提交状态,这个文件被标记为Untracked files,并建议你使用git add <file>...命令将文件包含到待提交清单中。
  3、按照提示,使用命令git add test.txt,把这个文件加入到git的快照中,再次git status

  此时的test.txt状态变成了Changes to be committed,等待被提交。然后同时它还提示你,利用git reset HEAD <file>...可以将文件状态还原成为暂存状态,也即回到Untracked files状态。
  4、打开test.txt,向其中加入些内容,保存。
  

Hello  
world
  

  其实就多了world这个字符串。再次用git status查看文件状态。

  除了之前的“Changes to be committed”状态,还多了“Changes not staged for commit”状态,表明文件已经被修改,但修改还没有放入暂存区域,也就是没生成快照。如果此时进行commit操作,只会提交"Hello",忽略“world”。
  根据提示,如果想把最新的修改“Hello world”提交到仓库,需要再次使用命令git add test.txt;如果想撤销修改,即只想提交“Hello”,可以使用git checkout -- test.txt,再次git status,则可以看到状态又改变了。

  总结:所以,在文件未进行commit操作之前,存在三种状态:Untracked files, Changes not staged for commit, Changes to be committed. 每种状态可以随意转换。
  --------------------------------------------------------------------------------------------------------
  题外话
  --------------------------------------------------------------------------------------------------------
  在git的后续版本中,添加了git stage作为git add的一个同义词,这样在语义上更符合上面的Changes not staged for commit。为什么要增加stage呢?
  1、分批提交,降低commit的粒度。
  2、文件快照,便于回退。
  如果一次提交过多文件,对后续的回滚或跟进无疑非常不利,对问题的定位也不便,体验过估计清楚的。比如你做了两个功能A和B,对应的文件修改分别是a1.java, a2.java; b1.java, b2.java,提交时就可以这样:
  

git stage a1.java a2.java  
git commit
-m "功能A"  

  

git stage b1.java b2.java  
git commit
-m "功能B"  

  同时,每次修改后stage,任何时刻,都可以回到上一次staged的状态:
  

git checkout -- test.txt  

  如果想从stage中删除,则使用reset
  

git reset test.txt  

  这个命令就是git stage test.txt的反操作。
  参考:知乎-为什么要先git add才能git commit?

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-435178-1-1.html 上篇帖子: Git 命令行(cygwin) + Git Extensions + Git Source Control Provider 下篇帖子: 从SVN迁移到GIT
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表