Git命令详解(一)-个人使用

原文  http://blog.csdn.net/magicharvey/article/details/12431867

本文暂时不会涉及到团队如何使用Git的内容,而是从个人的角度探讨如何用好Git。

约定

绿色的5位字符表示提交的ID,分别指向父节点。分支用橘色显示,分别指向特定的提交。当前分支由附在其上的标识。 这张图片里显示最后5次提交,是最新提交。分支指向此次提交,另一个分支指向祖父提交节点。

git cat-file

git cat-file -t,查看Git对象的类型,主要的git对象包括tree,commit,parent,和blob等。

git cat-file -p,查看Git对象的内容

git log

git log主要用来显示分支中提交更改的记录。当执行git commit以存储一个快照的时候,文件详单、提交消息和提交者的信息、此次提交所基于的快照都会被保存。

git log --oneline,可以显示更加短小的提交ID.

git log --graph,显示何时出现了分支和合并等信息.

git log --pretty=raw,显示提交对象的parent属性.

git config

git config -e

git config -e --global

git config -e --system

Git的三个配置文件分别是版本库级别的配置文件(/.git/config)、全局配置文件(用户主目录下)和系统级配置文件(/etc目录下)。这个命令的作用是打开相应的配置文件,并且进行编辑。其中版本库级别的配置文件的优先级最高,全局配置文件次之,系统级别配置文件最低。Git配置文件采用的是INI文件格式。

git config <section>.<key>,读取和更改INI配置文件的内容。

git config <section>.<key> <value>,修改INI配置文件中某个配置的键值

在全局空间中添加新的用户

git config --global user.name "harvey liu"

git config --global user.email [email protected]

设置git命令的别名

git config --global alias.ci commit

git config --global alias.co checkout

删除git全局配置文件中的用户名

git config --unset --global user.name

git config --unset --global user.email

git diff

git diff,显示工作区和暂存区的差异

git diff HEAD,显示工作区和HEAD之间的差异

git diff --cached,显示暂存区和HEAD之间的差异

git diff id1 id2,显示两次提交之间的差异

git status

git status,查看你的代码在缓存与当前工作目录的状态

git status -s,将结果以简短的形式输出

git add

git add,在提交你修改的文件之前,你需要把它们添加到暂存区。如果该文件是新创建的,你可以执行将该文件添加到暂存区

git add . ,Git会递归地将你执行命令时所在的目录中的所有文件添加上去,所以如果你将当前的工作目录作为参数,它就会追踪那儿的所有文件

git add -u,使用-u参数调用了git add命令,会将本地有改动(包括删除和修改)的已经追踪的文件标记到暂存区中。

git add -A,使用-A参数会将添加所有改动的已跟踪文件和未跟踪文件。

git add -i,交互式的方式进行添加。

git commit

git commit --amend,修补式提交。

git commit --a,对本地所有变更的文件执行提交操作,包括对本地修改的文件和删除的文件,但是不包括未被版本库跟踪的文件。但是这个命令最好不要使用,这样会丢掉Git暂存区带给用户的最大好处:对提交内容进行控制的能力

git reset

把当前分支指向另一个位置,并且有选择的变动工作目录和索引

git reset --hard <commit>,替换引用的指向,替换暂存区,替换工作区

git reset --soft <commit>,只更改引用的指向,不改变暂存区和工作区

git reset,用HEAD指向的目录树重置暂存区

git reset -- filename,将文件filename的改动撤出暂存区,暂存区其他文件不变

git branch

git branch,显示当前所在的分支

git branch <branchname>,创建新的分支branchname

git branch -d <branchname> ,删除名称为branchname的分支

git checkout

git checkout,检出命令。

git checkout branchname,会改变HEAD头指针,主要用于切换分支

git checkout -b branchname,用于创建一个新的分支,并且切换到创建的新的分支上

git checkout --filename,用暂存区中的filename文件来覆盖工作区中的filename文件

git checkout <commit> --filename,用指定提交中的文件覆盖暂存区和工作区中对应的文件

git checkout -- .或者git checkout .,用暂存区的所有文件直接覆盖本地文件,取消所有的本地的修改,是一条危险的操作

git rm

rm命令删除的文件只是在本地进行了删除,尚未添加到暂存区,也就是说,直接在工作区删除,对暂存区和版本库没有任何影响。

git rm命令会将删除动作加入暂存区,这是执行提交动作,就从真正意义上执行了文件删除。

git mv

git mv,移动文件,git中以git rm和git add两条命令取而代之。

git archive

git archive,对任意提交对应的目录树建立归档。

git archive -o latest.zip HEAD,基于最新提交建立归档文件latest.zip

git archive -o partial.tar HEAD src doc,只将目录src和doc建立到归档文件partial.tar中

git archive --format=tar --prefix=1.0/ v1.0 | gzip > foo-1.0.tar.gz,基于里程碑v1.0建立归档,并且为归档中的文件添加目录前缀1.0

git clone

git clone <repository> <directory>,将repository指向的版本库创建一个克隆到directory目录中。目录directory相当于克隆版本库的工作区,文件都会检出,版本库位于工作区下得.git目录中。

git clone --bare <repository> <directory.git>

git clone --mirror <repository> <directory.git>

上面的两种克隆版本都不包含工作区,直接就是版本库的内容,这样的版本库称为裸版本库。

git push

git push <remote> [branch],就会将你的 [branch] 分支推送成为 [alias] 远端上的 [branch] 分支,要推送的远程版本号的URL地址由remote.<remote>.pushurl给出,如果没有配置,则使用remote.<remote>.url配置的URL地址。

git pull

git pull,从远端的服务器上下载数据,从而实现同步更新。要获取的远程版本库的URL地址由remote.<remote>.url提供。

Git命令详解(一)-个人使用,布布扣,bubuko.com

时间: 2024-10-22 19:20:17

Git命令详解(一)-个人使用的相关文章

Git初探--笔记整理和Git命令详解

几个重要的概念 首先先明确几个概念: WorkPlace : 工作区 Index: 暂存区 Repository: 本地仓库/版本库 Remote: 远程仓库 当在Remote(如Github)上面clone一个项目到本地时(假设项目名为GitTest),在本地就会看到一个名为GitTest的目录,目录下有项目代码和一个名为.git的目录,什么是工作区呢,就是除了.git文件夹以外的所有东西,我们主要在工作区上阅读,修改,添加删除代码和其他内容,而这个.git目录就称为一个版本库,这个版本库中存

Git命令详解

1. Git 1.1. Git是何方神圣? Git是用C语言开发的分布版本控制系统.版本控制系统可以保留一个文件集合的历史记录,并能回滚文件集合到另一个状态(历史记录状态).另一个状态可以是不同的文件,也可以是不同的文件内容.举个例子,你可以将文件集合转换到两天之前的状态,或者你可以在生产代码和实验性质的代码之间进行切换.文件集合往往被称作是“源代码”.在一个分布版本控制系统中,每个人都有一份完整的源代码(包括源代码所有的历史记录信息),而且可以对这个本地的数据进行操作.分布版本控制系统不需要一

Git 命令详解

git init 在本地新建一个repo,进入一个项目目录,执行git init,会初始化一个repo,并在当前文件夹下创建一个.git文件夹. git clone 获取一个url对应的远程Git repo, 创建一个local copy. 一般的格式是git clone [url]. clone下来的repo会以url最后一个斜线后面的名称命名,创建一个文件夹,如果想要指定特定的名称,可以git clone [url] newname指定. git status 查询repo的状态. git

【转】 Git 常用命令详解(二)----不错

原文网址:http://blog.csdn.net/ithomer/article/details/7529022 Git 是一个很强大的分布式版本管理工具,它不但适用于管理大型开源软件的源代码(如:linux kernel),管理私人的文档和源代码也有很多优势(如:wsi-lgame-pro) Git 的更多介绍,请参考我的上一篇博客:Git 版本管理工具 一. Git 命令初识 在正式介绍Git命令之前,先介绍一下Git 的基本命令和操作,对Git命令有一个总体的认识 示例:从Git 版本库

git archive命令详解

git archive可以将加了tag的某个版本打包提取出来,例如: git archive -v --format=zip v0.1 > v0.1.zip --format表示打包的格式,如zip,-v表示对应的tag名,后面跟的是tag名,如v0.1. git archive命令详解,布布扣,bubuko.com

【Git使用详解】Egit的常用操作详解

常用操作 操作 说明 Fetch 从远程获取最新版本到本地,不会自动merge Merge 可以把一个分支标签或某个commit的修改合并现在的分支上 Pull 从远程获取最新版本并merge到本地相当于fetch+merge Push 将本地分支的更新,推送到远程主机 Merge tool 当你的代码产生了冲突可以通过此工具快速的对比 Switch to 将当前分支切换到其它分支或标签 Commit 将更改提交到本地库中 Rebase 可以把在一个分支里提交的改变移到另一个分支里重放一遍 Re

【Git使用详解】Egit使用过程中遇到的问题及解决办法

1.   Git错误non-fast-forward后的冲突解决 问题(Non-fast-forward)的出现原因在于:git仓库中已经有一部分代码,所以它不允许你直接把你的代码覆盖上去.于是你有2个选择方式: 1.强推,即利用强覆盖方式用你本地的代码替代git仓库内的内容 git push –f 如果你用的是Egit则可以在推送界面选择"Force Update All Specs"即可,如下图: 2.先把git的东西fetch到你本地然后merge后再push $ git fet

三十九、git add详解

一.前言git add命令主要用于把我们要提交的文件的信息添加到索引库中.当我们使用git commit时,git将依据索引库中的内容来进行文件的提交.二.基本git add <path>表示 add to index only files created or modified and not those deleted 我通常是通过git add <path>的形式把我们<path>添加到索引库中,<path>可以是文件也可以是目录.git不仅能判断出&

iOS开发——开发实战篇&amp;版本控制SVN和Git使用详解

版本控制SVN和Git使用详解 公司的实际开发中,在天朝使用较多的还是SVN,因为SVN是集中式的,在天朝上班你们都懂的! -----------------svn----------------- 一:最常用基本步骤--- 下载(完整下载,第一次),将服务器的项目下载到本地开始开发 svn checkout ip —uaerbane=? —password=?     //这里需要add 简:co 更新仓库,服务器项目有变动的时候需要更新到本地,以免错误或者冲突 svn updata