Git学习笔记01--常用Git命令、cmd命令及Git总结性知识
资源:外国网友制作的 Git Cheat Sheet
第二次学习廖雪峰老师的Git教程,学习过程中把教程中涉及到的Git命令及总结性知识记录下来方便二次复习。
知识点
所有的版本控制系统,其实只能跟踪文本文件的改动,比如TXT文本文件、网页、程序代码等等,版本控制系统可以告诉你每次的改动,比如在第5行加了一个单词“hello”,在第8行删了一个单词‘’‘world’。而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但是没办法跟踪文件的变化,只能把二进制文件每次的改变串起来,也就是只知道图片从100KB变成了120KB,但是到底改变了什么,版本控制系统无法知道。
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交,合并完成
通常,合并分支时,如果可能,Git会用
Fast forward模式,但这种模式下,删除分支后会丢掉分支信息。如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息多人协作的模式
首先,可以试图用
git push origin <branch-name>推送自己的修改如果推送失败,则因为远程分支比本地更新,需要先用
git pull试图合并如果合并有冲突,则解决冲突,并在本地提交
没有冲突或者解决冲突之后,再用
git push origin <branch-name>推送就能成功如果
git pull提示no tracking information,则说明本地分支和远程分支的链接没创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>
在Git工作区的根目录下创建一个特殊的
.gitignore文件,然后把要忽略的文件名填写进去,Git就会自动忽略这些文件
Git命令
git init把当前目录变成Git可以管理的仓库注意:Git在当前目录下自动创建
.git目录,用来跟踪管理版本库,随意更改会破坏Git仓库。
git add 文件名把文件添加到暂存区如
git add hello.txt
git commit -m 本次提交的说明把暂存区的所有内容提交到当前分支-m暂存区本次提交的说明理论上可以是任何内容,但最好是有意义的内容,方便从历史记录中找到改动记录如
git commit -m "add new words"
git status查看仓库当前的状态git diff查看文件修改前后的不同显示的格式为Unix通用的diff格式
git log显示从最近到最远的提交日志显示结果中出现的类似
db376e1...的是经SHA1计算,用十六进制表示的commit-id(版本号)git log --pretty=oneline添加参数简化输出信息git log --graph显示分支合并图输入
q退出
git reset版本回退git reset --hard commit-id版本号可以不写全,写到具有区分度的前几位就可以,如一共有两个版本号
a1253f...和a135ed...,则写到前3位就可以
git reset --hard HEAD^HEAD表示当前版本HEAD后面加几个^就表示往上几个版本,如HEAD^表示往上一个版本HEAD后面加~数字n表示往上n个版本,如HEAD~100表示往上100个版本
注意:因为在
cmd中^是转义符号,相当于Linux中的\,当出现在行尾的时候含义是这行还没写完,无视行尾的换行符,下行的内容实际执行的时候理解为直接接在上一行尾,所以^结尾的时候提示More?,就是提示输入下一行的内容,不输入则会报错。解决方法有两个,一是用双引号包裹,强行指定为字符串内容"^",二是输入双倍的^,如^^,前一个转义后一个,代表一个没有特殊含义的字符^本身。
git reflog记录操作过的每一次命令git checkout -- 文件名把该文件在工作区的修改全部撤销如果文件自修改后还没有被放到暂存区,那么撤销后就回到和版本库一模一样的状态
如果文件添加到暂存区后,又作了修改,那么撤销后就回到添加到暂存区后的状态
总之,就是让这个文件回到最近一次
git commit或git add时的状态命令中的
--很重要,没有--,就变成了“切换到另一个分支”的命令
git rm删除文件如果一个文件已经被提交到版本库,那么永远不用担心误删,但是要小心,只能恢复文件到最新版本,会丢失最近一次提交后修改的内容
注意:从来没有被添加到版本库就被删除的文件,是无法恢复的
git remote add origin git@server-name:path/repo-name.git关联远程仓库如使用GitHub,
server-name就是github.com,path就是账户名,repo-name就是仓库名
git remote查看远程仓库信息git remote -v显示更详细的信息
git push把本地仓库的内容推送到远程仓库,实际上是把当前分支master推送到远程仓库由于新建的远程仓库是空的,第一次推送
master分支时,加上-u参数,Git不但会把本地的master分支内容推送到远程仓库新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令
git pull把远程仓库内容拉取到本地仓库git clone克隆远程仓库到本地Git支持多种协议,默认的
git://使用ssh协议,也可以使用https等其它协议使用
ssh,完整命令为git clone git@github.com:user-name/repo-name.git使用
https,完整命令为git clone https://github.com/user-name/repo-name.git使用
https速度慢,且每次推送都必须输入口令,但在只开放http端口的公司内部就只能使用https
git branch xxx创建xxx分支git branch列出所有分支,在当前分支前标注*号git branch -d xxx删除xxx分支git branch -D xxx强行删除还未被合并的xxx分支git checkout xxx切换到xxx分支git checkout -b xxx创建并切换到xxx分支git switch xxx切换到xxx分支git switch -c xxx创建并切换到xxx分支
git merge xxx合并xxx分支到当前分支git merge --no-ff表示禁用Fast forword模式git stash封存当前工作现场git stash list查看所有保存的工作现场git stash apply恢复封存的工作现场git stash drop恢复工作现场后,删除对应stash内容git stash pop恢复工作现场的同时,删除对应stash内容git stash apply stash@{数字n}恢复数字n对应的工作现场git cherry-pick commit-id复制一个特定的提交到当前分支Git自动给当前分支做了一次提交,注意这次提交的commit不同于复制的提交,只是两者改动相同
git tag查看所有标签标签不是按时间顺序列出,而是按字母顺序列出
标签总是和某个
commit挂钩,如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都能看到这个标签
git tag xxx给当前所在分支打上xxx标签标签默认打在最新提交的
commit上,可以用git tag xxx commit-id给指定提交打标签可以创建带有说明的标签,用
-a指定标签名,用-m指定说明文字,如git tag -a v1.0 -m "version 0.1 released" commit-id创建的标签都存储在本地,不会自动推送到远程,所以,打错的标签可以在本地安全删除
git tag -d xxx删除本地xxx标签如果标签已经推送到远程,要删除远程标签需要先本地删除,然后从远程删除,命令格式为
git push origin :refs/tags/v0.9,可以登录GitHub查看是否成功删除远程标签
git show xxx查看xxx标签的信息git push origin xxx将xxx标签推送到远程git push origin --tags一次性推送全部尚未推送到远程的本地标签git config --global alias.x xxx将x设置为xxx的别名
cmd命令
cd切换目录md新建文件夹mkdir新建文件夹dir查看文件夹rd删除文件夹type nul>新建文件type查看文件内容del删除文件
Git学习笔记01--常用Git命令、cmd命令及Git总结性知识的更多相关文章
- git学习笔记:常用命令总结
本文根据廖雪峰的博客,记录下自己的学习笔记.主要记录常用的命令,包括仓库初始化.添加文件.提交修改.新建分支.内容暂存.分支管理.标签管理等内容. git是分布式版本控制系统. 首先是安装,从官网下载 ...
- Socket 学习笔记 01 常用函数
常用方法 创建套接字: socket() 绑定本机端口: bind() 建立连接: connect(),accept() 侦听端口: listen() 数据传输: send() ...
- Git学习笔记(四)
一.忽略特殊文件 在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件. 不需要从头写.gitignore文件,GitHub已经为我们 ...
- git 学习笔记6--remote & log
git 学习笔记6--remote & log 创建SSH Keys ssh-keygen -t rsa -C "1050244110@qq.com" 本地关联远程 git ...
- 【转帖】Git学习笔记 记录一下
本文内容参考了廖雪峰老师的博文,并做了适当整理,方便大家查阅. 原帖地址 https://wangfanggang.com/Git/git/ 常用命令 仓库初始化 - git init 1 git i ...
- Pro Git 学习笔记
Pro Git 学习笔记 文档地址:Pro Git原文地址:PRO GIT 学习笔记 git常见命令 1.Git起步 初次运行Git前的配置 用户信息 git config --global user ...
- Git学习笔记 (二)
Git学习笔记(二) 突然发现,学习新知识新技能,都得经常温故使用,这样才能日益精进.最近学习的Git是因为加入了课题组,在学习做一些后台,由于后台开发会牵扯到多人开发,所以学会Git这一代码管理工具 ...
- Git学习笔记(10)——搭建Git服务器
本文主要记录了Git服务器的搭建,以及一些其他的配置,和最后的小总结. Git远程仓库服务器 其实远程仓库和本地仓库没啥不同,远程仓库只是每天24小时开机为大家服务,所以叫做服务器.我们完全可以把自己 ...
- Git学习笔记---协作的一般流程
一般的操作流程 1.pull 王小坤与另一个同事张大炮一起开发一个项目,张大炮昨天修改了数据库读写的api,优化了执行速度,并把read()函数改名成了Read(),下午下班之前把这些代码push到服 ...
- GIT学习笔记(1):创建版本库
GIT学习笔记(1):创建版本库 创建版本库 1.创建合适目录并初始化为仓库 版本库即需要交由Git进行版本控制的目录,其下所有文件的修改.删除,Git都能跟踪还原. 说明:初始化后,当前目录下会多出 ...
随机推荐
- Flask解析(二):Flask-Sqlalchemy与多线程、多进程
Sqlalchemy flask-sqlalchemy的session是线程安全的,但在多进程环境下,要确保派生子进程时,父进程不存在任何的数据库连接,可以通过调用db.get_engine(app= ...
- Java设计模式_七大原则
简介 单一职责原则.对类来说,即一个类应该只负责一项职责. 开闭原则.对扩展开放,对修改关闭.在程序需要进行扩展的时候,不能去修改原有代码,使用接口和抽象类实现一个热插拔的效果. 里氏替换原则.任何基 ...
- TICK技术栈(二)Telegraf安装及使用
1.什么是Telegraf? Telegraf是一个用Go语言开发的代理程序,可用于收集和报告指标.Telegraf插件直接从其运行的系统中获取各种指标,从第三方API中提取指标,甚至通过StatsD ...
- 7.22 NOIP模拟7
又是炸掉的一次考试 T1.方程的解 本次考试最容易骗分的一道题,但是由于T2花的时间太多,我竟然连a+b=c都没判..暴力掉了40分. 首先a+b=c,只有一组解. 然后是a=1,b=1,答案是c-1 ...
- 「2019.7.22 考试」AC和WA0一步之遥
这卷子还是答的挺惨的. 第一题5min写完了,自认为AC(其实WA了80),第二题推了半天CRT的公式老出错结果发现是程序打错了.第三题打模拟150行结果数组没开够,开大就是0->60的转变.状 ...
- css实现鼠标悬浮后的提示效果
一.概述 很多时候网站中需要在鼠标划过小图标时,悬浮出提示性的文字.比如下图: 鼠标悬浮后的效果 这种效果可以使用css中的伪类hover来实现.但有时候搞不清两个元素的嵌套关系.使用了hover却没 ...
- Spark安装与学习
http://www.cnblogs.com/jerrylead/archive/2012/08/13/2636115.html
- Python脚本之——API自动化框架总结
学完了Python脚本接口自动化之后,一直没有对该框架做总结,今天终于试着来做一份总结了. 框架结构如下图: 来说一下每个目录的作用: Configs:该目录下存放的是.conf,.ini文件格式的配 ...
- 基于代码生成器的快速开发平台 JEECG
JEECG是一款基于代码生成器的J2EE快速开发平台,开源界“小普元”超越传统商业企业级开发平台.引领新的开发模式(Online Coding模式(在线开发)->代码生成器模式->手工ME ...
- Python3.x安装教程及环境变量配置
python3.x安装 1.直接到官网https://www.python.org/下载,安装就可以了. 2.安装比较简单,点exe文件一直下一步就可以了(注意:安装的时候有个选择是否添加环境变量,这 ...