检查已有的配置信息:git config --listgit
检查当前文件状态:git statusgithub
跟踪新文件bash
git add file 只要在 “Changes to be committed” 这行下面的,就说明是已暂存状态。 git add 命令(这是个多功能命令,根据目标文件的状态不一样,此命令的效果也不一样:能够用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等)
忽略某些文件app
通常咱们总会有些文件无需归入 Git 的管理,也不但愿它们总出如今未跟踪文件列表。一般都是些自动生成的文件,好比日志文件,或者编译过程当中建立的临时文件等。咱们能够建立一个名为 .gitignore 的文件,列出要忽略的文件模式。来看一个实际的例子: $ cat .gitignore *.[oa] *~ 第一行告诉 Git 忽略全部以 .o 或 .a 结尾的文件。通常这类对象文件和存档文件都是编译过程当中出现的,咱们用不着跟踪它们的版本。第二行告诉 Git 忽略全部以波浪符(~)结尾的文件,许多文本编辑软件(好比 Emacs)都用这样的文件名保存副本。此外,你可能还须要忽略 log,tmp 或者 pid 目录,以及自动生成的文档等等。要养成一开始就设置好 .gitignore 文件的习惯,以避免未来误提交这类无用的文件。
提交更新ssh
git commit 另外也能够用 -m 参数后跟提交说明的方式,在一行命令中提交更新: $ git commit -m "case...." git commit只负责把暂存区的修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交。
跳过使用暂存区域日志
$ git commit -a -m 'case....'
移除文件code
要在 Git 中对文件更名,能够这么作:$ git mv file_from file_to 其实,运行 git mv 就至关于运行了下面三条命令: $ mv README.txt README $ git rm README.txt $ git add README
查看提交历史orm
git log 咱们经常使用 -p 选项展开显示每次提交的内容差别,用 -2 则仅显示最近的两次更新: $ git log -p -2 还有许多摘要选项能够用,好比 --stat,仅显示简要的增改行数统计: $ git log --stat
表 2-1 列出了经常使用的格式占位符写法及其表明的意义。对象
选项 说明 %H 提交对象(commit)的完整哈希字串 %h 提交对象的简短哈希字串 %T 树对象(tree)的完整哈希字串 %t 树对象的简短哈希字串 %P 父对象(parent)的完整哈希字串 %p 父对象的简短哈希字串 %an 做者(author)的名字 %ae 做者的电子邮件地址 %ad 做者修订日期(能够用 -date= 选项定制格式) %ar 做者修订日期,按多久之前的方式显示 %cn 提交者(committer)的名字 %ce 提交者的电子邮件地址 %cd 提交日期 %cr 提交日期,按多久之前的方式显示 %s 提交说明 用 oneline 或 format 时结合 --graph 选项,能够看到开头多出一些 ASCII 字符串表示的简单图形,形象地展现了每一个提交所在的分支及其分化衍合状况。在咱们以前提到的 Grit 项目仓库中能够看到: $ git log --pretty=format:"%h %s" --graph
查看当前的远程库ci
$ git remote -v
查看文件
cat file
撤销工做区修改
命令git checkout -- readme.txt意思就是,把readme.txt文件在工做区的修改所有撤销,这里有两种状况: 一种是readme.txt自修改后尚未被放到暂存区,如今,撤销修改就回到和版本库如出一辙的状态; 一种是readme.txt已经添加到暂存区后,又做了修改,如今,撤销修改就回到添加到暂存区后的状态。 总之,就是让这个文件回到最近一次git commit或git add时的状态。 //git checkout -- file命令中的--很重要,没有--,就变成了“切换到另外一个分支”的命令。
撤销暂存区修改
Git一样告诉咱们,用命令git reset HEAD file能够把暂存区的修改撤销掉(unstage),从新放回工做区: $ git reset HEAD readme.txt
删除:
$ rm file//删除工做区的文件 1.$ git commit -m "remove file"//从版本库中删除该文件 2.$ git checkout -- file //若是工做区删除错了只须要从版本库中还原
建立SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"
在github中添加sshkey:
setting中选择SSH keys ,而后New SSH key,title随便取,key里面粘贴id_rsa.pub中的内容.
关联远程仓库:
$ git remote add origin git@github.com:karlwangshengyi/wsy.git
错误提示:
git init 产生的目录解释 error: src refspec master does not match any. 引发该错误的缘由是,目录中没有文件,空目录是不能提交上去的 error: insufficient permission for adding an object to repository database ./objects 服务端没有可写目录的权限 错误提示:fatal: remote origin already exists. 解决办法:$ git remote rm origin 错误提示:error: failed to push som refs to ........ 解决办法:$ git pull origin master //先pull 下来 再push 上去
推送代码:
$ git push origin master
克隆代码:
$ git clone git@github.com:karlwangshengyi/wsy.git //你也许还注意到,GitHub给出的地址不止一个,还能够用https://github.com/michaelliao/gitskills.git这样的地址。 //实际上,Git支持多种协议,默认的git://使用ssh,但也可使用https等其余协议。 //使用https除了速度慢之外,还有个最大的麻烦是每次推送都必须输入口令, //可是在某些只开放http端口的公司内部就没法使用ssh协议而只能用https。
git bash复制粘贴:
右键,属性,设置快速编辑模式。cd ..返回上一级。
建立分支dev:
git checkout命令加上-b参数表示建立并切换,至关于如下两条命令: $ git branch dev $ git checkout dev //切换分支 Switched to branch 'dev'
查看分支:
git branch //git branch命令会列出全部分支,当前分支前面会标一个*号。
合并分支,咱们把dev分支的工做成果合并到master分支上:
$ git merge dev
删除分支:
$ git branch -d dev
保存贮藏:
$ git stash //保存当前的工做环境,临时修改bug时可能保存当前环境而后新建临时分支解决问题,提交后删除bug分支,再继续修复当前问题 $ git stash list //查看工做现场 工做现场还在,Git把stash内容存在某个地方了,可是须要恢复一下,有两个办法: 一是用git stash apply恢复,可是恢复后,stash内容并不删除,你须要用git stash drop来删除; 另外一种方式是用git stash pop,恢复的同时把stash内容也删了:
销毁分支:
若是要丢弃一个没有被合并过的分支,能够经过git branch -D <name>强行删除。
不必定要把本地分支往远程推送,那么,哪些分支须要推送,哪些不须要呢?
master分支是主分支,所以要时刻与远程同步; dev分支是开发分支,团队全部成员都须要在上面工做,因此也须要与远程同步; bug分支只用于在本地修复bug,就不必推到远程了,除非老板要看看你每周到底修复了几个bug; feature分支是否推到远程,取决于你是否和你的小伙伴合做在上面开发。
在本地建立和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致; 创建本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;
打标签:
命令git tag <name>用于新建一个标签,默认为HEAD,也能够指定一个commit id; git tag -a <tagname> -m "blablabla..."能够指定标签信息; git tag -s <tagname> -m "blablabla..."能够用PGP签名标签; 命令git tag能够查看全部标签。 git show <tagname>查看标签信息。 命令git push origin <tagname>能够推送一个本地标签; 命令git push origin --tags能够推送所有未推送过的本地标签; 命令git tag -d <tagname>能够删除一个本地标签; 命令git push origin :refs/tags/<tagname>能够删除一个远程标签。