Git使用心得

Git使用心得

初次接触Git,写下一些使用心得,也是第一次写博客,有不足之处望批评指正,十分感激。

准备工作

Git简介

What is Version Control?

在软件开发中 通过版本控制,除了可以控制每个人可以提交的修改内容,还可以随时的退回到某个版本上。而且这个回退还不是基于“完全备份”的数据,而是版本控制软件记录的“修改”内容。这种修改的记录数据要比整个源代码备份容量要小很多。而且还可以通过分支功能,保持不同的源代码修改再同一个数据树上进行管理。

Git是GitHub的核心版本控制系统(VCS),有以下特性:
  • 支持分支和合并
  • 轻量且快速
  • 分布式
  • 数据保障
  • 索引
  • 免费且开源
什么是Git工作流:

本地仓库由 git 维护的三棵“树”组成。第一个是你的 工作目录,它持有实际文件;第二个是 暂存区(Index),它像个缓存区域,临时保存你的改动;最后是 HEAD,它指向你最后一次提交的结果。

下载及安装

1.下载
本教程基于GitHub官方Git 1.9.2,现最新版本为2.06,下载地址如下:
Windows: GitHub for Windows 2.06
Mac: GitHub for Mac 2.06
Linux可采用对应系统的包管理工具进行下载,十分方便:

Debian/Ubuntu

$ apt-get install git

Fedora

$ yum install git
更多版本的下载安装请参考:Download for Linux and Unix
2.安装
下载后解压,点击Git setup文件
开始安装
然后一步一步按提示进行,安装结束
安装结束

使用Git

根据需求,如果只在本地使用,就不需要创建Git帐号,如果想协作,就需在GitHub注册一个帐号。

本地仓库使用

1.初始化仓库

进入工程目录:
工程目录

右键鼠标,选择Git Init Here,这样便在工程目录下初始化了一个本地仓库,或者,进入工程目录,打开Git Bash,输入$ git init回车,文件夹内会增加一个隐藏的.git文件夹(工具>文件夹选项>查看>隐藏和显示文件夹>选择显示隐藏的文件、文件夹和驱动器,即可看到此文件夹),这就是仓库所在,仓库是什么,就当是数据库吧。

命令行下,初始化仓库:
初始化仓库

仓库所在目录:
仓库所在

2.添加文件到Index(暂存区)
在仓库目录下右键鼠标,选择Git Bash,进入命令行模式:
在命令行输入,批量添加文件:
$ git add .
“.”代表当前目录下所有文件
批量添加文件
也可以指定特定目录或文件
$ git add <filename>
添加特定文件
执行了add命令后所有add的文件都会进入git暂存区,等待提交。

3.删除文件并通知索引
删除工作目录文件:$ rm <filename>
通知暂存区已删除此文件:$ git rm <filename>
删除文件
4.查看跟踪状态
将文件add后可以马上执行:
$ git status
跟踪状态
列出所有已跟踪和未跟踪的文件变化(modified,removal,new…),确认要提交的信息都在已跟踪列表后,就可以执行提交了。
5.提交
$ git commit -m <commit text>
“commit text”为提交时要说明的信息,如文件的增删说明,Bug的修复说明,版本号的设置说明等。”commit text”为必填项。执行此命令后,你的改动就提交到了 HEAD。
提交
6.查看提交日志
$ log [-number]
[]中为可选项,number表示要列出的记录数
提交信息
7.对比已暂存内容和工作目录内容
$ diff
所谓工作目录就是你初始化仓库的目录,暂存内容是你已经add到暂存区的内容。当修改了工作目录中的某文件而未add到暂存区时,执行此命令就会显示两文件的差异。
对比
8.撤销和修改提交
有时候我们提交完了才发现漏掉了几个文件没有加,或者提交信息写错了。想要撤消刚才的提交操作,可以使用 –amend 选项重新提交,amend意为修改:

$ git add error.txt
$ git commit -m "error.txt"
$ git add names.txt
$ git commit --amend

修改
9.撤销已缓存文件
有时我们不需要提交的内容已经在暂存区了,这时候可以撤销暂存:

$ git add names.txt
$ git reset HEAD names.txt

我们看到,names.txt已经加入了暂存:
加入暂存
执行撤销语句后,names.txt离开了暂存区,成为Untracked file:
撤销暂存

10.恢复当前分支的HEAD(最新commit)到某一历史版本
指令样式:
$ git reset [<mode>] [<commit>]
其中commit为每次提交生成的160位SHA数字签名,这个操作将当前分支的HEAD复位到commit,并且可能更新索引(将其复位到commit状态),工作目录是否更新取决于mode,如果没有加mode参数,默认mode为 “–mixed”,mode可以取下列值:
“–soft ”
不会影响索引文件或者工作目录,但会把HEAD复位到commit状态,这会让所有相对commit已改变的文件变为“Changes to be committed”(即暂存)状态,和用$ git add加进来的效果一样 。
“–hard ”
与soft相反,它会将索引文件和工作目录都复位,忽略掉所有从commit到HEAD之间做的更改。
“–mixed ”
会复位索引,但不影响工作目录,所有更改都为“not marked for commit”(即未暂存)状态,同时报告未更新的内容,–mixed是reset的默认行为。
“–merge”
复位该索引并更新工作目录下中HEAD与commit之间不相同的文件,例如,HEAD中都有文件names.txt,但内容不同,那么reset后,names.txt就会被reset。但是会保留当前工作目录下修改但并未add到该索引下的文件,例如,当前目录下error.txt已被修改,但是没有暂存,复位后,它将得到保留。如果该索引和commit之间不同的文件有未暂存的修改,复位将会取消。如Shape.java已存在于该索引中,但还没有暂存对它的更改到该索引,同时该索引中的Shape.java和commit中的不同。如果reset的话,就会丢失我们对Shape.java所做的更改。到此合并的意味就来了。
“–keep”
复位该索引并更新工作目录下中HEAD与commit之间不相同的文件(如果该文件有未暂存的更改,则复位取消)
以“–soft”模式为例
reset之前的暂存区:
soft mode
reset之后的暂存区:
after
reset之前的HEAD:
before head
reset之后的HEAD:
after head
对复位程度进行排序:
hard>merge>keep>mixed>soft

远端仓库使用

准备

当我们需要参与协作的时候,就会用到远端仓库。首先注册一个GitHub帐号:GitHub
注册好以后登录,进入主页,点击“New repository”创建新的GitHub仓库,如图:
创建

克隆远端仓库到本地
clone

复制仓库的URL地址到剪贴板,打开Git Bash,执行(联网状态):
$ git clone https://github.com/Ycreact/testRepository.git
则会在当前目录下生成一个名为“testRepository”的目录,这就是你从远端克隆生成的本地仓库。如图:
clone
如果想自定义仓库名,就执行:
$ git clone https://github.com/Ycreact/testRepository.git <repositoty_name>
“repositoty_name> “为自定义的仓库名称。

查看当前已配置的远端仓库

$ git remote
或者
$ git remote -v
v为--verbose的简写

添加主仓库

$ git remote add upstream https://github.com/Ycreact/testRepository.git
添加远程主仓库

抓取远端数据到本地以及合并
$ git fetch upstream 
$ git merge upstream/master

抓取:抓取远程分支到本地
抓
合并:将远程分支与当前分支合并
并
抓取并合并
抓并

推送本地修改到远程仓库
$ git add .
$ git commit -m "my update"  
$ git push upstream 

推送
推送
帐号密码验证
输入帐号和密码
参考
1.GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流
2.Git详解之二 Git基础
3.Git - 简易指南
4.GitHub

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值