廖雪峰git教程学习笔记2
本地git仓库和github仓库之间的传输是通过SSH加密的,所以:
- 注册GitHub账号
- 创建SSH key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:
ssh-keygen -t rsa -C youremail@example.com
- 登陆GitHub,打开account setting,增加SSH key
GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
如果在本地创建了一个git仓库,又在GitHub创建了一个,并且想让这两个仓库同步,步骤:
- 登陆GitHub,create a new repo,在本地仓库目录下运行命令:
git remote add origin git@github.com:[GitHub账户名]/[GitHub仓库名].git
上面的[GitHub账户名]用自己的GitHub账户名替代,[GitHub仓库名]用欲关联的GitHub仓库名替代,origin是默认的Git远程仓库叫法,也可以改成别的(注意冒号后没有空格)
- 把本地仓库的内容同步到远程仓库:
git push –u origin master
加了-u是第一次推送master分支时的写法,Git不但会把本地的master分支内容推送到远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令,以后的推送可以不加
从远程仓库克隆:
如果先建立了远程仓库,想要把他克隆下来:
- 将命令行目录切换到欲生成本地仓库的目录
- 输入命令:
git clone git@github.com: [GitHub账户名]/[GitHub仓库名].git

master是git 的一个主分支,在仓库中还可以有很多分支,用git branch 分支名 创建,HEAD是一个指针,指向哪个分支就说明正在哪个分支上工作,在命令行窗口中输入命令git branch,可以查看仓库中有哪些分支,前面带*号的说明HEAD指向这个分支(正在这个分支工作):

分支管理:
在之前的提交里,一直只有一条分支master,HEAD指向的分支,表示当前正在工作的分支,修改或创建新文件后产生的新提交都增添到这个分支里,

每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也越来越长。
当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上:

修改或创建新文件后产生的新提交都增添到dev这个分支里(∵HEAD指向dev),master分支不会产生新的提交!也就是其内容不会被改变!
当在dev上的修改完成后,想要把他合并到master里,则只需要将master指针指向dev,之后也可以把dev指针删除掉。
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git
checkout -b <name>
合并某分支到当前分支:git merge <name>(注意合并分支时HEAD指向的当前分支,<name>写的是非HEAD指向的分支)
如果合并时采用命令(加上no—ff,表示禁用fast forward):
git merge --no-ff -m "common"
<name>
合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史(用git log –graph查看)有分支,能看出来曾经做过合并,而fast
forward合并就看不出来曾经做过合并
删除分支:git branch -d <name>
解决冲突:
假设在dev分支修改了仓库中的某个文件并提交,再切换回master,打开这个文件,会发现在dev中做的修改并没有出现在这里,如果我们此时再对这个文件做修改并提交,再使用git merge命令合并两个分支时就会产生冲突错误,可使用git status查看冲突内容,再次打开这个文件,会发现冲突内容被写入这个文件,此时需要在这个文件里手动修改解决冲突,再次用git merge命令合并分支
临时退出:
假设当前分支a下的工作没有完成,新创建的文件或新的修改还没完成还不能提交,又需要退出去分支b做别的工作,就需要git stash命令,将当前工作储藏起来,再用git checkout b切换到分支b去做别的工作,完成别的工作之后,要回到原来的工作,需要在再回到分支a,此时用git status命令查看工作区可见工作区是干净的,需要使用git stash
pop(stash内容删除,可使用git stash list命令查看stash内容)或git stash
apply(stash内容不删除)命令来恢复原来的工作。
如果要丢弃一个没有被合并过的分支,可以通过git branch -D
<name>强行删除。
查看远程仓库信息:git remote(或git remote –v查看更详细信息)
推送分支:git push origin master
推送其他分支,比如dev:git
push origin dev
·
master分支是主分支,因此要时刻与远程同步;
·
dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
·
bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
·
feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。
使用git clone从远程库克隆后得到的本地库只有master分支,如果需要在dev上进行开发,则需要使用以下命令创建本地dev分支:
git checkout -b dev origin/dev
这样以后就可以把修改后的dev分支push到远程库,如果有人先推送了新的提交到origin/dev,则后来者再推送就会产生冲突,解决方法:使用
git pull
命令把最新的提交从origin/dev抓取下来,然后再本地合并,方法和解决冲突中一样,再push回去
若提示:There is no tracking information for
the current branch. Please specify which branch you want to merge with。。。。
表示没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接:
git branch --set-upstream-to=origin/dev dev
即:

可使用git remote –v查看远程库名和地址:

廖雪峰git教程学习笔记2的更多相关文章
- 廖雪峰 Git教程学习笔记 原文 http://www.liaoxuefeng.com/
一 .集中式与分布式 先说集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推 ...
- 廖雪峰git教程学习笔记3
commit是一串不便记忆的数字,为了方便记忆,引入tag,tag就跟HEAD一样,就像一个指针,指向commit,且指向是不能变得,一个commit就有一个tag 给当前分支下的当前commit打上 ...
- 廖雪峰git教程学习笔记
对git来说,没有消息就是最好的消息 使用 git init 把当前目录变为git仓库 要在仓库里加入文件,先在仓库目录新建这个文件后,比如新建一个文件xiaobai.txt,内容为: 在命令行里输入 ...
- Git-第五篇廖雪峰Git教程学习笔记(4)分支
1.一开始,只有一个主分支(master),HEAD指向Master,而Master指向主分支.现在我们创建dev分支. lfy@lfy-PC MINGW64 /c/fyliu/lfyTemp/git ...
- Git-第四篇廖雪峰Git教程学习笔记(3)远程仓库,克隆远端库
1.本次连接的是gitHub仓库. 1>创建SSH Key. ssh-keygen -t rsa -C "youremail@example.com" lfy@lfy-PC ...
- Git-第三篇廖雪峰Git教程学习笔记(2)回退修改,恢复文件
1.工作区 C:\fyliu\lfyTemp\gitLocalRepository\yangjie 2.版本库 我们使用git init命令创建的.git就是我们的版本库.Git的版本库里存了很多东西 ...
- Git-第二篇廖雪峰Git教程学习笔记(1)基本命令,版本回退
1.安装Git-2.16.2-64-bit.exe后,设置用户名,用户邮箱 #--global参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地 ...
- 廖雪峰 Git 教程 + Git-Cheat-Sheet 学习总结
廖雪峰 Git 教程 + Git-Cheat-Sheet 学习总结 本教程主要是个人的 Git 学习总结. 主要参考博客: 廖雪峰 Git 教程 Git-Cheat-Sheet 文章目录 廖雪峰 Gi ...
- git学习笔记——廖雪峰git教程
OK,先附上教程--廖雪峰的官方网站 友情连接:git官网 简介 这里我只想引用他的原文: Linus可以向BitMover公司道个歉,保证以后严格管教弟兄们,嗯,这是不可能的.实际情况是这样的: L ...
随机推荐
- IDEA 使用技巧 Update
IDEA使用起来和Eclipse很大区别. 1.快捷键. 因为一个个熟悉起来费时间,就直接在Preferences—keymap里选择了Eclipse OS X,这样快捷键就转换到了Mac下Eclip ...
- Linux改变文件所有者
Linux改变文件所有者 #把当前路径下jsportal文件夹及下的所有文件的所有者改为appmanager组下的appmanager用户.chown -R -v appmanager:appmana ...
- 常用的npm命令
npm ls -g 列出全局安装的所有模块 npm ls webpack -g 查看全局安装的模块版本信息 npm view webpack versions 查看npm服务器上的全部版本信息 npm ...
- ABAP知识点提纲
编号 课程名称 课程内容 预计课时 10.1.1~10.1.2 SAP系统与产品集 1. 了解SAP常见产品 ,了解SAP系统架构 1 10.1.3~10.1.4 导航界面与用户界面 1. 了解SAP ...
- Connection reset原因分析和解决方案
在使用HttpClient调用后台resetful服务时,“Connection reset”是一个比较常见的问题,有同学跟我私信说被这个问题困扰很久了,今天就来分析下,希望能帮到大家.例如我们线上的 ...
- Mysql基础知识—索引
公司最近开始尝试进行改革,如何活跃团队气氛.开发就给我们说了一些算是科普类的数据库知识,下面参杂自己的理解,方便自己后续翻看. 1.什么是索引 索引在MySQL中也叫做“键”,是存储引擎用于快速找 ...
- HDU 3591 (完全背包+二进制优化的多重背包)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3591 The trouble of Xiaoqian Time Limit: 2000/1000 M ...
- Redis 之深入江湖-复制原理
一.前言 上一篇文章Redis 之复制-初入江湖中,讲了关于Redis复制配置,如:如何建立配置.如何断开复制.关于链接的安全性等等,那么本篇文章将深入的去说一下关于Redis复制原理,如下: 复制过 ...
- Redis全方位详解--数据类型使用场景和redis分布式锁的正确姿势
一.Redis数据类型 1.string string是Redis的最基本数据类型,一个key对应一个value,每个value最大可存储512M.string一半用来存图片或者序列化的数据. 2.h ...
- Hadoop(16)-MapReduce框架原理-自定义FileInputFormat
1. 需求 将多个小文件合并成一个SequenceFile文件(SequenceFile文件是Hadoop用来存储二进制形式的key-value对的文件格式),SequenceFile里面存储着多个文 ...