上次说到安装Git软件 【Git版本控制管理】Git入门介绍及Git的安装 , 接下来开始正式使用Git软件
安装完Git后可以在Git Bash
上试试Git的命令行
git
, 它会列出选项和常用的命令$ git
usage: git [--version] [--help] [-C <path>] [-c <name>=<value>]
[--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
[-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare]
[--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
[--super-prefix=<path>] [--config-env=<name>=<envvar>]
<command> [<args>]
These are common Git commands used in various situations:
start a working area (see also: git help tutorial)
clone Clone a repository into a new directory
init Create an empty Git repository or reinitialize an existing one
work on the current change (see also: git help everyday)
add Add file contents to the index
mv Move or rename a file, a directory, or a symlink
restore Restore working tree files
rm Remove files from the working tree and from the index
examine the history and state (see also: git help revisions)
bisect Use binary search to find the commit that introduced a bug
diff Show changes between commits, commit and working tree, etc
grep Print lines matching a pattern
log Show commit logs
show Show various types of objects
status Show the working tree status
grow, mark and tweak your common history
branch List, create, or delete branches
commit Record changes to the repository
merge Join two or more development histories together
rebase Reapply commits on top of another base tip
reset Reset current HEAD to the specified state
switch Switch branches
tag Create, list, delete or verify a tag object signed with GPG
collaborate (see also: git help workflows)
fetch Download objects and refs from another repository
pull Fetch from and integrate with another repository or a local branch
push Update remote refs along with associated objects
'git help -a' and 'git help -g' list available subcommands and some
concept guides. See 'git help ' or 'git help '
to read about a specific subcommand or concept.
See 'git help git' for an overview of the system.
Tips : 在Git Bash下输入的命令和Linux的风格是一致的, 比如要清空屏幕显示的代码行, 则使用
clear
命令。还有命令的参数:-
后面加简写(一般后面带一个字母),--
后面加单词全称(一个单词)。
查看Git所有命令
git help --all
显示Git版本号
git --version
GitUsing
文件夹Git Bash Here
Git不关心你是从一个完全空白的目录还是由一个装满文件的目录开始的。在这两种情况下,将目录转换到Git版本库的过程是一样的。
创建初始版本库命令
git init
public_html
的文件夹, 再在文件夹内创建index.html
的文件如果只是将某个文件(filename
指文件名)添加到版本库中, 用下面的命令
git add fliename
如果需要将当前目录及子目录中的文件都添加到版本库里, 用下面的命令
git add .
参数
.
: 点或者UNIX说法中的“dot”,是当前目录的简写
在add之后,Git知道index.html 这个文件是要留在版本库里的。然而,到目前为止,Git还只是暂存(staged)了这个文件,这是提交之前的中间步骤。Git将
add
和commit
这两步分开,以避免频繁变化。试想一下,如果在你每一次添加、移除或更改一个文件的时候都要更新版本库,会麻烦和费时!相反,多次临时的和相关的步骤,如一次添加,可以“批处理”,来保持版本库是稳定和一致的。
即在暂存区的文件还是可以修改和被检测出是否与工作目录的内容是否一致, 等这个版本完成后再统一commit
到版本库即可。
Git的状态 : Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)。如果在加上**远程的git仓库(Remote Directory)**就可以分为四个工作区域。文件在这四个区域之间的转换关系如下:
git status
可以看出显示中间状态的index.html的字段是绿色的, 这是文件状态的标志
接下来将在暂存区的文件提交到本地的版本库
git commit -m '日志信息'
注意 : git commit 命令必须提供日志消息
或者
git commit -m '日志信息' \
--author='作者名'
这里会发现第一次使用Git提交文件到版本库就需要你告诉它你是"谁", 也就是提交作者的信息
根据它的提示进行配置提交作者的信息
git config --global user.email "[email protected]"
git config --global user.name "Your Name"
ok 配置完成
注意 : 这个配置每一个 Git 提交都会使用这些信息,它们会默认写入到你的每一次提交中。 如果需要为单独地对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行没有
--global
选项的命令来配置, 比如 :git config user.email "[email protected]"
, 这样系统会优先以这个信息写入到你这个项目的每一次提交中
git commit -m 'version 1'
提交成功, 提交成功后再输入
git status
, 你就会发现下面没有列出要提交的文件了
或者也可以在提交时加上作者的信息
git commit -m 'version 2' --author='zeny'
一旦在版本库里有了提交,就可以通过多种方式查看它们。有些Git命令显示出单独提交的序列,有的显示出一次提交的摘要,还有的则会显示出版本库里每次提交的所有细节。
git log
命令会产生版本库里一系列单独提交的历史git log
条目按照从最新的到最老的顺序罗列出来 ;每个条目显示了提交作者的名字和email地址,提交日期,变更的日志信息和提交的内部识别码。如果版本日志超过四个版本,
git log
默认只显示最新的4个版本, 如果要看更多按Enter
键或者上下方向键。按q
退出日志查看
如果需要看每次更为详细的信息可以使用git show 提交码
的命令来查看
git show 8ee42a41fc5c9c137a0d6b92d460a763c302a657
如果只是想看最新一次的提交的详细信息, 可以直接使用git show
不用加提交码, 它默认是最新一次的提交的详细信息
git show
还可以通过git show-branch
命令查看当前开发分支简洁的单行摘要
# 默认只列出最新的提交(即只显示一个版本)
git show-branch
# 查看额外的一个版本
git show-branch --more=1
# 查看额外的两个版本
git show-branch --more=2
因为通常每个版本都是不同的, 为了对比每个版本之间的差异, 可以使用
git diff
git diff 两个版本的ID名
(即提交码, 一段hash序列)
git diff 09df6e9c8b4322eff5d0cfa7180e3e5adf02b410 beafcaa9236ca6b3be74c3c77acfea4270ee47e8
名为
09df6e9c8b4322eff5d0cfa7180e3e5adf02b410
的第三次修订版本是早期版本,名为beafcaa9236ca6b3be74c3c77acfea4270ee47e8
的第四次修订版本是较新的版本。因此,每行新内容前面都有一个加号(+)
从版本库里删除一个文件与添加一个文件是类似的, 也是需要两步的, 第一步
git rm 文件名
; 第二步git commit -m '提交信息'
删除文件使用git rm 文件名
; git rm
表示你想要删除这个文件的意图并暂存这个变更
git rm filename
git rm
与git add
命令是相反的, 一个是删除, 一个是添加,git rm
只能删除提交到版本库的文件, 如果文件只是在工作目录或者暂存区则不能用该命令删除, 就要用rm
命令才能删除.但一旦删除版本库的文件, 工作目录的文件也会同步被删除
再使用git commit -m '提交信息'
在版本库里实现这个变更。
git commit -m '提交信息'
重命名文件 git mv 旧文件名, 新文件名
; 示你想要删除这个文件的意图并暂存这个变更
git mv filename newfilename
再使用git commit -m '提交信息'
在版本库里实现这个变更。
git commit -m '重命名xxx'
如果已经建立了一个版本库, 想要在别处同时建立相同的版本库, 就把那部分复制过来,就可以通过
git clone
命令创建一个完整的副本,或叫克隆。这就是世界各地的人们如何通过Git
在相同的文件上从事他们喜欢的项目,并保持与其他版本库同步。最常见的就是在GitHub上看到好的项目可以下载下来, 这本质就是创建版本库的副本, 然后就可以在副本中进行操作。
比如新建一个文件夹来存放一个从别处复制过来的项目, 现在本地的文件夹中实现克隆功能。
以刚刚的例子来实现
git clone 克隆的地址或路径
直接把那个项目复制到当前的文件夹中,
$ git clone /e/GitTraining/GitUsing
或者需要克隆到自己命名的项目中 git clone 克隆的地址或路径 新命名
$ git clone /e/GitTraining/GitUsing myhtml
建立一个副本,并命名为myhtml
虽然这两个Git版本库现在包含相同的对象、文件和目录,但是还有一些细微的差别。如果你想要探索其中的不同之处,可以使用以下这些命令。
ls -lsa
和diff -r
一旦复制了一个版本库,就可以修改这个复制版本、做出新的提交、查看它的日志和历史等。这是一个有着完整历史的版本库。
Git的配置文件全都是简单的.ini 文件风格的文本文件。
查看配置命令
# 列出在整组配置文件里共同查找的所有变量的设置值, 按q退出查看
git config -l
# 版本库特定的配置设置,这些设置拥有最高优先级。你需要进入某个Git仓库中才能让该选项命令生效
git config --local -l
# 查看系统config
git config --system -l
# 查看当前用户的配置
git config --global -l
配置文件路径 : 和很多工具一样,Git支持不同层次的配置文件。按照优先级递减的顺序。
.git/config
: 版本库特定的配置设置,可用--file
选项修改,是默认选项。这些设置拥有最高优先级。这些文件都在初始化一个版本库中生成一个.git
文件夹, 这个文件夹是隐藏文件夹, 里面就有config
配置文件。
C:\Users\Administrator\ .gitconfig
: 当前登录用户的配置文件, 是存放用户的配置文件 ,它的优先级是次高; 比如我的电脑是放在C:\Users\Lenovo\.gitconfig
中
Git\etc\gitconfig
:Git 安装目录下的配置文件, 是存放git系统的配置文件。它的优先级相对最低
# 要建立一个作者名和email地址,用于你对所有版本库的所有提交
git config --global user.name "zeny"
git config --global user.email "[email protected]"
# 若只设置一个版本库特定的名字和email地址,覆盖--global的设置,只需要省略--global标志
git config user.name "张三"
git config user.email "[email protected]"
# 可以使用--unset选项来移除设置
git config --unset --global user.email
git config --unset user.email
可以通过以下命令查看所有的配置以及它们所在的文件路径:
git config --list --show-origin
因为配置文件只是简单的文本文件,所以可以通过cat命令来查
看其内容
参考文献 :
《Git版本控制管理 第二版》人民邮电出版社
《Pro Git》Git官网的pdf下载 ; 在线中文文档查看
未完待续…