首先
介绍一本Git的书,<<Pro Git>>,此书的网络版是可以免费获取的,是一本非常好的介绍Git的书籍。
然后,介绍一下我的运行环境,是ubuntu10.10,Git版本是1.7.1。
现在,进入正题介绍一下基本的Git命令,通过这些命令,你可以搭建一个单机版的Git库,开始你的工作,并且,在你是用Git管理你的软件时,你绝大部分时间使用的命令就是这几个。
这些命令有:
git init 初始化Git库
git add 向Git库提交文件修改(包括创建文件)
git commit 基于此分支提交一个更改
git reset 去除目标提交之后的一切提交记录(世界清净级大招)
git log 查看当前分支下的提交记录
git status 查看当前状态
git checkout 切换分支或回到某次提交
git branch 创建分支,查看分支等
git merge 合并目标分支到当前分支
从现在开始,我们一一实践这些命令
首先我们创建文件夹GitTest
#mkdir GitTest
#cd GitTest
然后创建文件readme,test并在test输入字符串“1”
#touch readme
#echo "1">test
接下来,执行一下三个操作
#git init 创建git仓库
#git config user.name yym 配置作者名
#git config user.email yym@**.com 配置email
#git add . 向git仓库中添加文件(.表示当前目录及其子目录下所有文件)
#git commit -m "initial" 进行第一次提交
现在,分别运行三个命令
#ls -a
. .. .git readme test
如果你看到
.git恭喜你,你已经有了一个Git仓库,如果你没看到,抱歉,请重新安装Git。
#git status
# On branch master
nothing to commit (working directory clean)
翻译一下,你在分支master上,没什么可以提交的(工作文件夹很干净)
这里有两个概念需要解释,都很重要:分支,干净
1.branch分支是Git的一个重要概念,可以说Git是以这个概念为核心设计的。你可以把分支理解为你当前的工作发展方向,你的程序所在的位置,你的未来。一般来说,会有如下分支稳定版本bug修复分支,程序发展分支1~n,特性分支,发展分支,主分支等等。分支的管理和权限分配构成里项目的组织结构,这就像数据结构之于算法。
关于分支的妙用,这里推荐一个篇文章
《Git分支管理是一门艺术》
2.干净,这是一个美妙的词。干净代表你的程序没有什么需要提交的修改,意味着你完成了这个阶段性成果,当然这是在你的程序是正确的情况下。
#git log
commit 5b1ac4cff1bc7d91622ba6d5f733db1d2ba2af0f
Author: yym <yym@**.com>
Date: Wed Sep 28 17:56:06 2011 +0800
initial
commit代表提交,后面的hash值是这次提交的唯一标志,接下来是作者与时间,然后就是这次提交的名称。简洁直观
接下来,我们修改readme文件及test文件
#echo I" create this dir for learning Git">>readme
#echo “test”>test
注意>>和>的区别
创建文件notrack
#touch notrack
然后我们输入
#git status
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: readme
# modified: test
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# notrack
no changes added to commit (use "git add" and/or "git commit -a")
很好,我们发现,我们还在master分支上(当然!),然后,我们发现readme与test处于修改未更新状态,notrack处于未追踪状态。这是什么意思呢?
要回答这个问题,就需要介绍一个很要的概念。在Git的世界中,文件被分为3类:
1.未追踪,也就是说在此文件夹下,但是未被Git库追踪。
2.未修改,这代表这个文件未被改变
3.修改未更新,这就是上面的状态了
4.已暂存,处于这种状态,那就是等着提交(commit)了
现在我们需要用到add命令,将修改提交打Git库中。
#git add readme
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: readme
#
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: test
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# notrack
此时,你就可以将修改提交到Git库中,当然,你也可以将test文件的修改也暂存一起提交。这里我只提交单个文件的修改
#git commit -m "2nd commit"
#git status
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: test
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# notrack
no changes added to commit (use "git add" and/or "git commit -a")
可以看到,刚才的readme文件的修改已经被提交了
#git log
commit ae79a590fa13673a584bc5cea08eaa260a7dd473
Author: yym <yym@**.com>
Date: Wed Sep 28 18:10:48 2011 +0800
2nd commit
commit 52a2d3bb92cc54a69f43a6118ca3ee1d1b520156
Author: yym <yym@**.com>
Date: Wed Sep 28 18:01:29 2011 +0800
initial
这是提交记录,就不多说了。现在,我们把test文件也提交了。
#git add test
#git commit -m "3rd commit"
#git log
commit b8d7f73a84944bc38a36990512ab5d9ceda77fef
Author: yym <yym@**.com>
Date: Thu Sep 29 09:34:51 2011 +0800
3rd commit
commit ae79a590fa13673a584bc5cea08eaa260a7dd473
Author: yym <yym@**.com>
Date: Wed Sep 28 18:10:48 2011 +0800
2nd commit
commit 52a2d3bb92cc54a69f43a6118ca3ee1d1b520156
Author: yym <yym@**.com>
Date: Wed Sep 28 18:01:29 2011 +0800
initial
突然,你想回退到2nd commit,想看看当时test文件中的内容。
你可以使用命令
#git checkout ae79a590fa13673a584bc5cea08eaa260a7dd473
#cat 1
1
看完test之前的内容后,你觉得还是第三次提交的内容比较合适,又想回到第三次提交,同样的,你可以
#git checkout b8d7
#cat test
test
你可以不必打出所有位数,只要你保证他是独一无二的,但是你至少需要打出四位。
好吧,不要觉得我是个反复无常的人,现在我有觉得3rd commit完全是多余,我想回到2nd,彻底丢弃之后的内容。只需输入如下命令
#git reset --hard ae79
#git log
commit ae79a590fa13673a584bc5cea08eaa260a7dd473
Author: yym <yym@**.com>
Date: Wed Sep 28 18:10:48 2011 +0800
2nd commit
commit 52a2d3bb92cc54a69f43a6118ca3ee1d1b520156
Author: yym <yym@**.com>
Date: Wed Sep 28 18:01:29 2011 +0800
initial
最后,觉得每次都要add所有修改文件太麻烦了?
ok
git commit -a -m "CommitName"
你可以使用如上命令跳过暂存区域,或者你也可以把它看作是自动add已修改文件
关于Git的一部分基本操作就介绍到这里,下文会介绍Git的另一部分常用操作。
相关推荐
git学习笔记总结-版本管理
HTML CSS JS 学习、git-笔记HTML CSS JS 学习、git-笔记 HTML CSS JS 学习、git-笔记HTML CSS JS 学习、git-笔记 HTML CSS JS 学习、git-笔记HTML CSS JS 学习、git-笔记 HTML CSS JS 学习、git-笔记HTML CSS JS ...
git学习笔记(git学习笔记).md
git学习笔记
git学习笔记常用git指令 一.创建或clone版本库 1.在本地创建一个新的版本库 $git init(cd至需要用到的地址,文件夹,用git init初始化版本库) 2.克隆一个已经存在的版本库 $git clone git@github....
个人github、git学习笔记。包含Github和git的基础命令和介绍。由于网络问题在国外很难插入图片,把源文件的pdf导出版本进行上传。
git操作笔记和总结
git学习笔记,适用于停留在没有接触过git的童鞋们,易于理解
Git学习笔记目标规划,大学学习可以用到,也可以用于自我检测
GIT学习笔记
Git中关于rebase, merge, cherry-pick, rm等的深入讲解
Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 [1] Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件
Git学习笔记,网址:https://learngitbranching.js.org/?locale=zh_CN
Git学习笔记 包括各种常规操作,日常项目开发够用
git学习笔记
Git安装,git学习笔记,zhang
自己整理的git学习笔记,能够很容易地学会应用git
Git学习笔记.docx
提炼了各种Git 应用场景的命令和基础说明与分类,基本满足大型软件开发要求,我主要基于Android 系统开发,几百个git 仓库各种分支,合并。