Git是目前世界上最先进的分布式版本控制系统(没有之一),只用过集中式版本控制工具的我,今天也要开始学习啦。廖雪峰的git教程我觉得很详细了,这里记录一下步骤以及我终于学会用Markdown了,真的是好学又好用。

安装Git

下载安装包git for windows,直接默认选项安装。

安装完成后,在开始菜单里找到“Git”->“Git Bash”,会弹出一个命令窗口,继续配置。

$ git config --global user.name "Name"
$ git config --global user.email "email address"

git config命令的--global参数表示你这台机器上所有的Git仓库都会使用这个配置。

创建版本库repository和文件添加修改删除

  1. 我在D盘创建了一个空目录learngit
$ cd d:
$ mkdir learngit
$ pwd
Administrator@OEM-20121127FJC MINGW32 /d/learngit (master)

pwd命令用于显示当前目录。master是Git自动创建的第一个分支branch,有一个指针HEAD指向master

2. 通过git init命令初始化Git仓库,把这个目录变成Git可以管理的仓库。

$ git init
  1. 编写一个txt文件添加到目录下,把文件添加到仓库需要两步

    • $ git add file将文件添加到暂存区Stage,可添加多个文件。
    • $ git commit -m "本次提交的说明"将暂存区的文件提交到当前分支,-m后面输入的是本次提交的说明,有助于查看更新记录。
  2. git status可以查看仓库当前状态,git diff file可以查看修改内容。

    提交修改和提交新文件是一样的步骤。
  3. git log命令可以查看提交日志,用来确定回滚版本。
  4. HEAD表示当前版本,HEAD^表示上一个版本,往上i个版本表示为HEAD~i。 回滚操作为:
$ git reset --hard HEAD^
  1. git reflog可以查看命令日志,以便回滚操作之后需要再回到新的版本。通过commit id回到需要的版本。
$ git reset --hard commitID
  1. git checkout --file可以撤销修改,有以下两种情况:

    • 工作区文件修改后没有放到暂存区,撤销修改则回到和版本库一模一样的状态;
    • 工作区文件修改后已经添加到暂存区,之后有改动,撤销修改则回到和暂存区一样的状态。此时如果要丢弃修改,首先使用git reset HEAD file命令把暂存区的修改撤销掉,将暂存区文件放回工作区,然后回到第一种情况。

对于已经提交到版本库的修改,需要使用回滚操作。

9. 删除文件的两种情况:

+ 从版本库中删除文件,使用git rm file命令并git commit

+ 在工作区误删的文件,可以从版本库恢复git checkout --file。虽然可以恢复,但是只能是恢复最近一次提交的文件。

github远程仓库

关联远程库

git是分布式的代码管理工具,远程的代码管理是基于ssh的,所以要使用远程的git则需要ssh的配置。

  1. 使用cd ~/.ssh查看是否已经有ssh密钥,没有则使用如下命令生成密钥:
$ ssh-keygen -t rsa -C "email address"
  1. 按三个回车,密码为空,最后得到了两个文件:私钥id_rsa和公钥id_rsa.pub
  2. 登陆GitHub,打开“Account settings”,“SSH and GPG Keys”页面add ssh key,Key文本框里贴上公钥的内容。
  3. 在GitHub创建一个Git仓库learngit
  4. 在本地的learngit仓库下运行命令,添加后,远程库的名字就是origin:
$ git remote add origin git@github.com:github用户名/learngit.git
  1. 把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程,第一次推送master分支时,加上-u参数将本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
$ git push -u origin master

之后使用$ git push origin master即可。可以通过git push --help查看命令帮助。

克隆远程库

$ git clone git@github.com:github用户名/仓库名.git

分支

分支的创建、合并、删除

$ git branch branch_name  //创建分支
$ git checkout branch_name //切换分支
$ git checkout -b branch_name //创建并切换到branch_name分支
$ git branch //查看所有分支,当前分支前面带*
$ git merge branch_name //合并branch_name分支到当前分支
$ git branch -d branch_name //删除分支

冲突

当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。

$ git log --graph命令可以看到分支合并图。

bug分支

修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;

当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。

$ git stash
$ git stash list //查看保存的工作现场
$ git stash apply //恢复
$ git stash drop //删除stash内容
$ git stash pop //恢复并删除stash内容

feature分支

开发一个新feature,最好新建一个分支;

如果要丢弃一个没有被合并过的分支,可以通过$ git branch -D branch_name强行删除。

多人协作

多人协作的工作模式通常是这样:

  • 首先,可以试图用$ git push origin branch_name推送自己的修改;

  • 如果推送失败,则因为远程分支比你的本地更新,需要先用$ git pull试图合并;

  • 如果合并有冲突,则解决冲突,并在本地提交;

  • 没有冲突或者解决掉冲突后,再用 $ git push origin branch_name推送就能成功!

  • 如果$ git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令$ git branch --set-upstream branch_name origin/branch_name建立本地分支和远程分支的关联。

Git的安装和使用记录的更多相关文章

  1. Git版本控制工具(一)----git的安装及创建版本库

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  2. Mac上git的安装配置与使用简述

    Mac下git搭建及使用 之前就只是经常在GitHubs上下载代码,也没注意怎么上传项目.一开始对git都没什么了解花了几个小时去小补了下知识.如果有需要可以转去这里学习:[GIT使用简易指南] (h ...

  3. window下版本控制工具Git 客户端安装

    安装使用 1.下载msysgit http://code.google.com/p/msysgit/ 2.下载tortoisegit客户端安装 http://code.google.com/p/tor ...

  4. Git配置安装使用教程操作github上传克隆数据

    Git是何方神圣? Git是用C语言开发的分布版本控制系统.版本控制系统可以保留一个文件集合的历史记录,并能回滚文件集合到另一个状态(历史记录状态).另一个状态可以是不同的文件,也可以是不同的文件内容 ...

  5. Centos中git的安装

     CentOS的yum源中没有git,只能自己编译安装,现在记录下编译安装的内容,留给自己备忘. 确保已安装了依赖的包 yum install curl yum install curl-deve ...

  6. 利用cocoapods管理开源项目,支持 pod install安装整个流程记录(github公有库)

    利用cocoapods管理开源项目,支持 pod install安装整个流程记录(github公有库),完成预期的任务,大致有下面几步: 1.代码提交到github平台 2.创建.podspec 3. ...

  7. git 的安装及使用

    一.Git的安装和使用 1.1 Linux下版本库的创建 1.1.1 创建一个版本库 repository,在一个合适的地方创建一个空目录: root@zengyue:/# mkdir -p /hom ...

  8. git从安装到使用

    一.Git简介 Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制 ...

  9. (转 留存)Windows环境下的NodeJS+NPM+GIT+Bower安装配置步骤

    Windows环境下的NodeJS+NPM+GIT+Bower安装配置步骤 标签: NodeJSnpmbower 2015-07-17 16:38 3016人阅读 评论(0) 收藏 举报  分类: G ...

随机推荐

  1. XCActionBar 「Xcode 中的 Alfred」

    下载地址:https://github.com/pdcgomes/XCActionBar 基本命令: (1)「command+shift+8」或者双击「command」键可以打开「动作输入框窗口」 ( ...

  2. oracle vm virtualbox 如何让虚拟机可以上网

    刚安装了虚拟机,系统linux2.6. 可是想安装一些软件,发现没法联网.郁闷~  还要手动设置网络,可是也不是小白就可以干的事情,还要弄清楚原理才行. http://reverland.bitbuc ...

  3. 转载好文:如何进行基于情境数据的个性化EDM数据营销

    根据Adobe和DMA(Direct Marketing Association)的<实时营销洞察报告> (Real-Time Marketing Insights Study),77%的 ...

  4. Android开发艺术探索笔记——View(二)

    Android开发艺术探索笔记--View(二) View的事件分发机制 学习资料: 1.Understanding Android Input Touch Events System Framewo ...

  5. js webapp 滑动事件

    var startX, startY, endX, endY; $(".detailImg").on("touchstart", touchStart);$(& ...

  6. seajs中spm压缩工具使用

    seajs是个好东西,用起来很方便,但是她的压缩工具spm确不被网友看好,因为使用起来很麻烦,捯饬了一天多,终于勉强能压缩了,这里就简单记录一下. 按照地址:http://www.zhangxinxu ...

  7. JavaScript进阶内容1:各种对象类型判断

    该文章主要用来介绍JavaScript中常用的一些对象检测判断方法,整理资源来自书本和网络,如有错误或说明不详之处,望评论提出,本菜定提名感谢……(本文章知识比较基础,大牛请提些意见再绕道,三克油^_ ...

  8. 实现TabView(页签)效果

    今天花了点时间,设计了一个网页上用的tabview(页签.tabcontrol)效果.个人觉得实现得比较不错,网页元素用得比较少,js代码也比较精练.测试了一下支持IE.FireFox以及chrome ...

  9. SNF开发平台WinForm之八-自动升级程序部署使用说明-SNF快速开发平台3.3-Spring.Net.Framework

    9.1运行效果: 9.2开发实现: 1.首先配置服务器端,把“SNFAutoUpdate2.0\服务器端部署“目录按网站程序进行发布到IIS服务器上. 2.粘贴语句,生成程序 需要调用的应用程序的Lo ...

  10. Cocoa Drawing Guide学习part1——基础和图形上下文 (转)

    原文:http://noark9.github.io/2013/12/28/cocoa-drawing-guide-study-part-1/ 简介 cocoa drawing由AppKit提供并且也 ...