廖雪峰的git学习笔记
安装完后,每个机器都要自报家门 Config--配置 global--全局参数 |
||||
配置全局用户名 |
$git config --global user.name “Your Name” |
|||
配置邮箱地址 |
$git config --global user.email “email@example.com” |
|||
创建版本库 Mkdir --建立一个新的子目录 |
||||
创建一个名为learngit的文件夹 |
$mkdir learngit |
|||
进入learngit文件夹里面 |
$cd learngit |
|||
显示当前目录 |
$pwd |
|||
把当前目录变成git可管理的仓库 |
$git init |
|||
把文件添加到仓库 Commit --把...交托给 |
||||
把文件添加到缓存区 |
$git add readme.txt / $git add .(添加全部已修改的文件) |
|||
对本次提交做一个提交说明 |
$git commit -m “xxxx” |
|||
查看历史修改 |
||||
查看是否有已改动的文件 |
$git status |
|||
查看被修改的内容 |
$git diff readme.txt / $git diff . |
|||
查看版本控制系统的历史纪录 |
$git log 包括(commit版本号,提交的人,修改的日期与修改的那内容说明) |
|||
$git log --pretty=oneline |
||||
回退版本:在git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个数不过来,可以写成HEAD~100 |
||||
回退到上一个版本 |
$git reset --hard HEAD^ |
|||
查看当前版本readme.txt的内容 |
$cat readme.txt |
|||
回退版本后,使用$git log查看,发现回退前的最新版本已经不见了。 想要回到之前的最新版本,条件是,回退 时的命令行窗口还未被被关闭,然后使用 $git reset --hard 1234567 1234567为之前最新的版本号的前7位,以查出来的为准 |
||||
如果之前的命令行窗口已经关闭了,又找不到新版本的commit id。那就用下面的命令 $git reflog git提供一个命令git reflog来记录你的每一次命令 可以看到之前最新的版本的那行append GPL 相对应的commit id 现在,你依然可以回到最新版本了 |
||||
Branch --分支 tracked --跟踪 Git checkout -- file命令中的“--”很重要,没有“--”就变成了“创建一个新分支”命令 |
||||
放弃当前工作区的修改 |
$git status $git checkout -- readme.txt |
|||
把放在缓存区的文件撤销,放回到工作区 |
$git reset HEAD readme.txt |
|||
$git add test.txt $git commit -m “add test.txt” ---(添加文件) $rm test.txt $git status ---(提示你哪些文件被删除了) 选择一 $git rm text.txt $git commit -m “remove test.txt” --把文件从版本库里删除掉 选择二 $git checkout -- test.txt ---一键还原 |
||||
创建远程仓库 (先有本地库,后有远程库) 1,去github.com官网注册github账号, 2,再电脑本机创建密钥,.ssh文件夹里有俩个文件,id_rsa和id_rsa.pub 3,在github里找到设置ssh key的页面选项(版本不同位置不同),然后点“add SSh key” ,填上任意title,在key文本框里粘贴id_rsa.pub文件的内容,然后确定添加 4,开始添加远程库, 假设本机已有名为”abc”的项目,将”abc”设为本地仓库。 在github里创建同名项目”abc” 在本地仓库”abc”里右键打开base运行命令 |
||||
创建密钥 |
$ssh-key -t rsa -C “youremail@example.com” 密钥创建后就会告诉你密钥的路径。一般情况默认路径是 C:\Users\Administrator |
|||
把本地仓库与远程仓库相关联的内容推送到github仓库 |
$git remote add origin git@github.com:youname/abc.git youname为你的github账号的用户名 Git的远程库默认名为origin abc为你本地项目的项目名 |
|||
把本地库的所有内容推送到远程库上 |
$git push -u origin master 用git push命令,实际上是把当前分支master推送到远程。由于远程是空,我们第一次推送master分支时,加上-u参数,在推送的同时,把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取就可以简化命令,之后的提交命令可以省略-u了,如下: $git push origin master |
|||
(先有远程库,后有本地库) 1,在github创建项目的时候同时创建readme.txt文件 2,用命令克隆一个远程库到本地 |
||||
$git clone git@github.com:youname/bbb.git youname为你的github账号的用户名 bbb为你在github上创建的项目名 创建后会在本地生成同名文件夹 $cd bbb $ls ls命令是查看当前文件夹里有什么文件 |
||||
(分支管理) |
||||
创建分支 |
$git checkout -b dev Dev为分支名 Git checkout 命令加上-b参数表示创建并切换,相当于以下两条命令 $git branch dev //创建分支 $git checkout dev //切换分支 |
|||
查看分支 |
$git branch |
|||
切换回主分支 |
$git checkout master 切换分支 |
|||
合并分支 |
$git merge dev 把dev分支的工作成果合并到master分支上 |
|||
删除分支 |
$git branch -d dev 合并后,就可以删除dev分支了。 删除后最好再查看一次当前分支 |
|||
解决冲突 (假设分支”dev”与主分支”master”起冲突,现在我们在master分支上 |
||||
合并分支 |
$git merge dev Git告诉我们,readme.txt文件存在冲突,必须手动解决 |
|||
查看被修改的内容 |
$git status 也提示有冲突 |
|||
查看文件内容 |
$cat README.md 我们可以看到起冲突的部分是哪里 |
|||
这个时候我们就要找到该文件,手动修改。修改后才能进行下一步操作 |
||||
提交并上传已修改好的文件 |
$git add . $git commit -m “” |
|||
查看分支合并的情况 |
$git log --graph --pretty=oneline --abbrev-commit |
|||
删除分支 |
$git branch -d dev |
|||
通常合并分支时,Git会用”Fast forward”模式,这种模式下,删除分支后会丢掉分支信息 如果禁用”Fast forward”模式,Git就会在merge时生成一个新的commit,这样,就可以从分支的历史上查看分支信息 分支管理策略( --no-ff方式的merge 表示禁用“Fast forward”) $git checkout -b dev 修改文件 $git add . $git commit -m “” 合并分支,注意--no-ff参数,表示禁用“Fast forward” $git checkout master $git merge --no-ff -m “” dev 查看分支历史 $git log --graph --pretty=oneline --abbrev-commit |
||||
分支策略 Bug分支 当你接到一个代号101的bug的任务要立即处理时时,很自然的就想创建一个分支。但是假如你正在dev的分支上进行的工作还没提交。这怎么办? 我们可以把当场工作现场“储存”起来,等恢复现场后继续工作 $git status //查看目前改动了什么 $git stast //存储工作现场 $git status //再查看一次 会发现工作区很干净 $git checkout master //回到主分支 $git checkout -b issue-101 //创建新分支 然后修复bug 提交并推送 $git add . $git commit -m “” 修复完后回到主分支,合并并删除 $git checkout master $git merge --no-ff -m “” issue-101 $git branch -d issue-101 删除后,回到dev分区 $git checkout dev $git status //发现工作区是干净的 $git stash list //查看工作现场存到哪了 恢复现场并删除stash内容,回到现场工作 $git stash pop $git stash list //再查看一遍就看不到任何stash内容了 如果想恢复制定stash的话,可以 $git stash apply stash@{0} |
||||
Feature分支 在已有的项目里添加一个新功能的时候,最好新建一个feature分支。 当要丢弃一个没有被合并过的分支时,可以使用以下命令强行删除 $git branch -D feature-vulcan feature-vulcan为分支的分支名 |
||||
多人协作 |
||||
查看远程库信息 |
$git remote 或 $git remote -v |
|||
推送分支 |
$git push origin master //推送主分支 $git push origin dev //推送其他分支 |
|||
把最新的版本拉去下来 |
$git pull |
项目常用git命令:
$git status |
查询项目是否有改动 |
$git add . |
将改动的地方添加道缓存区 |
$git commit -am “xx” |
将缓存区的信息进行提交并注明提交信息 |
$git fetch |
拉取项目最新版本 |
$git rebase origin/developer |
将本地的改动提交到远程项目 |
$git push origin developer |
把本地库的所有内容推送到远程库上 |
$gitk |
查询 |
廖雪峰的git学习笔记的更多相关文章
- 阅读廖雪峰老师git教程笔记
1.首先git是目前世界上最先进的分布式版本控制系统之一.所谓版本控制是针对工作中一些普遍的现象的. 比如,你写一份文档,期间,不断的改善,每次修改都会进行备份,久而久之,会有很多版本的同一份文档,但 ...
- Git学习笔记(10)——搭建Git服务器
本文主要记录了Git服务器的搭建,以及一些其他的配置,和最后的小总结. Git远程仓库服务器 其实远程仓库和本地仓库没啥不同,远程仓库只是每天24小时开机为大家服务,所以叫做服务器.我们完全可以把自己 ...
- git学习笔记01-git最基本的工作原理分布式
git学习的网站 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 --廖雪峰老师 ...
- 【转帖】Git学习笔记 记录一下
本文内容参考了廖雪峰老师的博文,并做了适当整理,方便大家查阅. 原帖地址 https://wangfanggang.com/Git/git/ 常用命令 仓库初始化 - git init 1 git i ...
- Git学习笔记(二) · 非典型性程序猿
远程库的使用 前面说到的都是git在本地的操作,那么实际协作开发过程中我们肯定是要有一个远程版本库作为项目的核心版本库,也就是投入生产使用的版本.这里我们以 Github为例.Github是一个开放的 ...
- git学习笔记之一
Git是比较优秀的分布式版本管理工具,这次学习了git的基本命令,现在作一些归纳总结,已备复习之用. Git 认识 Git 直接用hash值记录提交的修改文件的快照,本地操作无需联网 Git 有三种状 ...
- Git学习笔记 (二)
Git学习笔记(二) 突然发现,学习新知识新技能,都得经常温故使用,这样才能日益精进.最近学习的Git是因为加入了课题组,在学习做一些后台,由于后台开发会牵扯到多人开发,所以学会Git这一代码管理工具 ...
- Git学习笔记与IntelliJ IDEA整合
Git学习笔记与IntelliJ IDEA整合 一.Git学习笔记(基于Github) 1.安装和配置Git 下载地址:http://git-scm.com/downloads Git简要使用说明:h ...
- Git学习笔记(四)
一.忽略特殊文件 在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件. 不需要从头写.gitignore文件,GitHub已经为我们 ...
随机推荐
- 组件化框架设计之apt编译时期自动生成代码&动态类加载(二)
阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680 本篇文章将继续从以下两个内容来介绍组件化框架设计: apt编译时 ...
- PdgCntEditor系列教程一:基础知识
一.PdgCntEditor是什么? 二.为什么要用PdgCntEditor? 三.怎么用PdgCntEditor? 一.PdgCntEditor是什么? 这是一个目录编辑器,可以创建.编辑PDF.D ...
- Python爬虫抓取 python tutorial中文版,保存为word
看到了中文版的python tutorial,发现是网页版的,刚好最近在学习爬虫,想着不如抓取到本地 首先是网页的内容 查看网页源码后发现可以使用BeautifulSoup来获取文档的标题和内容,并保 ...
- CSS 清除浮动的几种方法
导读: CSS 的 Float(浮动),会使元素向左或向右移动,其周围的元素也会重新排列,Float(浮动),往往是用于图像,使得文字围绕图片的效果,而它在布局时一样非常有用.不过有利也有弊,使用浮动 ...
- 看FPGA面试题时见到被考到的几个逻辑电路
8位 D触发器: module dff8(clk , reset, d, q); input clk; input reset; :] d; :] q; :] q; always @ (posedge ...
- Java使用Jsoup简单解析页面
jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址.HTML 文本内容.它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出 ...
- vue证明题四,使用组件
vue的开发方式,基本上是以组件为主的,至于为啥,我也不好去论述,网上看别人的 所谓渐进式开发,也是源自于单页面应用这一说,而注册一个域名以后,指定了首页,爬虫爬取链接都是从首页开始的 如果一个网址, ...
- java命令-jstat/ javap
jstat命令对应用程序资源和性能进行实时监控 常用参数列举如下: 1. jstat -class pid 显示加载class的数量.所占空间.所耗时间等信息 2.jstat -compiler pi ...
- 深入理解java虚拟机:笔记
1.运行时数据区域 1.程序计数器 当前线程执行字节码的行号指示器,字节码解释器工作通过改变这个计数器的值来选取下一条需要执行的字节码指令,每一个线程拥有独立的程序计数器,线程私有的内存 2.虚拟机栈 ...
- boost库:字符串处理
使用boost库的字符串处理之前,需要进行区域设置.类:std::locale,每个C++程序自动拥有一个此类的实例,不能直接访问全局区域设置. 全局区域设置可以使用类std::locale中的静态函 ...