GIt 常用操作指令
2016-12-09 本文已影响51人
子丿龙
开发过程中,用到的一些指令,都是自己用到过的
-p
按补丁格式显示每个更新之间的差异。
--stat
显示每次更新的文件修改统计信息。
//********git show 命令 后边跟的参数不同而已************//
//查看某个commit的改变(--stat不显示详情,可以不要)
git show 历史版本号 --stat
//查看当前状态下(或者说当前的分支下),某个文件的当前改变
//也就是说,当你pull更新了代码,发现代码有问题,或者你对代码有疑惑了,想看一下这个文件到底改变了什么
//或者说,想看看更新下来什么,就可以用这个命令
git show 文件名
//********* git log 命令 后边跟参数不同而已***********//
//查看某个文件的前n条修改历史(n为具体的数字可以不要, -p 为查看详细内容可以不要;文件名从app/src根目录开始)
git log -p -n 文件名
//查看每次提交历史都修改了哪些文件(只显示每次提交修改的文件)
git log --stat
//查看ADCII图形,显示分支合并历史
git log --graph
//************git diff 命令 跟的参数不同而已**********//
//查看两次提交历史不同的地方(--stat不显示详情,可以不要)
git diff 第一个提交历史 第二个提交历史 --stat
//远程有一个分支,本地没有,想把远程的分支拉下来(名字尽量起一样的,这样也方便自己操作,免得搞错)
git checkout -b 本地分支名称 origin/远程分支名称
//本地有一个分支,远程没有该分支,想把本地分支推送到远程
git push origin 本地分支:远程分支 (这个格式,冒号 : 前后都不许有空格,必须挨着)
//和上边一样,这个简单 想在本地建个分支,然后推到远程上去(名称尽量一样,方便自己操作,免得搞错)
git checkout -b 本地分支名称
git push origin 远程分支名称 (这里没有冒号:,跟下边的有区别的)
//远程有个分支,本地也有,并且关联着,想都删掉
先切换到别的分支,不然没法操作
git branch -d 要删除的本地分支
git push origin :远程分支名称 (这个格式要对,origin后边有空格, 冒号:后边没有空格)
//本地有一个tag标签,,想新建一个分支 复制 该标签
git checkout -b 新建分支名称 tag标签名称
//想新建一个分支 复制一个commit提交
git checkout -b 新建分支名称 commit编号
//查看本地分支和远程分支的关联关系
git branch -vv
//将暂存区的文件 还原到 工作区
git rm --cached 文件全路径名
//查看remote地址,远程分支,还有本地分支与之相对应关系等信息。
git remote show origin
//远程分支已经删除,但是本地查看 git branch -r 依旧能看到解决方法
git remote prune origin
查看目前工作区的改动
git diff
//如果修改了代码并且 add commit 了 ,然后再push完以后发现,push错分支了,解决办法
git reset HEAD~1 回退最近一次提交,修改的代码会重新放到工作区
git reset --hard 慎用这个命令,它和上一个命令的不同在于,它会彻底回退到上个版本,本地的源码也会变为上一个版本的内容
1. 创建SSH key
ssh-keygen -t rsa -C "youremail@example.com"
2. 更新代码
git pull
git fetch 没有merge的pull 没用过这个,不知道好用不
3. 添加文件
git add . 暂存新增的和修改的文件,不包括已删除的文件
git add -u 暂存修改的和删除的文件,不包括新增的文件
git add -A 暂存所有文件,包括新增的,修改的,已删除的文件
git add -p 暂存一部份,会一直提示(y/n)选择是否暂存,很麻烦
4. 提交文件
git commit -m “本次提交说明” (这里如果不加-m 会强制跳转到编辑器,在里边第一行填写,然后保存即可)
git commit -am “本次提交说明” (add 和commit的结合体,,省略了add步骤)
***下面这个命令尽量不要使用或者只有自己开发的时候,否则会给队友带来灾难(卧槽明明更新了的,怎么没了??????)
git commit --amend -m“本次提交说明” (重新提交,最终只会有一次提交,第二次的提交会覆盖第一次的提交结果,适用于提交完了才发现有几个文件没有添加或者提交信息填写错误的情况)
git commit -p (提交一部分代码,需要手动确认是否提交 y/n)
5.推送到远程分支
git push origin 分支 推送本地当前分支到远程对应分支(通常是master)
git push origin 本地分支:远程分支(指定提交的本地分支和远程分支)
6.本地分支与远程分支建立关联
git branch --set-upstream 分支 origin/分支
这个命令,可以建立本地分支与远程分支的联系,以后在push的时候不用每次都指定分支到了,即直接输入 git push,省略了origin 分支
7.git忽略某些文件
忽略规则
以斜杠“/”开头表示目录;
以星号“*”通配多个字符;
以问号“?”通配单个字符
以方括号“[]”包含单个字符的匹配列表;
以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;
一般情况下,我们应该在创建项目之前,建好忽略文件,忽略掉应该忽略的文件;
但是,有时候我们需要临时添加一些忽略文件,这个时候就需要修改 .gitignore文件,以为该文件已经被git追踪,所以我们还要从git版本控制器中将其移除,用下面的命令:
git rm --cached 文件名 或者 git rm --cached -r 文件夹 (-r 表示递归)
注意:这样会将该文件从git仓库移除,所以开发人员都做好备份
使用完此命令后,我们需要将修改后的.gitignore和删除的这个文件,一并push到git远程仓库,然后所有开发人员做好自己的备份,然后pull更新,
这样更新下来会将该文件删除掉,,然后我们需要自己将备份的文件拷贝进项目,以后该文件就不会再被git追踪了.以后修改该文件,需要复制粘贴给大家了.
可能有点麻烦,但是我理解的就是这样的了.
8.其他一般用得着的指令
*设置一些快捷指令
git config --global alias.st status 使用git st 代替 git status 命令
git config --global alias.co checkout 使用git co 代替git checkout命令
git config --global alias.ci commit 使用git ci 代替 git commit命令
以此类推
*其他的一些设置
git config -l 或 git config --list 列举所有git的配置
git config --global color.ui true 让git显示颜色,
设置commit中的姓名和email,去掉 --global参数则为针对每个repo单独设定姓名和邮箱
git config --global user.name "your name"
git config --global user.email "your email"
git log -n 仅显示最近n条提交
git log -p filename 查看文件的每一个详细的历史修改,如果没有-p选项,只显示提交记录,不显示文件内容修改,git log -p -3 filename 显示最近的3次提交。
以下内容,为日志显示的常用参数
-p
按补丁格式显示每个更新之间的差异。
--stat
显示每次更新的文件修改统计信息。
--shortstat
只显示 --stat 中最后的行数修改添加移除统计。
--name-only
仅在提交信息后显示已修改的文件清单。
--name-status
显示新增、修改、删除的文件清单。
--abbrev-commit
仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。
--relative-date
使用较短的相对时间显示(比如,“2 weeks ago”)。
--graph
显示 ASCII 图形表示的分支合并历史。
--pretty
使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式)。
9.对于android项目,git需要忽略的文件
- .idea 文件夹
- .gradle 文件夹
- 所有的 build 文件夹
- 所有的 .iml 文件
- local.properties 文件