$ git config --global user.name "Your Name" $ git config --global user.email "email@example.com"
版本库又叫仓库(repository),这个目录里面的全部文件均可以被Git管理起来,每一个文件的修改、删除都能被跟踪。 在合适的位置直接鼠标右键建立一个空目录做为仓库,而后从Git-Bash命令行进入到该目录,或者也可使用命令行建立空目录,再进入到该空目录中。 如下给出建立并初始化git仓库的代码: 进入到仓库的位置,我将仓库放在了C:\Android\git-repositories目录下,注意,使用cd命令进入到目录中时,在Git-Bash中应该使用斜线”/”, 而不是反斜线”\” $ cd C:/Android/git-repositories $ mkdir new_repository_1 建立新的目录 $ cd new_repository_1 进入到建立的目录
$ git init Initialized empty Git repository in C:/Android/git-repositories/new_repository_1/.git/ (显示信息意思为:初始化了一个空的Git仓库,new_repository_1目录下多了一个.git目录,时用来管理版本库的)
$ git add . 添加全部的文件、文件夹 $ git add <file> 添加指定名称的文件,<>内部写文件全称 注:若是文件没有作出任何修改,则默认不会添加任何文件
$ git commit –m “commit info” 提交本次事务,即将add的文件提交到git仓库,引号内部表示本次提交的提示信息
$ git status 显示提交的状态:已经添加,等待提交事务的文件(绿色字体表示);已经改变可是没有添加(not staged)的文件(红色字体表示);
$ git diff <文件全称> 若是已经add了,就打印不出有什么修改了,这一步骤应该在add以前,即添加以前能够用来看看作了什么修改。
$ git log Commit xxx commit id 版本号 Author:xxx<xxx@xxx.com> 提交人和邮箱 Date:xxx 提交的时间 XXXXXXXXXXXXXX 提交的信息(因此说,提交信息很重要!!!) $ cat <文件全名称> 显示整个文件的内容
$ git reset --hard head^ 在Git中,HEAD表示当前版本,就是最新提交的版本,即便用git log打印出来的位于第一位的版本,上一个版本就是HEAD^,上上个版本就是HEAD^^, 当前向上100个能够写成HEAD~100。固然,还有一种方式就是直接使用commit id来代替HEAD^,好比版本号是cadab353589f3eef075817b890dafe8b722d802b, 那么就能够直接使用命令: $ git reset --hard cadab353589f 使用前几位表示便可,git会自动查找 注:版本回退之后,使用git log打印的历史记录都是回退版本以前的数据,以后的都没有了,不过放心,git总有后悔药能够吃哒~ 1.若是命令行窗口没有关闭,直接去前面找commit id便可; 2.若是命令行窗口关闭了,或者次日后悔了,能够进入到该目录下,使用git reflog命令来查看之前的每一次命令,能够得到每次提交的commit id, 就能够版本回退了。 $ git reflog 能够查看命令历史,包含提交的commit id
简单讲,就是说只要进行了代码提交,git内部都会按照时间节点进行记录,每条记录都有commit id做为惟一标识(就像是链表每一个节点都有惟一的地址同样),HEAD老是指向当前版本(就像指针同样)。所谓的版本回退,仅仅是讲Head从当前版本指向了指定的版本,而后将工做区的文件也修改了。linux
Git和其余版本控制系统的一个不一样之处就是有暂存区的概念。 - 工做区 就是电脑里能看到的目录,好比上面建立的C:\Android\git-repositories\new_repository_1文件夹就是一个工做区。 - 版本库 工做区中有一个隐藏目录.git,就是Git的版本库,版本库里存放了不少的东西,其中最重要的就是state(或者叫index)的暂存区, 还有Git为咱们自动建立的第一个分支master,以及指向master的一个指针叫HEAD。
前面讲到,将文件存入到Git版本库里,分两步执行: 第一步:用git add命令将工做区的修改文件添加到暂存区; (屡次操做)
第二步:用git commit命令将暂存区的全部修改内容提交到当前分支。(事务提交,包含第一步屡次操做,注意,不在暂存区的修改不会被commit)
一旦事务提交以后,若是对工做区没有作什么修改,那么工做区就是干净的。
由于建立Git版本库的时候,Git自动建立了一个master分支,因此如今git commit 就是往master分支上提交事务。
Eg: android
1. 须要安装的软件:msysgit 2. 须要申请的帐号: 2.1 公司GitLab帐号:向公司GitLab管理人员申请 – *** 2.2 项目GitLab权限:向本项目的建立/管理人员申请 – 好比**app管理者 *** 3. 进入到GitBash命令行操做:
本机地址为:C:\Android\git-repositories,本身建立的git仓库地址
$ git config --global http.sslVerify false
$ git clone https://***.***.***.***/android/salestool.git (输入用户名和密码以后,将开始下载远程仓库,这里仅仅下的是主分支-master)
$ cd salestool/
$ git branch –a 显示以下: * master remotes/origin/HEAD -> origin/master HEAD-远程仓库的当前分支是主分支 remotes/origin/dev dev分支(全部操做都会合并到该分支) remotes/origin/master master分支-主分支
$ git checkout -b dev
$ git pull origin dev (因为公司服务器比较慢,因此你懂得... ...) 以上操做以下图所示:
$ git status On branch dev -只有一个本地dev分支(可是内容已是远程仓库dev的内容了) nothing to commit, working directory clean -此时没有任何修改,工做区很干净
$ git branch –a 上面显示的是本地分支,绿色字体和”*”表示的是当前所在的分支, 下面红色部分显示的是远程仓库的分支。
$ git checkout -b dai
$ git add . 注意:确保此时在本身的分支上进行操做,eg:dai(我本身的名字) $ git commit –m “” 将本地暂存区的代码提交到本身的分支上
$ git checkout dev $ git pull origin dev (此时,本地仓库的dev分支已经确保是最新的了)
$ git checkout dai $ git merge dev 将本地dev分支合并到本身的分支上 注意:此时已经将dev分支合并到本地的本身的分支上了,有时候可能须要解决代码冲突问题,解决完毕后进行下面的操做。 若是有冲突,则须要再次进行add,commit操做。
$ git checkout dev $ git merge dai 以上操做的代码以下:
接下来的操做,就是将本地dev分支推到远程仓库的dev分支上了... ...
$ git push origin dev
1. git remote –v 显示远程分支的名称和url
有一些文件并不能上传到git上。 1.Android Studio自动生成配置文件:不能上传到git上,不然的话,若是你的同事下载下来,可是它的studio(gradle)版本和你的不同, 或者其余配置的各类路径不同,就须要重建项目,严重的话,根本没法重建项目,一片爆红!网上的方法也解决不了。 2.保存了数据库密码或者什么不能上传的文件; 。。。 因此须要在项目的根目录下建立一个名称为.gitignore文件,而后把要忽略的文件名填进去,Git就会自动忽略这些文件。 不须要从头写.gitignore文件,GitHub已经为咱们准备了各类配置文件,只须要组合一下就可使用了。 忽略文件的原则是: 1.忽略操做系统自动生成的文件,好比缩略图等; 2.忽略编译生成的中间文件、可执行文件等,也就是若是一个文件是经过另外一个文件自动生成的,那自动生成的文件就不必放进版本库, 好比Java编译产生的.class文件; 3.忽略你本身的带有敏感信息的配置文件,好比存放口令的配置文件。 想知道忽略那些文件吗,很简单,找个大神的github,看看他的项目中怎么写的,就ok了!!! 例如,下面是我从张鸿祥哪里copy的,仅作参考: /captures # Built application files *.apk *.ap_ # Generated files bin/ gen/ # Gradle files .gradle/ /build /*/build/ # Local configuration file (sdk path, etc) local.properties # Proguard folder generated by Eclipse proguard/ # Log Files *.log # Eclipse project files .classpath .project .settings/ # Intellij project files *.iml *.ipr *.iws .idea/ # System files .DS_Store 下面是比较清晰的目录结构:
注意:我的建议使用命令行方式进行版本管理,可是可使用图形化界面看本次代码的改动,比较方便。 1. 在所在项目,右键选择git gui
2. 界面以下,若是会使用命令行,那么一看就明白了
3. 配置
UTF-8:Edit-Options:
若是以前设置好了,直接在项目中右键进入,那么这些都不用设置:
4. Add commit push很快完成,不用输i入命令
5. 查看代码对比
若是想要查看全部的改动历史,能够:
就能够看到全部的代码改动历史,而不用去网上看。注意,这里能看到全部人的改动哦!!!很是强大!
6. 设置和远程仓库关联(若是从项目根目录进入,则自动关联,不用设置)
若是须要设置,选择remote-Add,参考以下:
7. 新建项目,从远程仓库克隆
右键选择git gui:
选择克隆已有版本库: git
1. $ pwd 用于显示当前目录 2.$ ls –ah 用于显示当前目录下的全部子目录和文件(包含隐藏的) 3.$ clear 清屏 4.$ exit 退出linux模式 注意:经过cmd进入linux模式,命令是 adb s4.hell 注意事项 1.不要使用记事本打开编辑任何文本文件,可使用Notepad++,默认编码格式设置为UTF-8 无BOM; 2.开发Android studio项目,GitBash命令行和as中的Terminal,使用效果是同样的。