查看本地机子的在Git上的名字和邮箱:
git config user.name
git config user.email

对所有仓库指定相同的用户名和Email地址:
git config --global user.name "Your Name"
git config --global user.email "email@example.com"

创建版本库:
git init

添加文件到git仓库:
1.git add <file>
2.git commit -m <message>

时刻掌握仓库当前的状态,看看有没有准备提交的修改:
git status

上次怎么修改了文件:
git diff

很详细的历史记录:
git log
退出:":q"
git log --pretty=online 简化信息:版本号+当初提交的信息

HEAD表示当前版本,也就是最新的提交,上一个版本就是HEAD^,
上上一个版本就是HEAD^^,往上100个版本就是HEAD~100。

回退到上一个版本:
git reset --hard HEAD^

变成指定版本(回退或进化):
git reset --hard <指定的任一commit id>
(版本号没必要写全,前几位就可以了,Git会自动去找。
当然也不能只写前一两位,因为Git可能会找到多个版本号,
就无法确定是哪一个了。)

记录每一次命令:
git reflog
(要重返未来,用git reflog查看命令历史,
以便确定要回到未来的哪个版本)

查看工作区和版本库里面最新版本的区别:
git diff HEAD -- <file>

丢弃工作区的修改(误删工作区文件可以用此命令恢复):
git checkout -- <file>
(命令git checkout -- readme.txt意思就是,
把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,
现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,
现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit
或git add时的状态。)

把暂存区的修改撤销掉(unstage),重新放回工作区:
git reset HEAD <file>

切换到另一分支:
git checkout <another>

从版本库删掉文件:
git rm

查看git版本:
Git --version

创建github仓库和本地同步:
git remote add origin git@github.com:yourname/yourrepository.git
git push -u origin master
(由于远程库是空的,我们第一次推送master分支时,加上了-u参数,
Git不但会把本地的master分支内容推送的远程新的master分支,
还会把本地的master分支和远程的master分支关联起来,
在以后的推送或者拉取时就可以简化命令: git push origin master)

把本地库的内容推送到远程(实际上是把当前分支master推送到远程):
git push origin master

克隆远程库到本地:
git clone git@github.com:yourname/yourrepository.git

创建分支并切换到该分支(-b):
git checkout -b <branch>

创建并切换分支:
git branch <branch>
git checkout <branch>

查看当前分支:
git branch

合并分支:
git merge <branch>

删除分支:
git branch -d <branch>

查看该文件在不同分支的情况:
cat <file>

合并分支产生冲突:
1.查看是哪些文件有冲突:git status
2.查看冲突文件并修改:cat <file>
3.在master分支上做提交

查看分支合并提交历史:
git log --graph --pretty=oneline --abbrev-commit
(用git log --graph命令可以看到分支合并图)

禁用fast forward模式:
git merge --no-ff -m <message> <branch>
(合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。)

把当前工作现场“储藏”起来,等以后恢复现场后继续工作:
(适用于突然临时要改bug,就把手头上的工作先储存起来)
git stash

恢复stash内容:
1)git stash apply (stash并不删除,需要用git stash drop 删除)
2)git stash pop (恢复的同时将stash内容删除了)
3)git stash list
git stash apply stash@{<num>} (恢复指定的stash)

要丢弃一个没有被合并过的分支(强制):
git branch -D <branch>

查看远程库信息:
git remote [-v]

推送分支:
git push <remote library name, default 'origin'> <branch>
(如果推送失败,则远程分支比你的本地更新,需要先用git pull试图合并)

在本地创建和远程分支对应的分支:
(git clone 只能克隆master分支,如需远程库别的分支下来,则用该指令)
git checkout -b <local branch name> origin/<remote branch name>
eg: git checkout -b dev origin/dev

抓取远程库最新提交:
git pull
(如失败,则是没有指定本地分支与远程库分支的链接,则:
git branch --set-upstream-to=origin/dev dev
建立本地分支和远程分支的关联,然后在pull,
还有冲突那就手动解决)

将提交历史整理成一条直线:
git rebase
(rebase的目的是使得我们在查看历史提交的变化时更容易,
因为分叉的提交需要三方对比)

(tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起,
是版本库的快照,但分支能移动,tag不能移动)

创建标签:
(切换到需要打标签的分支上)
git tag <tag name, eg: v1.0>

查看所有标签:
(标签不是按时间顺序列出,而是按字母排序的)
git tag

直接在commit id 打标签:
git tag <tag name> <commit id>
eg: git tag v0.9 f52c633

创建带有说明的标签,用-a指定标签名,-m指定说明文字:
git tag -a <tag name> -m <message> <commit id>
eg: git tag -a v0.1 -m "version 0.1 released" 1094adb

查看标签信息:
git show <tag name>
(标签总是和某个commit挂钩。如果这个commit既出现在master分支,
又出现在dev分支,那么在这两个分支上都可以看到这个标签。)

删除标签:
git tag -d <tag name>

推送某个标签到远程:
(创建的标签都只存储在本地,不会自动推送到远程)
git push origin <tagname>

一次性推送全部尚未推送到远程的本地标签:
git push origin --tags

删除远程标签:
git push origin :refs/tags/<tag name>

(在Git工作区的根目录下创建一个特殊的.gitignore文件,
然后把要忽略的文件名填进去,然后提交给git,
Git就会自动忽略这些文件的提交,.gitignore文件本身要放到版本库里,
并且可以对.gitignore做版本管理。)
强制添加文件到Git(忽略.gitignore):
git add -f <file>

检查.gitignore的哪个规则错了:
git check-ignore -v <file>
(检查是.gitignore的哪个规则让该文件提交不上去,即Git
忽视了该文件)

配置别名:
eg: git config --global alias.st status (用git st 代替git status)
(--global参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有用)

显示最后一次提交信息:
git log -1 (这是数字1)

删除别名:
1)找到这个仓库.git里面的config,删除对应的行:
cd .git
vi config
2)找到用户主目录下的一个隐藏文件.gitconfig,删除
对应的行
cd <HOME>
vi .gitconfig

廖雪峰git笔记的更多相关文章

  1. 廖雪峰Git入门教程

    廖雪峰Git入门教程  2018-05-24 23:05:11     0     0     0 https://www.liaoxuefeng.com/wiki/00137395163059296 ...

  2. 廖雪峰 Git 教程 + Git-Cheat-Sheet 学习总结

    廖雪峰 Git 教程 + Git-Cheat-Sheet 学习总结 本教程主要是个人的 Git 学习总结. 主要参考博客: 廖雪峰 Git 教程 Git-Cheat-Sheet 文章目录 廖雪峰 Gi ...

  3. git学习笔记——廖雪峰git教程

    OK,先附上教程--廖雪峰的官方网站 友情连接:git官网 简介 这里我只想引用他的原文: Linus可以向BitMover公司道个歉,保证以后严格管教弟兄们,嗯,这是不可能的.实际情况是这样的: L ...

  4. 《廖雪峰 . Git 教程》学习总结

    基本上,Git就是以下面的命令顺序学习的.文中笔记是从廖雪峰老师的 Git教程 中总结出来的,方面查阅命令. 1.基础 git config --global user.name "Your ...

  5. [廖雪峰] Git 分支管理(3):分支管理策略

    通常,合并分支时,如果可能,Git 会用 Fast forward 模式,但这种模式下,删除分支后,会丢掉分支信息. 如果要强制 禁用 Fast forward 模式,Git 就会在 merge 时生 ...

  6. 廖雪峰 Git教程学习笔记 原文 http://www.liaoxuefeng.com/

    一 .集中式与分布式        先说集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推 ...

  7. 廖雪峰git教程学习笔记3

    commit是一串不便记忆的数字,为了方便记忆,引入tag,tag就跟HEAD一样,就像一个指针,指向commit,且指向是不能变得,一个commit就有一个tag 给当前分支下的当前commit打上 ...

  8. 廖雪峰git教程学习笔记2

    本地git仓库和github仓库之间的传输是通过SSH加密的,所以: 注册GitHub账号 创建SSH key.在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id ...

  9. 廖雪峰git教程学习笔记

    对git来说,没有消息就是最好的消息 使用 git init 把当前目录变为git仓库 要在仓库里加入文件,先在仓库目录新建这个文件后,比如新建一个文件xiaobai.txt,内容为: 在命令行里输入 ...

随机推荐

  1. statsvn,代码统计

    #! /bin/bash # 计算有效变更代码量的脚本 #./svnCount -thttps://192.168.1.1/xxx -s1000 -e2000 -uxxx -pxxx version( ...

  2. OO第二次单元总结——电梯多线程调度问题

    OO第二次单元总结--电梯多线程调度问题 在这个单元OO学习中,我们终于迎来了期待已久(不是)的电梯多线程调度作业,开启了OO打怪之路的新关卡.虽然说经过了这三次作业,我对于多线程的理解还不能算是熟练 ...

  3. C++笔记013:C++对C的扩展——C++中所有变量和函数都必须有类型

    原创笔记,转载请注明出处! 点击[关注],关注也是一种美德~ C++中所有的变量和函数都必须有类型: C语言中的默认类型在C++中是不合法的! 在C语言里面可以写一些很奇怪的函数!并且可以运行成功! ...

  4. 什么是cookie,作用是什么? 以及session的理解

    cookie: 1.定义:什么是cookie?  cookie就是存储在客户端的一小段文本 2.cookie是一门客户端的技术,因为cookie是存储在客户端浏览器中的 3.cookie的作用:是为了 ...

  5. 笔记:HTML5中input元素新增的type值

    在HTML5中,input元素的type值增加了不少,使input的功能强大了很多. 但在各大浏览器中并不是所有的type值都支持. 以下是比较有用.并且浏览器支持的稍好一些的值: type=colo ...

  6. PHP 好用第三方库

    PHP 好用第三方库 whoops 更好的php错误报告库 [github]:https://github.com/filp/whoops Whoops是一个易于处理和调试错误的PHP库 .它提供基于 ...

  7. Java实例 Part5:面向对象入门

    目录 Part5:面向对象入门 Example01:成员变量的初始化值 Example02:单例模式的应用 -----懒汉式 -----饿汉式 Example03:汉诺塔问题的求解 Example04 ...

  8. 嵌入式C语言自我修养 08:变参函数的格式检查

    8.1 属性声明:format GNU 通过 __atttribute__ 扩展的 format 属性,用来指定变参函数的参数格式检查. 它的使用方法如下: __attribute__(( forma ...

  9. 利用wireshark抓取TCP的整个过程分析。

    原文地址:https://www.cnblogs.com/NickQ/p/9226579.html 最近,已经很久都没有更新博客了.看看时间,想想自己做了哪些事情,突然发现自己真的是太贪心,到头来却一 ...

  10. python 时间time模块介绍和应用

    1.其中format_string 类型的时间和struct_time之间可以转换,timestamp时间戳可以和struct_time之间进行转化,但是时间戳和格式化时间是不能直接转换的. time ...