Git 一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
官网下载地址https://git-scm.com/downloads/
Git是用于Linux内核开发的版本控制工具。采用分布式版本库的作法,不需要服务器端软件,就可以运作版本控制,使得源代码的发布和交流极其方便。速度快,最为出色的是它的合并追踪(merge tracing)能力。
工作实际开发操作步骤(简化):
一、如何从GitLab上clone项目:
Android Studio工具VCS-->Checkout from Version Control-->Git Git Repository URL:填写刚刚复制的项目地址 Parent Directory:项目路径 Directory Name:项目文件夹名称
二、如何创建上传至GitLab:
1.输入用户名与邮箱,--global 参数表示你这台机器上所有的Git仓库都会使用这个配置。
git config -- global user.name "Your Name"
git config -- global user.email "email@example.com"
2.检查电脑是否已经有 SSH Keys
cd~/.ssh
ls
3.创建一个 SSH Keys 第一个Enter表示Keys存储的位置,默认按回车键即可。第二个和第三个Enter表示Push文件的时候要输入的密码,不需要密码就默认按回车键即可
$ ssh-keygen -t rsa -C "your_email"
4.开发工具中修改项目外部.gitignore
*.iml
.gradle
/local.properties
.idea
.DS_Store
/build
/captures
.externalNativeBuild
5.创建本地Git仓库 Android Studio顶部菜单栏上的VCS-->Import into Version Control-->Create Git Repository
6.关联远程仓库 git remote add origin git@gitlab.com:wildma/WildmaGit.git 项目的远程地址
7.添加文件 VCS-->Git-->Add...
8.提交文件 每次提交前需要先更新项目VCS-->Update Project 选中Merge,点击OK 然后提交文件VCS-->Git-->Commit Directory...
9.将提交的文件推送到远程仓库 VCS-->Git-->Push...
Git基本常用命令:
mkdir: XX (创建一个空目录 XX指目录名)
pwd: 显示当前目录的路径。
git init 创建新的 git 仓库(把当前的目录变成可以管理的git仓库,生成隐藏.git文件)
git add XX 把xx文件添加到暂存区去。(git add -A .来一次添加所有改变的文件 git add -A表示添加所有内容 git add . 表示添加新文件和编辑过的文件不包括删除的文件 git add -u 表示添加编辑或者删除的文件,不包括新添加的文件)
git commit –m “XX” 提交文件 –m 后面的是注释。
git push origin master Git会把master分支推送到远程库对应的远程分支上(可以把 master 换成你想要推送的任何分支)
git status 查看仓库状态
git log 查看历史记录
git diff XX 查看XX文件修改了那些内容
git reset --hard HEAD^ 或者 git reset --hard HEAD~ 回退到上一个版本
(如果想回退到100个版本,使用git reset –hard HEAD~100 )
cat XX 查看XX文件内容
git reflog 查看历史记录的版本号id
git checkout -- XX 把XX文件在工作区的修改全部撤销。
git rm XX 删除XX文件
git remote add origin https://github.com/tugenhua0707/testgit 关联一个远程库
git push –u(第一次要用-u 以后不需要) origin master 把当前master分支推送到远程库
git clone /path/to/repository创建一个本地仓库的克隆版本
git clone username@host:/path/to/repository远端服务器上的仓库
git checkout –b dev 创建dev分支 并切换到dev分支上
git branch 查看当前所有的分支
git checkout master 切换回master分支
git merge dev 在当前的分支上合并dev分支
git branch –d dev 删除dev分支
git branch name 创建分支
git stash 把当前的工作隐藏起来 等以后恢复现场后继续工作
git stash list 查看所有被隐藏的文件列表
git stash apply 恢复被隐藏的文件,但是内容不删除
git stash drop 删除文件
git stash pop 恢复文件的同时 也删除文件
git remote 查看远程库的信息
git remote –v 查看远程库的详细信息
git remote add origin <server>如果你还没有克隆现有仓库,并欲将你的仓库连接到某个远程服务器
Git特点:
1.分布式:Git系统是一个分布式的系统,是用来保存工程源代码历史状态的命令行工具。
2.保存点:Git的保存点可以追踪源码中的文件, 并能得到某一个时间点上的整个工程项目的状态;可以在该保存点将多人提交的源码合并, 也可以回退到某一个保存点上。
3.Git离线操作性:Git可以离线进行代码提交,因此它称得上是完全的分布式处理,Git所有的操作不需要在线进行;这意味着Git的速度要比SVN等工具快得多,因为SVN等工具需要在线时才能操作,如果网络环境不好, 提交代码会变得非常缓慢。
4.Git基于快照:SVN等老式版本控制工具是将提交点保存成补丁文件,Git提交是将提交点指向提交时的项目快照,提交的东西包含一些元数据(作者,日期,GPG等)。
5.Git的分支和合并:分支模型是Git最显著的特点,因为这改变了开发者的开发模式,SVN等版本控制工具将每个分支都要放在不同的目录中,Git可以在同一个目录中切换不同的分支。
6.分支即时性:创建和切换分支几乎是同时进行的,用户可以上传一部分分支,另外一部分分支可以隐藏在本地,不必将所有的分支都上传到GitHub中去。
7.分支灵活性:用户可以随时创建、合并、删除分支,多人实现不同的功能,可以创建多个分支进行开发,之后进行分支合并,这种方式使开发变得快速、简单、安全。
工作流
你的本地仓库由 git 维护的三棵“树”组成。第一个是你的 工作目录,它持有实际文件;第二个是 缓存区(Index),它像个缓存区域,临时保存你的改动;最后是 HEAD,指向你最近一次提交后的结果。
SVN与Git的主要区别:
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。
Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。