Git基础

git的基础配置

git config --global user.name "xxx"

git config --global user.emain "xxx"

如果要查看此时的所有配置可以使用git config --list

获取Git仓库

有两种方法可以取得Git项目仓库:在现有项目或目录下导入所有文件到Git中,或者从服务器克隆一个现有的git库

在现有目录中初始化仓库

我们可以使用git init来使当前项目目录创建一个.git的子目录,这个是git仓库的骨干

git add **.xx 可以使文件被跟踪,

git commit -m 'xxx描述信息' 提交

克隆现有的仓库

git clone *** 

或者git clone *** 想要创建的文件夹名称

记录每次更新到仓库

检查当前文件状态

我们可以使用:

git status 来查看当前仓库的情况(这个命令非常重要而且十分常用)

现在我们先在当前目录下创建一个README文件

echo 'My project' >README

如果要删除一个文件可以使用rm -f 文件名

然后再使用git status 发现如下信息

Untracked files:
(use "git add <file>..." to include in what will be committed)
README

nothing added to commit but untracked files present (use "git add" to track)

发现此时README没有被跟踪

跟踪新文件

git add README

可以添加README到跟踪,处于暂存状态

git add 命令使用文件或目录的路径作为参数;如果参数是目录的路径,该命令将递归地跟踪该目录下的所有文件。

暂存已修改文件

用git add xxx 也可以把已修改文件放到暂存区

状态简览

我们发现上面的git status信息有点繁冗,因此有一个比较好的命令:

git status -s

打印出来的信息我们发现有几种表示:

A:新添加到暂存区的文件

M:如果出现在左边文件被修改了且被放进了暂存区,如果出现在右边就没有被放进暂存区

??:新添加的未跟踪文件

忽略文件

我们可以创建一个.gitignore文件来忽略要跟踪的文件

里面的格式如下

文件 .gitignore 的格式规范如下:

  • 所有空行或者以  开头的行都会被 Git 忽略。

  • 可以使用标准的 glob 模式匹配。

  • 匹配模式可以以(/)开头防止递归。

  • 匹配模式可以以(/)结尾指定目录。

  • 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。

所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。 星号()匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。 使用两个星号() 表示匹配任意中间目录,比如a/**/z 可以匹配 a/za/b/z 或 a/b/c/z等。

查看已暂存和未暂存的修改

查看未暂存的修改

git diff

查看已暂存的修改

git diff --staged

提交更新

git commit

这个命令会打开编辑器,以便输入本次提交的说明

git commit -m "本次提交的说明"可以跳过

 

跳过使用暂存区域

git commit -a

这样Git就会自动把所有已经跟踪过的文件暂存起来一并提交

 

移除文件

如果我们只是简单地从工作目录中手工删除文件,会在未暂存清单里面看到

我们可以先把文件删除

使用:

git rm ***就可以在下一次提交时候彻底把文件不再纳入版本管理

 

移动文件

Git并不显示跟踪文件移动操作,如果要在Git中对文件改名可以这么做:

git mv file_from file_to

查看提交历史

在提交了若干更新之后,如果我们想回顾一下提交历史,完成这个任务最简单又有效的工具是

git log

git log 命令后面可以附加一些指令,例如

git log -p -2 就会显示最近两次commit的变化

如果我们想看到每次提交的简略的统计信息:

git log --stat

另外一个比较常用的是 --pretty可以指定使用不同于默认格式的方式展示提交历史

如short full fuller oneline 

使用的例子 git log --pretty=oneline(中间不能有空格)

最有意思的是format,这个可以定制显示的记录格式

git log --pretty=format:"%h - %an, %ar : %s"

%H

提交对象(commit)的完整哈希字串

%h

提交对象的简短哈希字串

%T

树对象(tree)的完整哈希字串

%t

树对象的简短哈希字串

%P

父对象(parent)的完整哈希字串

%p

父对象的简短哈希字串

%an

作者(author)的名字

%ae

作者的电子邮件地址

%ad

作者修订日期(可以用 --date= 选项定制格式)

%ar

作者修订日期,按多久以前的方式显示

%cn

提交者(committer)的名字

%ce

提交者的电子邮件地址

%cd

提交日期

%cr

提交日期,按多久以前的方式显示

%s

提交说明

当oneline 或format 与另一个--graph结合起来使用尤其有用

如git log --pretty=format:"%h %s" --graph

限制输出长度

之前我们已经用过git log -<n>限定显示最近两次提交

我们还可以限制时间

git log --since=2.weeks 

这个命令列出所有最近两周内的提交

选项说明

-(n)

仅显示最近的 n 条提交

--since--after

仅显示指定时间之后的提交。

--until--before

仅显示指定时间之前的提交。

--author

仅显示指定作者相关的提交。

--committer

仅显示指定提交者相关的提交。

--grep

仅显示含指定关键字的提交

-S

仅显示添加或移除了某个关键字的提交

撤销操作

有时候我们提交完了发现有几个文件没有添加,或者提交信息写错了,这时候我们可以运行带有--amend选项的提交命令尝试重新提交

git commit --amend

取消暂存的文件

git reset HEAD ***.***

这个命令可以把放进暂存区的文件拿出来

撤销对文件的修改

git checkout -- xxx.x

 

posted @ 2021-05-31 17:25  林舸  阅读(67)  评论(0)    收藏  举报