安卓神兵利器读书笔记之Git
集中式管理工具SVN大家拷贝同一份文件,如果有人占用则等待。中央服务器被销毁代码将会消失与服务器通信出现故障,则无法继续修改代码。分布式代码工具Git将服务器的代码拷贝至本地,不需要频繁与服务器通信,并且能解决服务器代码销毁的情况。git的思想git的安装与配置下载git客户端查看git版本查看git的配置信息删除git配置查看git的设置,可以到项目文件夹,查看隐藏文件,有一个.git的文件夹,
版本控制工具Git
git的安装与配置
-
集中式管理工具SVN
大家拷贝同一份文件,如果有人占用则等待。
中央服务器被销毁代码将会消失
与服务器通信出现故障,则无法继续修改代码。 -
分布式代码工具Git
将服务器的代码拷贝至本地,不需要频繁与服务器通信,并且能解决服务器代码销毁的情况。 -
git的思想
- 分布式
- 快照
- 状态区
- 分支
-
git的安装与配置
下载git客户端
https://git-scm.com/downloads
查看git版本git --version
查看git的配置信息
git config --list git config --global user.name xxx gir config --global user.email xxx
删除git配置
git config --global --unset user.name xys
查看git的设置,可以到项目文件夹,查看隐藏文件,有一个.git的文件夹,里面保存着所有git项目的配置信息,个人配置信息保存在Git的个人配置。
配置别名 Alias
git config --global alias.st status
常用git的指令
创建 提交 查看状态
git init
//将远程仓库拷贝到本地
git clone
//创建一个readme文件
touch README
//打开readme文件
vim README
//使用查看仓库状态
git status
//将文件提交到暂存仓库
git add README
//将文件提交到本地仓库,并添加注释
git commit -m “add README”
//查看提交记录
git log
//根据提交者的名字,查看提交记录,方便写日志使用
git shortlog
//追加修改
git commit -amend -m "追加修改的内容"
//git diff查看文件的具体变化
git diff README
//查看不同节点的版本差异
git diff HEAD 或者git diff HEAD^
//git diff 可以借助第三方的工具查看 比如beyond compare
//查看每行代码的历史修改人
git blame +文件
Git回退
//修改完软件,然后使用git checkout 文件,修改完文件以后,然后使用git status 将会提示文件被修改,然后使用git checkout 回退文件,此时文件将会变为未修改状态。
git status
git checkout
//将文件移出暂存区
git reset HEAD<flie> to unstage
//撤销commit的提交记录,不修改本地工作区
git reset <last commit SHA> <file>
//HEAD表示当前版本,HEAD^表示上一个版本HEAD~100表示上100个版本 。
git reset --hard HEAD^
git commit id回到对应的版本
查看所有的提交历史记录
git reflog
git文件操作
//删除文件
git rm
//暂存文件
git stash
//恢复暂存文件(前者不会删除记录)
git stash apply 和 git stash pop
//删除记录
git stash drop
Git远程仓库
个人搭建一个远程服务器可以使用 OSChina或者Gitee,企业端开发可以搭建Gitlab作为代码仓库。
//本地仓库和远程仓库进行通信的时候需要使用SSH进行身份认证生成id_ras和idras.pub文件
ssh-keygen -t rsa -C"you@email.com"
id_ras是私钥用于验证自己得身份,id_rsa.pub公钥用于在Git远程服务器上标明自己的身份。
将公钥复制到远程服务器上,然后创建一个repo代码仓库,将会出现提示如何使用这个repo。
echo "textGit" >>README.md
git init
git add README.md
git commit -m "frist commit"
git remote add origin "git仓库的地址"
git push -u origin master
其中origin表示的是远程仓库的名字, -u参数会将本地分支和远程分支进行关联。后面提交可以不用添加-u参数。
协助时遇到的问题,使用git pull拉取最新的修改,会留下一个Merge History,可以用使用git pull --rebase指令拉取最新的修改,该指令的作用是将未提交的代码添加到最新版本中,避免过多的Merge History
//拉取远程最新的代码,如果代码没有冲突,远程代码和本地代码将会自动Marge
git pull origin master
//git clone 是拉取远程代码
git clone <git 地址>
使用https的方式会要求输入账号密码,SSH通过对称加密的方式来验证,比较方便。
分支管理
发布一个版本,开发新功能的时候,可以先建一个分支,新功能开发完毕后,额可以通过合并分支将新功能merge到其他开发者的分支中。
//创建并切换到一个分支上
git checkout -b dev
//-b参数是创建并切换,相当于如下指令
git branch dev
git checkout dev
在切换分支的时候,如果有未提交的代码,是无法进行切换分支的。可以使用git statsh将代码进行暂存,然后使用git pop指令将代码调出。
//查看分支
git branch
//合并代码(出现冲突的话,冲突代码会在文件中显示,需要自己解决冲突)
git merge dev
//使用git rebase合并分支,时间线会被合并,而merge操作不会。
git rebase dev
//删除分支
git branch -d dev
//没有合并的分支在删除的时候,使用
git branch -D dev
//查看远程分支
git remote
//查看分支信息
git remote -v
//推送分支
git check out -b dev
git push origin dev
中央服务器称之为origin,主分支称为master,一般开发不会在主分支上进行,主分支用于打tag和发布relase版本,leader以上的级别开发者将其他分支merge到主分支。开发的时候需要建立一个develop分支,提交的时候提交到develop分支。分支使用完毕后,可以删除,避免管理混乱。
tag的作用是标记master的节点记录。通常打在master分支上,保证代码的准确性。
//创建tag
git tag version 1
//指定id创建tag
git tag version0 +指定sha1code id
//创建带标签的tag
git tag -a v1 -m "version1" +codeid
//查看tag
git tag
//查看指定tag的详细信息
git show <tagnamae>
//删除标签
git tag -d version
//删除本地tag,重新push到远程仓库
git push origin:refs/tags/version0
Git图形化工具
Git for windows
Github Desktop(只能管理github上的服务)
SourceTress
Androidstudio Git
当一个项目被添加到Git Root后,就可以VCS菜单进行版本控制管理了。
在项目中多操作,多思考,才能逐渐掌握git的使用技巧。也可以通过在线网站的游戏练习的方式进行熟悉git工具的使用。
实践
//创建tag
git clone 仓库地址
//切换git分支
git checkout 分支
//提交到暂存库
git add .
//提交到本地库
git commit -m "备注"
//提交到远程仓库
git push origin :refs/for/分支
容易发生的错误
1、git add 的时候,将不需要的资源文件add到暂存仓库了,或者漏Add文件。
2、git pull的时候,如果出现代码冲突,先要解决冲突,再push上去。
重装系统后从零开始配置
- 登录到gerrit_readme网页,然后得到账号密码,跳转到代码仓库平台,此时没有权限,在设置当中设置名字和绑定邮箱号,然后叫管理员开放一下权限。下载git工具,点击安装。
- 配置一下git的用户名和邮箱,使用ssh命令生产公钥,添加到gerrit上面去。
- 然后在git bush中就可以将代码clone下来,在as上添加git的插件。提交的时候使用pull commit push 命令。
更多推荐
所有评论(0)