廖雪峰git笔记
查看本地机子的在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笔记的更多相关文章
- 廖雪峰Git入门教程
廖雪峰Git入门教程 2018-05-24 23:05:11 0 0 0 https://www.liaoxuefeng.com/wiki/00137395163059296 ...
- 廖雪峰 Git 教程 + Git-Cheat-Sheet 学习总结
廖雪峰 Git 教程 + Git-Cheat-Sheet 学习总结 本教程主要是个人的 Git 学习总结. 主要参考博客: 廖雪峰 Git 教程 Git-Cheat-Sheet 文章目录 廖雪峰 Gi ...
- git学习笔记——廖雪峰git教程
OK,先附上教程--廖雪峰的官方网站 友情连接:git官网 简介 这里我只想引用他的原文: Linus可以向BitMover公司道个歉,保证以后严格管教弟兄们,嗯,这是不可能的.实际情况是这样的: L ...
- 《廖雪峰 . Git 教程》学习总结
基本上,Git就是以下面的命令顺序学习的.文中笔记是从廖雪峰老师的 Git教程 中总结出来的,方面查阅命令. 1.基础 git config --global user.name "Your ...
- [廖雪峰] Git 分支管理(3):分支管理策略
通常,合并分支时,如果可能,Git 会用 Fast forward 模式,但这种模式下,删除分支后,会丢掉分支信息. 如果要强制 禁用 Fast forward 模式,Git 就会在 merge 时生 ...
- 廖雪峰 Git教程学习笔记 原文 http://www.liaoxuefeng.com/
一 .集中式与分布式 先说集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推 ...
- 廖雪峰git教程学习笔记3
commit是一串不便记忆的数字,为了方便记忆,引入tag,tag就跟HEAD一样,就像一个指针,指向commit,且指向是不能变得,一个commit就有一个tag 给当前分支下的当前commit打上 ...
- 廖雪峰git教程学习笔记2
本地git仓库和github仓库之间的传输是通过SSH加密的,所以: 注册GitHub账号 创建SSH key.在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id ...
- 廖雪峰git教程学习笔记
对git来说,没有消息就是最好的消息 使用 git init 把当前目录变为git仓库 要在仓库里加入文件,先在仓库目录新建这个文件后,比如新建一个文件xiaobai.txt,内容为: 在命令行里输入 ...
随机推荐
- PAT——1025. 反转链表
给定一个常数K以及一个单链表L,请编写程序将L中每K个结点反转.例如:给定L为1→2→3→4→5→6,K为3,则输出应该为3→2→1→6→5→4:如果K为4,则输出应该为4→3→2→1→5→6,即最后 ...
- [Zedboard Linux系统移植]-从MACHINE_START開始
改动自:http://www.cnblogs.com/lknlfy/archive/2012/05/06/2486479.html 内核的启动过程? 3)内核的启动过程? arch/arm/kerne ...
- mybatis逆向工程处理text类型字段
如果数据库中的字段为text或者blob这种大文本类型,在使用MybatisGenerator工具自动生成代码的时候会将其进行特殊处理(一个新的sql片段),结果会导致无法对该字段的值进行操作. 修改 ...
- 生成二维码的 jQuery 插件:jquery.qrcode.js的中文乱码问题
在使用jquery.qrcode.js这个插件生成二维码的时候发现并不能识别中文. 原因在于:jquery-qrcode是采用charCodeAt()方式进行编码转 换的. 而这个方法默认会获取它的U ...
- 前端基础-CSS是什么?
阅读目录 一. 什么是CSS 二. 为何要用CSS 三. 如何使用CSS 一. 什么是CSS CSS全称Cascading Style Sheet层叠样式表,是专用用来为HTML标签添加样式的. 样式 ...
- javascript 获取排列后的对象建值
function getSortedParameter (parameterObject){ let attributes = []; parameterObject = parameterObjec ...
- from表单提交之前数据判空
在input标签中写onclick事件,不管返回是真是假都会继续提交表单. 使用onsubmit事件 <form action="login.html" method='po ...
- II、Python HelloWorld
大家都不是小孩子了,直接上 IDE 现在有个大问题!!没有解析器啊 这样 解析器地址比他多个 e OJBK
- angular路由传参和获取路由参数的方法
1.首先是需要导入的模块 import { Router } from "@angular/router";//路由传参用到 import{ActivatedRoute,Param ...
- es6 入坑笔记(四)---异步处理
promise 用于js的异步处理 形式: 1.申明一个promise的对象 let p = new Promise(function(成功时的参数,失败时的参数){ if(....){ 成功时的参数 ...