查看本地机子的在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. PAT——1072. 开学寄语(20)

    下图是上海某校的新学期开学寄语:天将降大任于斯人也,必先删其微博,卸其QQ,封其电脑,夺其手机,收其ipad,断其wifi,使其百无聊赖,然后,净面.理发.整衣,然后思过.读书.锻炼.明智.开悟.精进 ...

  2. 【Step By Step】将Dotnet Core部署到Docker(中)

    在Docker中运行MySql MySQL 官方也提供了各种版本的MySQL Image来供用户使用,我们可以使用如下命令来创建并运行一个MySQL Image: docker run -it -p ...

  3. #ifdef 和 #if defined的区别

    #ifdef 和 #if defined的区别在于,后者可以组成复杂的预编译条件,比如 #if defined (AAA) && defined (BBB)xxxxxxxxx#endi ...

  4. TestNG+Maven+IDEA 自动化测试(一) 环境搭建

    示例代码: https://github.com/ryan255/TestNG-Demo 所需环境: 1. IDEA UItimate 2. JDK 3. Maven 创建工程 一开始创建一个普通的m ...

  5. 转:Sql Server中清空所有数据表中的记录

    如果要删除数据表中所有数据只要遍历一下数据库再删除就可以了,清除所有数据我们可以使用搜索出所有表名,构造为一条SQL语句进行清除了,这里我一一给各位同学介绍.   使用sql删除数据库中所有表是不难的 ...

  6. 留言板(初学者使用js实现)

    代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  7. 误卸载glibc类库导致系统崩溃解决方案

    由于系统中没有yum环境需要编译安装redis,但系统中却没有安装gcc和gcc-c++,挂载本地镜像安装gcc和gcc-c++由于版本太高,由于一时疏忽误将系统的依赖库glibc使用rpm -e 命 ...

  8. linux学习笔记一:远程连接linux服务器

    环境介绍:win7电脑,通过VM虚拟出linux系统,安装centOS7 通过Xshell连接linux,ftp访问服务器资源. 遇到的问题,ftp连不上linux 解决:linux上安装ftp服务 ...

  9. Ionic3环境搭建及创建

    初次尝试Ionic,边学习边记录下来,以免以后忘记了,入坑向( ̄ω ̄;) 1.Ionic环境安装 Ionic开发是依赖于Nodejs环境的,所以在开发之前我们需要安装好Nodejs.下载安装:http ...

  10. 【python 虚拟环境 virtualenv的配置】

    该目录内生成一个虚目录: #运行activcate下的shell脚本,激活虚拟环境 #pip  python包管理器