码迷,mamicode.com
首页 > 其他好文 > 详细

Git学习笔记

时间:2018-03-12 01:12:52      阅读:299      评论:0      收藏:0      [点我收藏+]

标签:版本回退   分布式版本控制系统   更改   key   远程分支   记录   同事   one   表示   

注:本文主要根据廖雪峰大神的Git教程学习而来,主要记录一些重要的命令等方便自己查找,大家对git感兴趣可以直接去Git教程学习。
 
简介:Git是目前世界上最先进的分布式版本控制系统(没有之一)。
创始人:林纳斯·托瓦兹(Linus Torvalds)(传奇人物,linux创始人,为了方便管理linux的代码,两周内自己用C写出了Git,Linux系统的源码已经由Git管理了)
集中式vs分布式
  集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。
  分布式版本控制系统每个人的电脑上都是一个完整的版本库,在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
 
Git安装(Windows)
  从Git官网下载:https://git-scm.com/downloads,然后按照默认选项安装即可。
  安装完后需要配置:
  $ git config --global user.name "Your Name" $ git config --global user.email "email@example.com"
  注意:用了global参数,表示你这台机器上所有的Git仓库都会使用这个配置。
 
创建版本库
  初始化git仓库:git init
  添加文件:git add <file>
  提交修改:git commit -m "xxx"
 
时光穿梭机
  查看是否有文件被修改:git status
  查看修改的内容:git diff
 
  版本回退
  HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
  查看提交历史:git log
  查看命名历史(用于重返回退前版本):git reflog
 
  工作区与暂存区
  工作区(Working Directory):电脑里能看到的目录
  版本库(Repository):工作区中的隐藏目录 .git(不算工作区),其中包含暂存区(stage或index),还有自动创建的分支master,以及指向master的指针HEAD。
  把文件往git版本库添加时的两步:
  第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
  第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
技术分享图片
技术分享图片
 
  管理“修改”:
  为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件。
 
  撤销修改:
  场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
  场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
  场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
 
  删除文件:
  命令git rm file用于删除文件
 
远程仓库:
  第1步:GitHub注册:https://github.com/
  第2步:创建ssh key:ssh-keygen -t rsa -C "youremail@example.com"
  第3步:登陆GitHub,打开“Account settings”,“SSH Keys”页面,在Key文本框里粘贴id_rsa.pub文件的内容。
  GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
 
  添加远程库
  已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程关联:git remote add origin git@github.com:username/Project.git
  第一次推送:git push -u origin master
  第一次推送时加上-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
  正常推送:git push origin master
 
  从远程库克隆
  我们从零开发,那么最好的方式是先创建远程库,然后,从远程库克隆。
  git clone git@github.com:username/Project.git
 
分支管理:
  创建与合并分支:
  查看分支:git branch
  创建分支:git branch <name>
  切换分支:git checkout <name>
  创建+切换分支:git checkout -b <name>
  合并某分支到当前分支:git merge <name>
  删除分支:git branch -d <name>
 
  解决冲突:
  用git log --graph命令可以看到分支合并图
 
  分支管理策略:
  合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
技术分享图片
 
  
  Bug分支:
  当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。
 
  Feature分支:
  1、创建feature分支:git checkout -b feature-vulcan
  2、切回dev准备合并:git checkout dev
  3.1、合并然后删除:git merge <name> ;git branch -d <name>
  3.2、删掉功能:git branch -d feature-vulcan
 
  多人协作:
  1. 首先,可以试图用git push origin branch-name推送自己的修改;
  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
  3. 如果合并有冲突,则解决冲突,并在本地提交;
  4. 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
  如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。
 
标签管理:
  创建标签:
  • 命令git tag <name>用于新建一个标签,默认为HEAD,也可以指定一个commit id;
  • git tag -a <tagname> -m "blablabla..."可以指定标签信息;
  • git tag -s <tagname> -m "blablabla..."可以用PGP签名标签;
  • 命令git tag可以查看所有标签。
 
  操作标签:
  • 命令git push origin <tagname>可以推送一个本地标签;
  • 命令git push origin --tags可以推送全部未推送过的本地标签;
  • 命令git tag -d <tagname>可以删除一个本地标签;
  • 命令git push origin :refs/tags/<tagname>可以删除一个远程标签。

Git学习笔记

标签:版本回退   分布式版本控制系统   更改   key   远程分支   记录   同事   one   表示   

原文地址:https://www.cnblogs.com/andyshu/p/git_learningnote.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!