2015年08月27日 星期四 23时32分40秒
工作区(working space)----->暂存区(staging)---->本地仓库(Local Repository)----->远程仓库(Remote Repository)
已修改为跟踪------>已跟踪未提交------->已提交未发布
git status :
查看当前分支文件状态
是否有已修改未暂存的文件,有的话用 git add 命令暂存。
是否有已暂存未提交的文件,有的话用git commit -m " " 命令提交。
git branch :
查看本地分支情况
总共有那些分支,当前处于那个分支
git branch -d +分支名:
删除分支。
git add :
git add . :
添加已修改未暂存的所有文件,也就是跟踪所有文件。未跟踪的文件标记为红色,已跟踪的文件标记为绿色。
git add + 文件:
添加指定的已修改未暂存的文件到暂存区。
git commit -m " " :
提交代码到本地仓库,-m 中的m是message的意思,就是添加一个标记信息,方便查看提交历史,git log 可以查看代码提交日志。
git log:
如果不带任何参数,它会列出所有历史记录,最近的排在最上方,显示提交对象的哈希值,作者、提交日期、和提交说明。
按q退出历史记录列表。
git log -n:
以选择显示前n条。
git log --stat -n
显示简要的增改行数统计,每次提交文件的变更统计,-n 同上,前n条,可省略。
git log -p -n
此命令同上,不过显示更全了。
git log --pretty=oneline
一行显示,只显示哈希值和提交说明。
gig lot --graph
ASCII 字符串表示的简单图形,形象地展示了每个提交所在的分支及其分化衍合情况
如两天前的提交历史:git log --since=2.days
如指定作者为"BeginMan"的所有提交:$ git log --author=BeginMan
如指定关键字为“init”的所有提交:$ git log --grep=init
如指定提交者为"Jack"的所有提交:$ git log --committer=Jack
注意作者与提交者的关系:作者是程序的修改者,提交者是代码提交人。
如指定2天前,作者为“BeginMan”的提交含有关键字'init'的前2条记录:$ git log --since=2.days --author=BeginMan --grep=init -2
注意:上面选项后面的参数可以带单双引号,如--author="BeginMan"
git checkout :
git checkout +分支名:
切换到指定的分支
git checkout -b + 分支名:
新建一个分支并切换到该分支,-b就是分支的意思,切换分支,没有的话就新建一个分支出来并切换到新分支,删除分支用 git branch -d +分支名。
git checkout + 文件名:
放弃对文件的修改,回到上次提交之后本次修改之前的原始状态。
git commit --amend:
合并提交,提交出错了,不用撤销,重新修改后合并提交。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
git reset :
git reset --soft HEAD^(SHA码):
回到上次提交前的状态,本地的修改和暂存区的跟踪都在。这是最柔软的退回。
git reset HEAD^:
git reset --mixed HEAD^:
上面两个命令是一样的,回到上次暂存时的状态,本地的修改还在,但是暂存区中的跟踪已经不再,提交也不在了。
git reset --hard HEAD^:
直接退回到上次提交的状态,本地修改什么的都不复存在了是最强硬的退回。
git reset:
git reset HEAD +文件名 :
add错了,从暂存区中删除,但保留更改,如果不加参数,代表删除所有暂存。
以上是本地操作
HEAD^代表本次提交的父提交,可以换成任意次提交的sha码
<-----------------第一次提交--------------------> <------------------第二次提交------------------->
已修改为跟踪->已跟踪未提交->已提交未发布—已修改为跟踪->已跟踪未提交->已提交未发布