一、Git的基本介绍
git是目前世界上最先进的分布式版本控制系统。git是 LinusTorvalds 为了帮助管理Linux 内核开发而开发的一个开放源码的版本控制软件。git拥有敏捷高效地处理任何或小或大的项目。所以现在绝大数开源项目都采用git管控,android源码也是通过git来管控的。因而了解一些git的基本知识是开发人员必备的技能。
二、Git的基本操作命令与设置
图.Git的操作原理图
(1) 用户账号的配置
gitconfig --global user.name “xxxx” #这个是配置账户名
gitconfig --global user.email “xxx@xxx.com” #这个配置用户邮箱
--global表示在当前用户下的全局配置
配置这个主要是用于提交信息所用,以及代码拖拽以及提交的验证。
(2) 设置commit_temp
在根目录下新建一个.commit_temp文件,
然后在隐藏文件中的.gitconfig中添加
[commit]
template = /home/XXX/. commit_temp
(3) git的别名设置
别名的意思就是给一个指令重新取个名字,git别名其实就是将一些指令简化。
例如
git status .
这个指令检查当前文件的状态。
Status这个单词有时候我们写起来感觉有点烦,就想给他简化下,这时候我们就用到了别名。
别名的设置是这样子的:gitconfig --global alias.st status
然后你进行gitst .
gitst . 和git status . 效果是一样的。在后面我们一般设置如下常用别名。
(gitlg)
gitconfig --global alias.co checkout
gitconfig --global alias.br branch
gitconfig --global alias.ci commit
所以说别名可以随你爱好来设置你的指令,当然你也可以不设置。
(3)如何查看git的配置信息
可能有人疑惑,刚才设置的别名以及账户配置,到底在哪里看。这里介绍两种方式来查看配置文件。
一是指令
git config --list
二是直接查看配置文件,在用户根目录,要能查看隐藏文件夹。在根目录打开.gitconfig文件。
在提交之前,Git有一个暂存区(stagingarea),可以放入新添加的文件或者加入新的改动
列出和暂存区上不一样的文件,包括修改的和添加的文件。
如果只是想列举出当前文件夹下面修改的文件的话使用git status . 。
在代码中做过修改后使用git status .后
修改的文件:指你在这些文件中做过修改 (在Changes not staged for commit 下面,前面有modifed: 红色表示)
删除的文件:指你把原有的文件删除了(在Changes not staged for commit 下面,前面有deleted: 红色表示)
添加的文件:指原来的代码是没有这些文件的,是你添加的(在Untracked files下面,红色表示)
2. git diff
此命令比较的是工作目录中当前文件和暂存区域快照之间的差异
红色部分是删除部分,绿色的为添加部分
我们需要在提交之前对每个文件进行gitdiff一下检查所有的修改是我们需要提交的修改吗。
3. git checkout
git checkout 有2个作用,一个是切换分支. 一个是替换本地改动
git checkout filename
此命令会使用HEAD中的最新内容替换掉你的工作目录中的文件.已添加到暂存区的改动以及新文件都不会受到影响.
注意:git checkout filename会删除该文件中所有没有暂存和提交的改动,这个操作是不可逆的.
一般是在你不想要这个文件中的修改了可以使用这个命令来还原。
4. git clean –df或者rm -df
git clean –df filename 或者rm –dffilename
此命令会是正对你自己添加的文件,在还没有添加到暂存区时使用这个命令可以删除文件,并不影响暂存区
5. git add/rm
此命令是添加需要修改的文件到暂存区 。
git add filename 是添加filename文件到暂存区。
git add . 添加所有修改的文件和新添加的文件
如果需要添加删除文件需要在add后面添加参数选项-A,git add–A . 也可以使用gitrmfilename
deleted: 表示你删除的文件
new file: 表示你添加的文件
modifed: 表示你对这个文件进行了修改
6. git reset HEAD /git reset --hard HEAD
你git add.后,你发现有些文件你不需要提交的。那么此时就要回退add之前状态。
此时,你可以使用下面指令git reset HEAD xxx。xxx代表某个要回退的文件。HEAD代表git的最近一次提交。这个指令仅仅是将你要提交的文件拿出来,不进行提交,而你的修改却还在。如果你要彻底回退这个文件,把你的修改给回退,gitreset --hard HEAD 加个--hard就会把你修改给回退所有的文件
7. git commit
执行git commit 后会弹出然后会出来一个提交模板(这个模板根据.commit_temp内容来的),写上相关信息。(也可以在.commit_temp中直接写好)
模板的操作。如果你要输入/修改东西需要按I ,输入完后需要ctrl+c 然后 shift +q,然后输入wq回车
8. git reset --soft HEAD^
当执行完git commit 后发现还要修改的时候可以执行这个命令来回退git commit
9. repo upload .
提交这次修改
10. git log
我们知道查看记录通过git log.来查看,但是我们查看某个文件的记录,是这样查看的git log xxx。
11. git show
假如我要查看某一次具体修改,通过git show xxx(这个xxx是commit id)
当然了,可能我不想查看具体修改,我就想知道本次修改的哪些文件
就在git showxxx HEAD --stat
12. git barnch /git checkout
git barnch是查看当前代码的分支,如果加上git barnch -a 那么会在原来显示当前分支的基础上在把这部分代码所有的分支显示出来
git checkout (branchname)切换到一个分支.
git checkout -b (branchname): 创建并切换到新的分支.
13. git stash –u
假设我当前分支上有的修改,而现在我又要切换其他分支,做紧急的事。这时候有两种方法,一个是在本地提交。另外一个是保存现场。然后git stash -u 这个就把修改给保存起来,你就可以毫不担心的切换到其他分支上。等做完之后,切回来,如何恢复?git stash list你可以查看保存的栈的情况,你可以将多个修改给保存起来,通过git stash list来查看,恢复用
git stash apply stash@{0},如果你仅仅是恢复最上面的修改,可以简化gitstash pop
14. git pull --rebase
更新代码---在更新的时候需要注意本地有修改并且和服务器修改的同一个地方的话会出现更新失败的情况
三、Git使用流程
提交的基本步骤
1. git pull –rebase最好在你修改的代码前更新一下代码
2.将修改的代码copy到wind目录(提交目录)
3. git status 查看修改的文件是否是对的。(最好对每个文件进行一下git diff一下查看文件内是否是你要提交的,也可以使用BeyondCompare 和一份你没有修改的代码进行对比—推荐)
4. git add
(如果再之前你没有git pull –rebase,那么再这边需要git pull –rebase一下,这样会提前通知你是否冲突)
5. git commit 然后会出来一个提交模板,写上相关信息。保存退出
6. repo upload . 提交代码