Git 基本原理与经常使用命令

平时使用过两种版本号控制软件 SVN 和 Git,平心而论,假设纯粹自己使用,那么绝对 Git 更加适合,本地库、远程库、离线工作、强大而灵活的分支、大名鼎鼎的Github, 这些都是选择 Git 的原因。记得刚接触时Git,感觉 Git 如此强大,再加上其是由大名鼎鼎的 Linus 所编写,所以花了非常多的时间看各种资料,不过后来那些不经常使用的命令与功能还是只停留在知道与了解的层面。Git 不过一种工具,是为了满足某种需求而被编写出来的一种工具,对于工具做到善加利用就可以。当然,要做到善加利用,一定要深刻理解
Git 所倡导的理念,以及其内部的实现原理。

Git 入门

这里推荐 @廖雪峰
 所写的一个很浅显易懂的Git教程 ,我当时就花了一个下午照着教程学操作一遍,然后就開始使用 Git 了。

Git 原理

Git 本质上是一套内容寻址文件系统。从内部来看,Git 是简单的 key-value 数据存储。它同意插入随意类型的内容,并会返回一个键值,通过该键值能够在不论什么时候再取出该内容。这些对象都压缩存储,而且以其自身的 SHA-1 哈希值作为唯一标示。它同意插入随意类型的内容,并会返回一个键值,通过该键值能够在不论什么时候再取出该内容。

Git主要包括 3 类对象:blog(存储文件数据)、tree(类似于文件夹)、commit。每次 Git 提交都会产生一个 commit 对象,并更新有修改的文件所关联的全部 tree 对象。多个 tree 对象一起记录了包括整个项目全部 blob 对象的信息, 并构成了(DAG)有向无环图 。所以在不论什么时间点不论什么情况下,通过 commit 对象关联的唯一根节点 tree,都能够遍历找出整个项目在这次
commit 状态下的所有文件。

Git 能够以两种基本的方式跨越两个仓库数据传输:基于HTTP协议之上,和 file://, ssh://, git:// 等智能传输协议。

Git 插件

好的 IDE 基本都集成了 Git 插件,最性感的编辑器 sublime 也有第三方的 Git插件。这些插件基本对最经常使用的 Git 功能做好了菜单选项,所以通过对这些插件使用也可以了解到 Git 日常使用中最经常使用的命令与功能。

Git 使用注意

假设正在 IDE 中使用 Git插件,就不要在命令行 (shell) 中在进行操作,对于一个 Git库 同一时候有两个进程来操作可能会导致可能莫名其妙的问题。所以假设认为软件的Git插件有的功能没找到或操作不方便,那么建议先关掉 IDE ,然后在用命令行窗体中去运行 Git 命令。

Git 经常使用命令

这个不须要刻意去记,可是要有大体的了解,用时能够查看 help 或者 Google.

git help <command>          # 显示指定命令的help
git config --global user.name "your name"
git config --global user.email "your email"

# 改动与提交
git status                   # 查看工作区状态
git add <file>               # 将指定文件改动提交到本地暂存区
git add .                    # 将全部改动过的文件提都交暂存区,不包含删除,"."即表示正则匹配全部字符
git add --all                # 将全部工作区改动提交到暂存区,包含 delete 掉的文件
git add -A                   # 同上
git commit -m"comments"      # 将暂存区的内容提交到本地库,并加上备注
git commit <file>            # 提交暂存区指定文件
git commit .                 # 提交暂存区全部文件
git commit -a                # 将git add, git rm和git commit等操作都合并在一起做,不包含新建文件
git commit -am "comments"    # 同上+加入备注

# 撤销与恢复
git checkout  -- <file>     # 抛弃工作区指定文件的改动
git checkoout .             # 抛弃工作区全部的改动
git reset <file>            # 将指定文件从暂存区恢复到工作区
git reset -- .              # 将全部文件从暂存区恢复到工作区
git reset --hard            # 恢复近期一次提交过的状态,工作区全部改动被放弃

# 查看提交
git show            # 显示某次提交的内容
git show $id
git log
git log <file>      # 查看该文件每次提交记录
git log -p <file>   # 查看每次具体改动内容的diff
git log -p -2       # 查看近期两次具体改动内容的diff
git log --stat      # 查看提交统计信息

# 差异对照
git diff <file>                     # 比較当前文件和暂存区文件差异
git diff <$id1> <$id2>              # 比較两次提交之间的差异
git diff <branch1>..<branch2>       # 在两个分支之间比較
git diff --staged                   # 比較暂存区和版本号库差异
git diff --stat                     # 只比較统计信息

# 关于版本号
git tag                              #查看版本号
git tag [name]                       #创建版本号
git tag -d [name]                    #删除版本号
git tag -r                           #查看远程版本号
git push origin [name]               #创建远程版本号(本地版本号push到远程)

# 关于分支
git branch <new_branch>             # 创建新的分支
git checkout <branch>               # 切换到某个分支
git checkout -b <new_branch>        # 创建新的分支,而且切换过去
git branch -v                       # 查看各个分支最后提交信息
git branch -r                       # 查看远程分支
git branch --merged                 # 查看已经被合并到当前分支的分支
git branch --no-merged              # 查看尚未被合并到当前分支分支
git checkout $id                    # 把某历史提交checkout出来,无分支信息,切换到其它分支会自己主动删除
git checkout $id -b <new_branch>    # 把某历史提交checkout出来,创建成一个分支
git branch -d <branch>              # 删除某个分支
git branch -D <branch>              # 强制删除某个分支 (未被合并的分支被删除的时候须要强制)

# 关于远程仓库
git remote add origin <remote>       # 加入远程库
git remote -v                        # 查看远程server地址和仓库名称
git remote show origin               # 查看远程server仓库状态
git remote rm <repository>           # 删除远程仓库
git push -u origin master            # client首次提交
git push -u origin develop           # 首次将本地develop分支提交到远程develop分支,而且track

# 跟踪远程库和本地库
git branch --set-upstream master origin/master
git branch --set-upstream develop origin/develop

【地址】http://blog.csdn.net/thisinnocence

时间: 2024-10-05 09:04:16

Git 基本原理与经常使用命令的相关文章

Git 基本原理与常用命令

平时使用过两种版本控制软件 SVN 和 Git,平心而论,如果纯粹自己使用,那么绝对 Git 更加适合,本地库.远程库.离线工作.强大而灵活的分支.大名鼎鼎的Github, 这些都是选择 Git 的原因.记得刚接触时Git,感觉 Git 如此强大,再加上其是由大名鼎鼎的 Linus 所编写,所以花了很多的时间看各种资料,不过后来那些不常用的命令与功能还是仅仅停留在知道与了解的层面.Git 只是一种工具,是为了满足某种需求而被编写出来的一种工具,对于工具做到善加利用即可.当然,要做到善加利用,一定

git bash 常用操作文件命令

git bash常用操作文件命令 在Windows下使用Git Bash,用的是Linux命令,常用几个文件操作命令如下: Windows命令 Linux 命令 意义 Windows命令 Linux 命令 意义 cd e:\xxx cd /e/xxx 切换到xxx目录 cd pwd 显示当前目录路径 dir ls 列出当前目录内容 copy nul xxx.txt touch xxx.txt 生成名为xxx.txt的空文件 del xxx.txt rm xxx.txt 删除xxx.txt文件 m

【android Studio】零git知识、零脚本命令,即刻体验git版本管理魅力!

git的优点就不去多说了.阻碍咱新手体验它的唯一问题就是门槛太高,脚本看着像天书, 本文主要阐述的,就是如何在android studio上,也能像tfs那样,非常简单的操作,就能使用git进行版本管理 几个月用下来,咱每天要做的就是开始工作前,alt+下方向键,从服务端拉取数据:结束工作后,alt+上方向键,将代码提交到服务器上.就这两步,完成了版本管理. 因此,有了这篇面向新手的图文并茂的文章,一步步按照步骤下来,你就可以完成项目对git的融合. (提示:面向新手的介绍型文章,因此步骤细致繁

Git(二)--常用命令

$ git init  从当前目录初始化 $ git clone git://xxxx  从远程仓库克隆 $ git status 确定哪些文件当前处于什么状态 $ git add 开始跟踪一个新文件 $ git diff  比较工作目录中当前文件和暂存区域快照之间的差异(修改之后还没有暂存起来的变化内容) $ git diff --cached 比较已经暂存起来的文件和上次提交时的快照之间的差异 $ git commit -m 提交 $ git log 查看提交历史 $ git remote 

git个人使用总结 —— idea命令行、撤销commit (未完待续)

近期在使用git,最开始在idea界面操作,后来要求用命令行.刚开始还不是很习惯,感觉很麻烦,用了几天后感觉爽极了! 其实git的命令也不是很多,熟悉一段时间就差不多能顺利使用了.使用过程中遇到了各种各样的问题,有些小问题就在这里集中总结一下. 1.idea命令行.git安装后就自带终端git bash,使用起来很方便.但是用idea开发,开发后还要在相应文件夹下打开git bash很麻烦.其实idea也带有终端terminal,在最下方可以找到,在这里就可以执行命令.但是如果是默认方式安装的g

git常用情景和基础命令

git常用情景和基础命令 将项目克隆到本地 1 --xxx是git的地址 2 git clone xxxx 或者初始化git(github提供滴) --新建一个readme.md文件 echo "# git_command_Demo" >> README.md --初始化git git init --将文件加入git git add README.md --提交 git commit -m "first commit" --本地git连上远程的git g

如果碰到git提示“ignored tracked with git”,那么使用以下命令解决

命令:git rm --cached -r 文件/文件夹 问题在初始化git仓库的时候没有创建.gitignore文件来过滤不必要提交的文件, 后来却发现某些文件不需要提交, 但是这些文件已经被提交了, 这时候创建.gitignore文件忽略这些文件时, 发现ignore的规则对那些已经被track的文件无效. 其实.gitignore文件只会忽略那些没有被跟踪的文件, 也就是说ignore规则只对那些在规则建立之后被新创建的新文件生效. 因此推荐: 初始化git项目时就创建.gitignore

git开发流程、常用命令及工具

根据我最近使用git的一些经历,git是基于分支的版本控制工具,分支有远程分支和本地分支. 一.开发流程 大致是: 从远程服务器的master,clone一份项目文件到本地,然后本地master的基础上branch一个新的本地分支xname,然后checkout切换到这个本地分支上,开始开发: 开发过程中可以不断的commit到本地, 开发完成之后,把本地分支xname ,push origin到远程分支xname上,(纳尼,这个远程xname我什么时候建立的), 远程分支xname和maste

git的使用及常用命令(二)

一,把文件放在版本库中 执行  git add XXX文件名 在执行 git commit -m ‘提交注释' 查看状态 git status 如果没有改变文件,nothing to comment working directory clean 现在修改所放文件, 然后继续使用 git status 查看状态 上面的命令告诉我们文件已被修改但是未提交 接着使用git diff XXX查看修改了什么内容 知道修改了什么然后就可以提交到数据库 使用git commit -m '修改提示内容' 二,