Git 使用初步
比较简略的资料(对基本概念没有解释很清楚):http://wenku.baidu.com/link?url=G5wroyiwvVlLj5ge_V-T2D96L083VimgG8QRgsKhT323Hc7gU56pEbx1DrCHpb65cc9GvnGIV0m58oDwg9zuySfzPVVEVdlu5HN1MJwo3P7
一、重要概念
1、三个路径:
Working Directory(常被称为工作树):You modify files in your working directory. 也就是说我们要处理的文件就是在这个地方。
staging area/Index(常被称为索引):You stage the files, adding snapshots of them to your staging area. 可以理解为临时存放快照(snapshots) 的地方。
Git directory/Repository (常被称为仓库):You do a commit, which takes the files as they are in the staging area and stores that snapshot permanently to your Git directory(Repository ).可以理解为永久存放快照的地方。
Git的一般工作流程是:
修改文件(modify)--->添加到索引(stage)--->存仓(commit)
注:关于快照的定义
Git thinks of its data more like a set of snapshots of a miniature filesystem.
Every time you commit, or save the state of your project in Git, it basically takes a picture of what all your files look like at that moment and stores a reference to that snapshot.
To be efficient, if files have not changed, Git doesn’t store the file again, just a link to the previous identical file it has already stored. Git thinks about its data more like a stream of snapshots.
2、工作树中的文件分类
只有两类状态tracked or untracked.(即被跟踪或未被跟踪)
Tracked files are files that were in the last snapshot. they can be unmodified, modified, or staged.
被跟踪的文件,就是存在上一个快照中的文件(即commit后的快照所包含的文件)。
可以有unmodified, modified, staged三个状态。
unmodified:commit后没被修改过。
modified:commit 后被修改过。
staged:modify后被stage过。
Untracked files are everything else – any files in your working directory that were not in your last snapshot and are not in your staging area.
未被跟踪过的文件,即不在上一个快照中的文件。
比如新建的文件啊,被移出快照的文件等等。
二、Git设置
有三层配置:
系统级,用户级,项目级。
小的范围覆盖大的范围。
配置文件具体的放置位置,因操作系统不同而异。
git config (命令),用法如下。
设置用户名和邮件地址
$ git config --global user.name "Your name"
$ git config --global user.email youremail
设置别名
设置.gitignore file
设置某些文件不让Git管理。
三、建仓
1、本地
$ git init
初始化,建立骨架,这个时候有.git目录生成。
也就是我们上文所说的Git directory/Repository(仓库)。
$ git add .
$ git commit -m 'initial project version'
git add .
添加当前目录(Working derectory)下所有文件(这个时候是Untracked状态)。这个动作是stage。
即保存临时快照到索引,即staging area/Index。
git commit -m 'initial project version'
将快照永久保存到仓库Git directory/Repository。
2、远程
$ git clone https://github.com/libgit2/libgit2
$ git clone https://github.com/libgit2/libgit2 mylibgit
前一句是默认创建libgit2目录。
后一句创建自己的目录mylibgit。
三、记录修改
1、git add file
跟踪新文件(Tracking New Files)
更改了文件后生成快照存索引(Staging Modified Files)
2、查看状态
$ git status
$ git status -s
3、详细查看状态
$ git diff
This command compares your staged changes to your last commit.
也就是比较staging area/Index和Git directory/Repository 这两个地方的不同。
$ git diff --staged
That command compares what is in your working directory with what is in your staging area.
也就是比较staging area/Index和Working Directory这两个地方的不同。
4、提交
$ git commit
当更改到一定程度,提交到仓库,用git commit。
$ git commit -a -m 'added new benchmarks'
可以用-a选项跳过stage阶段(经典的工作流程是modify->stage->commit)。
5、删除文件
$ git rm PROJECTS.md
相当于从working directory中删除文件,并且从stage area中删除(stage 删除这个动作)。
$ git rm --cached README
Another useful thing you may want to do is to keep the file in your working tree but remove it from your staging area.
相当于在working directory中保留文件,但从stage area中删除(stage 删除这个动作)。
$ git rm log/\*.log
This command removes all files that have the .log extension in the log/ directory.
Note the backslash (\) in front of the *.
6、重命名
$ git mv file_from file_to
More importantly,you can use any tool you like to rename a file, and address the add/rm later, before you commit.
注:其实删除和重命名不用上述命令也可以。
四、查看历史版本
git log命令
常用参数:
$ git log -p -2
-p shows the difference introduced in each commit.
-2, which limits the output to only the last two entries
$ git log --stat
see some abbreviated stats for each commit
$ git log --pretty=oneline
The oneline option prints each commit on a single line.
The short, full, and fuller options show the output in roughly the same format but with less or more information.
$ git log --pretty=format
略,要用的时候查看说明
注:The oneline and format options are particularly useful with another log option called --graph. This option adds a nice little ASCII graph showing your branch and merge history.
五、撤销
1、$ git commit --amend
One of the common undos takes place when you commit too early and possibly forget to add some files, or you mess up your commit message.
If you want to try that commit again, you can run commit with the --amend option.
For example:
$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend
You end up with a single commit – the second commit replaces the results of the first.
2、$ git reset HEAD CONTRIBUTING.md
Unstaging a Staged File.
CONTRIBUTING.md file is modified but once again unstaged.
git reset can be a dangerous command if you call it with --hard.
注:HEAD指当前分支的最新版本 ,后续有需要再查。
3、$ git checkout -- CONTRIBUTING.md
Unmodifying a Modified File.
It is a dangerous command. Any changes you made to that file are gone.
Remember, anything that is committed in Git can almost always be recovered.
Even commits that were on branches that were deleted or commits that were overwritten with an --amend commit can be recovered.
However, anything you lose that was never committed is likely never to be seen again.
六、Tagging
1、Annotated Tags
$ git tag -a v1.4 -m "my version 1.4"
2、Lightweight Tags
$ git tag v1.4-lw
3、Tagging Later
$ git tag -a v1.2 9fceb02
4、Sharing Tags
$ git push origin v1.5
By default, the git push command doesn’t transfer tags to remote servers.
You will have to explicitly push tags to a shared server after you have created
Them.
5、Checking out Tags
$ git checkout -b version2 v2.0.0
you can create a new branch at a specific tag with git checkout -b [branchname] [tagname]
七、项目分支
$ git branch local
创建分支local
$ git branch
查看分支
$ git checkout local
分支切换到local
$ git checkout master # 将当前分支切换为master
$ git merge local # 将local分支与当前分支合并
合并分支,当我们用local完成了阶段性任务时,此时可以把local分支合并到master分支中。
$ git branch -d local
删除分支,local分支已经被合并,没有作用了。
$ git branch -D local
强制删除分支。对于未有合并的分支,是不能删除的,我们可以暴力删除。
引入分支的功能,可有效保持了本地项目主分支的干净。
至此,本地代码版本管理基本操作都涉及到了。
八、远程协作
git-clone、git-pull 与 git-push
这三个命令就可以满足基本的需求了。
其余的用到时再查。
Git 使用初步的更多相关文章
- 浅谈自我对git的初步认识
本学期我们新增了一门课程,那就是软件工程,不知道为什么,感觉有种莫名的高大上.哈哈!难道是这个名称太抽象了吗?这个问题我感觉到后来肯定就明白了. 第一次博客,感觉好紧张哦,嘿嘿!老师让我们谈谈对git ...
- Git 笔记三 Git的初步使用
Git 笔记三 Git的初步使用 在上一篇中,学习了如何配置Git环境,这一篇,开始学习Git的初步使用.Git的初步使用还是很简单的.总体上知道git init, git clone, git ad ...
- git的初步使用---本地代码库的使用和提交
git的初步使用---本地代码库的使用和提交 git是一个好东西,但对于新手来说,这个工具并不好使用,因为它里面涉及到很多东西,而这些东西新手一时间是无法理解的.不幸的是,本人就是新手一枚,所以,这里 ...
- Git的初步学习
前言 感谢! 承蒙关照~ Git的初步学习 为什么要用Git和Github呢?它们的出现是为了用于提交项目和存储项目的,是一种很方便的项目管理软件和网址地址. 接下来看看,一家公司的基本流程图: 集中 ...
- git的初步了解
其实git我也不熟,请两天假回来宿友告诉我,我们有一份高大尚的作业.我问她们才知道原来是让我们以博客的形式写两份作业交上去.git还是我在网上查找到的,才对它有一些的了解. git是一个开源分布式版本 ...
- git的初步使用
1.在GitHub上建立项目登录GitHub后,你可以在右边靠中那里找到一个按钮“New Repository”,点击过后,填入项目名称.说明和网址过后就可以创建了,然后会出现一个提示页面,记下类似g ...
- 对git的初步认识
虽然经常听说博客,但是却是第一次用.就像,虽然经常见电脑,但是却第一次接触软件.对于git也是一样,从来没听过,更不了解. 因为自己私下也没有去过多的了解,所以对于git只有一些有关书面资料的很片面的 ...
- Git学习(二):Git的初步使用
一.Git的最小配置 1.使用如下命令创建Git的用户名和邮箱,如下所示: $git config --global user.name 'your_name' $git config --globa ...
- git的初步研究1
工作中很多项目再往git上迁移,所以打算研究下git git是个版本控制系统 理解git工作区.暂存区.版本库的概念 工作区:在电脑中能看到的目录 暂存区:index即索引 即首先add加入暂存区 c ...
随机推荐
- 分析cocos2d-x的lua项目中的工具方法
在创建完cocos2d-x的lua项目后.打开项目的Resources中的extern.lua文件.里面有两个用于面向对象的方法.一个是用于克隆,一个是用于继承. 代码分析例如以下 --克隆一个对象 ...
- 算法 Heap sort
// ------------------------------------------------------------------------------------------------- ...
- linux链接外网手动设置
/etc/sysconfig/network-scripts/ifcfg-eth0 设置IP网关等参数 DEVICE=eth0HWADDR=00:0C:29:C5:43:34TYPE=Etherne ...
- linux 内核(系统)、函数的理解、宏的程序调试
1.操作系统 1.1.Linux 内核(系统)的组成的部分: 内核主要有:进程调度.内存管理.虚拟文件系统.网络接口和进程通信五个部分组成. (1)进程调度 进程调度是CPU对多个进程对CPU访问的调 ...
- 安装gi的时候回退root.sh的运行
</pre><pre name="code" class="html">/u01/app/11.2.0/grid/crs/install ...
- Color.js 方便修改颜色值
这并不是npm上比较活跃的clolr包的中文文档,不过它在最后提到了: The API was inspired by color-js. Manipulation functions by CSS ...
- beego介绍
beego 简介 beego 是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API.Web 及后端服务等各种应用,是一个 RESTful 的框架,主要设计灵感来源于 tornado ...
- Android 开发小工具之:Tools 属性 (转)
Android 开发小工具之:Tools 属性 http://blog.chengyunfeng.com/?p=755#ixzz4apLZhfmi 今天来介绍一些 Android 开发过程中比较有用但 ...
- maven nexus 搭建
http://www.cnblogs.com/adolfmc/archive/2012/08/21/2648415.html http://www.cnblogs.com/dingyingsi/p/3 ...
- python 基础 7.7 json--上
一. 文件json ...