您的位置:首页 > 运维架构 > Shell

git bash 命令行

2016-02-24 00:00 656 查看
检查已有的配置信息:git config --list

检查当前文件状态:git status

跟踪新文件

git add file 只要在 “Changes to be committed” 这行下面的,就说明是已暂存状态。
git add 命令(这是个多功能命令,根据目标文件的状态不同,此命令的效果也不同:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等)

忽略某些文件

一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式。来看一个实际的例子:
$ cat .gitignore
*.[oa]
*~
第一行告诉 Git 忽略所有以 .o 或 .a 结尾的文件。一般这类对象文件和存档文件都是编译过程中出现的,我们用不着跟踪它们的版本。第二行告诉 Git 忽略所有以波浪符(~)结尾的文件,许多文本编辑软件(比如 Emacs)都用这样的文件名保存副本。此外,你可能还需要忽略 log,tmp 或者 pid 目录,以及自动生成的文档等等。要养成一开始就设置好 .gitignore 文件的习惯,以免将来误提交这类无用的文件。

提交更新

git commit
另外也可以用 -m 参数后跟提交说明的方式,在一行命令中提交更新:
$ git commit -m "case...."
git commit只负责把暂存区的修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交。

跳过使用暂存区域

$ git commit -a -m 'case....'

移除文件

要在 Git 中对文件改名,可以这么做:$ git mv file_from file_to
其实,运行 git mv 就相当于运行了下面三条命令:
$ mv README.txt README
$ git rm README.txt
$ git add README

查看提交历史

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

查看当前的远程库

$ git remote -v

查看文件

cat file

撤销工作区修改

命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
//git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令。

撤销暂存区修改

Git同样告诉我们,用命令git
3ff0
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>可以删除一个远程标签。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: