error:src refspec master does not match any  将本地GIT版本库PUSH到一个GITHUB上一个空的版本库时出现错误,本地版本库为空, 空目录不能提交 (只进行了init, 没有add和commit)

git stash 缓存目前的文件    
git push origin master -f  强覆盖,不推荐使用
git push origin 本地分支:远程分支 提交本地分支的名字到远程分支上(如果远程分支的名字没有,那么就创建一个),如果本地分支留空不写,那么则会删除远程分支
git pull origin master 
git log    查看git提交日志,退出可按q命令
pwd   查看当前目录,print work directory
mkdir learngit   产生一个目录文件夹,叫做learngit
cat kmsh.xml 打开某个文件
git init  初始化当前目录
ls -ah      显示该目录所有的内容,包括隐藏的内容
git status   时刻掌握仓库当前状态
git diff     查看两次修改内容                      
git reset --hard HEAD  硬回退到当前版本,HEAD当前版本,上一个版本是HEAD^^,多次回退可以写成HEAD~100 就是100次
git reset --hard 3628164 硬回退到即可HEAD是一个指针,指向某个版本,有soft和mix,soft仅仅回退commit 记录
git reflog 来记录用户的每一次使用命令
git diff HEAD --readme.txt 可以查看工作区和版本库里面最新版本的区别                                   
git checkout -- readme.txt 把readme.txt文件在工作区的修改全部撤销,
       两种情况,一种是readme.txt自修改后还没有被放到暂存区,现在撤销修改就回到和版本库一模一样的状态;                 
               一种是readme.txt已经添加到暂存区,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
                    总之,就是让这个文件回到最近一次 git commit 或者 git add时的状态
git checkout origin/dev -b dev  检出一个新的分支,全新的分支,和远程分支上一样
git reset HEAD file 可以把暂存区的修改撤销掉(unstage),重新放回工作区;
git reset 命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。
 
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
 
rm file 删除一个文件
git rm file 从版本库中删除某文件,需要继续git commit
git checkout -- test.txt  其实就是用版本库里的版本替换工作区的版本,无论工作区还是修改或删除,都可以一键还原。
git remote add origin git@github.com:michaelliao/learngit.git 关联远程库
git push -u origin master  第一次把本地的仓库推送到远程仓库,把本地的master分支和远程的master分支关联起来,以后推送或者拉取时就可以简化命令
 
ssh-keygen -t rsa  generate ssh key  click enter
 
git branch dev 创建分支dev
git checkout dev 切换到分支dev
git checkout -b dev 创建且切换到分支dev
 
git branch 查看目前的分支 
git merge dev 把dev分支上面的内容合并到当前分支上,一般这是默认的fast-forward,直接把master指向dev的当前提交
 当出现冲突,解决了之后,需要再次提交
 
git branch -d dev 在当前分支上面删除dev分支,而且dev分支被当前分支合并过了,如果没有合并那么会出错
git branch -D dev 强制删除dev分支
git show-ref 展示所有本地引用的分支
git branch -r 展示连接的远程分支
git checkout -b my origin/my  基于远程分支my创建并切换到本地分支my  (注意对于分支my,如果再创建分支的话,那么就不能进行pull,除非加上--track参数)
 
git rebase master 合并分支,考虑几种情况。从远程服务器origin 下面拉分支到master,多个人开发,于是就会出现不同的分支增长,这时候另外一个人修改了提交到了远程分支上面,当我也做好了修改后,准备提交,首先pull下来origin分支。然后可以采用merge或者rebase方法。如果采用merge,则会把我的分支历史给覆盖掉,也就是本来两个人一人都有两次提交,然后Merge了,最后也只有2个分支,可能还加上最后合并的这次分支。如果采用rebase,那么假设是在dev开发分支上面rebase master,那么就是把dev分支上面做的修改全部撤销并保存在.git文件里面,然后对master分支逐个提交之前撤销的commit记录,撤销几个就再次提交几个,考虑队列的数据结构,然后在rebase 后面的分支上面就多了4个分支,也就是我和另外一个小伙伴的分支都被记录了,这样显然比较好。图片情况,百度一下,你就知道。
 
git log --graph --pretty=oneline --abbrev-commit 用带参数的git log 也可以看到分支的合并情况,
通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
 
git merge --no-ff -m "merge with no-ff" dev 禁止用fast forward模式提交,所以加上-m 参数提交一个新的commit
合并后,我们用git log看看分支历史:
 
git stash 暂存当前工作目录
git stash list 查看暂存区有哪些工作目录
git stash pop 恢复暂存区内容,并把stash内容也删除  如git stash pop stash@{1}
git stash apply 恢复暂存区内容,但是不删除stash内容
git stash drop stash@{1} 删除stash中序号为1的内容
其中上面两个可以在最后加参数 如 stash@{0}
 
git remote 查看远程库的信息  当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin
git remote -v 显示远程库更详细的信息,这些是有推送权限的
 
git push origin dev 推送dev到远程的dev分支上面
 
git clone git@github.com:like/a.git  克隆仓库(需要提前把SSH key添加到github上面),默认只能看到master分支
 
git checkout -b dev origin/dev 创建远程origin的dev分支到本地
 
git branch --set-upstream dev origin/dev 指定本地dev分支与远程origin/dev分支的链接
git tag v1.0 给当前分支搭上标签1.0,git的标签是版本库的快照,其实是指向某个commit的指针,方便删除和创建,打在最新的commit
git tag 查看所有标签
git tag v0.9 6224937 给对应的commit id 打上了tag标签,标签不是按时间顺序列出,而是按字母排序的
git checkout v1.0 切到v1.0标签上面
git show v0.9 查看标签信息
git tag -a v0.1 -m 创建带有说明的标签,-a指定标签名,-m指定说明文字
git tag -d v0.1 删除分支
git push origin v1.0 推送分支到远程
git push origin --tags 一次性推送全部尚未推送到远程的本地标签
git push origin :refs/tags/v0.9 删除远程一个标签

在git工作区的根目录下创建一个特殊的.gitignore文件,把要忽略的文件名填进去,git就会自动忽略这些文件。可参考https://github.com/github/gitignore

比如操作系统自动生成的文件,缩略图。编译生成的中间文件、可执行文件,.class文件。忽略带有敏感信息的配置文件,比如存放口令的配置文件。

git config --global alias.st status 构造快捷键,将st映射到status,git st 就可以查看当前状态

如果不设置gitignore文件,在开发android的时候会相当蛋疼,因为每次运行bin文件夹里面都会修改,这样会频繁影响.git的变化,所以需要加入忽略文件,忽略文件可在

github上面的开源工程上面看到,本地有一个gitconfig文件,可先在命令行下敲git config --global core.excludesfile ~/.gitignore_global  需要更换为windows下面的视窗。

进去修改如下,excludesfile = c:/Users/你的账户文件夹/.gitignore_global

每个仓库的Git配置文件都放在.git/config文件中:

$ cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = git@github.com:michaelliao/learngit.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[alias]
last = log -

别名就在[alias]后面,要删除别名,直接把对应的行删掉即可。

而当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中:

$ cat .gitconfig
[alias]
co = checkout
ci = commit
br = branch
st = status
[user]
name = Your Name
email = your@email.com

配置别名也可以直接修改这个文件,如果改错了,可以删掉文件重新通过命令配置

apt advance package tool 高级包管理工具

git研究1的更多相关文章

  1. git研究详解(官网文档)及总结

    前言:git作为新一代的版本控制软件,说实话比svn好用多了,个人见解,关于git的详细介绍及研究,我推荐三个地方 1.git官网上的文档(推荐UC浏览器,比火狐多个英文翻译的功能) 地址为:http ...

  2. git研究2

    git也有发布版本时期的tag,不过这个tag,主要是作为一个标记而存在的,或者说在某个commit上面再打一个标记,表明版本是多少.这个和SVN上面的不太一样,SVN感觉有多份保存,似乎没有git方 ...

  3. 配置管理-git研究(版本管理)

    1. 安装git2.7 git2.7具体安装步骤如下: [root@host1 ~]# yum install curl-devel expat-devel gettext-devel openssl ...

  4. 版本控制Git研究二

    经过好几周的工作忙碌,终于可以有时间静下心来学习东西了,做为崇尚技术的人来说,应该是最幸福的时光了,呵呵,当然也是宅神的表现啦,话不多说,继续git的学习,上次已经对git的一些概念进行了说明,具体可 ...

  5. 版本控制Git研究一

    对于Git的使用,早在2010年的时候,就已经开始了,接触它也是由于Android开发的原因,我们知道Android源代码的管理就是用的Git,而至今期间已经呆过几个不同的公司,不同公司对于代码的管理 ...

  6. EFCore Database-first深入研究

    EFCore Database-first深入研究 使用Scaffold-DbContext从数据库生成实体 说明文档: 关于 Scaffold-DbContext 微软有官方说明文档 https:/ ...

  7. 将C语课设传到了Github和Code上 2015-91-18

    一直听说Git好使,以前捣鼓过没弄成,现在考完试了终于可以静下心来研究研究. 哎,我要是当时做课设的时候就用Git,也能省下不少事呢. 使用的Git教程,刚看个开头: 廖雪峰的Git教程 http:/ ...

  8. 深入理解git,从研究git目录开始

    转发学习的啦. 似乎很少有人在读某个git快速教程的时候会说:“这个关于git的快速教程太酷了!读完了用起git来超级舒服,并且我一点也不怕自己会破坏什么东西.” 对git的初学者来说,刚接触git时 ...

  9. 10.10_魔兽账号,OSC代码托管演示,研究SQL别忘记了,git

    (1)juedui8456juedui456chixin0769魔兽世界账号112288 (2)EasyXls.开源中国推出 PaaS@OSC 代码演示和运行平台.git.oschina.coding ...

随机推荐

  1. http://www.cnblogs.com/eye-like/p/4121219.html

    c# 操作Word总结 在医疗管理系统中为保存患者的体检和治疗记录,方便以后的医生或其他人查看.当把数据保存到数据库中,需要新建很多的字段,而且操作很繁琐,于是想到网页的信息创建到一个word文本中, ...

  2. JavaScript下拉框去除重复内容

    下拉框去除重复内容 <script type="text/javascript" src="http://www.joleye.com/libraries/java ...

  3. 关于sharepoint事件接收器中properties.AfterProperties[""].Tostring()取值的问题。

    这个这个属性是不能获取到中文的意思,他是获取AfterProperties的集合的值. string name=properties.AfterProperties["登录人"]. ...

  4. CentOS下恢复Firefox的复制等功能

    在CentOS下使用firefox编辑博客时,我发现无法使用复制粘帖功能,可用如下两种方法恢复(方法一已验证可行): 方法一: 找到user.js所在的目录,Linux下的user.js所在目录为Un ...

  5. Kafka系列(二)特性和常用命令

    Kafka中Replicas复制备份机制 kafka将每个partition数据复制到多个server上,任何一个partition有一个leader和多个follower(可以没有),备份的个数可以 ...

  6. 对css中的定位属性postion刨根解牛

    定位的基本思想很简单: 它允许你定义元素框相对于其正常位置应该出现的位置(relative),或者相对于父元素(absolute).另一个元素甚至浏览器窗口本身的位置(fixed).显然,这个功能非常 ...

  7. MSSQLSERVER数据库- 游标

    游标是属于级行操作,遍历一个表一行一行读,而SQL查询是基于数据集的,在数据量大的时候,使用游标会降低查询速度.这是很明显的.但是有些操作就用游标实现.所以游标又是不或缺少的.我很久都没用游标了,一时 ...

  8. C#- FTP递归下载文件

    c# ftp递归下载文件,找来找去这个最好.(打断点,一小处foreach要改成for) /// <summary> /// ftp文件上传.下载操作类 /// </summary& ...

  9. 【C#】Entity Framework 增删改查和事务操作

    1.增加对象 DbEntity db = new DbEntity(); //创建对象实体,注意,这里需要对所有属性进行赋值(除了自动增长主键外),如果不赋值,则会数据库中会被设置为NULL(注意是否 ...

  10. spring4使用websocket

    看到spring4的介绍上说已经支持websocket了,尝试了一下之后各种坑,不如servlet简单,写篇文章来讲解一下自己遇到的坑. 环境:tomcat8+spring4.1.6+jdk8+ngi ...