GitHub基础操作

GitHub基础操作

1.1. 准备工作

首先需要在需要版本管理的文件夹下,打开git命令控制台。
输入git init 这样就可以完成了git的初始化
接下来进行版本管理的一系列操作。

1.1.1. 版本管理的相关概念

暂存区(staged)
首先需要请记住,你工作目录下的每一个文件都不外乎这两种状态:已跟踪或未跟踪
已跟踪的文件是指那些被纳入了版本控制的文件,在上一次快照中有它们的记录。
对于已跟踪的文件,在工作一段时间后,它们的状态可能是未修改已修改已放入暂存区
工作目录中除已跟踪文件以外的所有其它文件都属于未跟踪文件,它们既不存在于上次快照的记录中,也没有被放入暂存区。
初次克隆某个仓库的时候,工作目录中的所有文件都属于已跟踪文件,并处于未修改状态。
编辑过某些文件之后,由于自上次提交后你对它们做了修改,Git 将它们标记为已修改文件。我们逐步将这些修改过的文件放入暂存区,然后提交所有暂存了的修改,如此反复。

对于未跟踪的文件的版本管理,那就需要使用git add fileName,将fileName添加到下一次提交中。
对于已跟踪的文件未修改的文件,不需要什么操作
对于已跟踪的文件已修改的文件,那就需要使用git add fileName,将fileName添加到下一次提交中。

检查当前文件状态
可以用 git status 命令查看哪些文件处于什么状态。

$ git status -s
 M README
MM Rakefile
A  lib/git.rb
M  lib/simplegit.rb
?? LICENSE.txt

?? 表示文件为新添加的未跟踪的文件
A 新添加到暂存区中的文件前面有 A 标记,
修改过的文件前面有 M 标记。
你可能注意到了 M 有两个可以出现的位置,
出现在右边的 M 表示该文件被修改了但是还没被放入暂存区,
出现在靠左边的 M 表示该文件被修改了并被放入了暂存区。

1.1.1.1. git add 命令

这是个多功能命令:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等。 将这个命令理解为“添加内容到下一次提交中”
picture

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

  • 使用git diff
    要查看尚未暂存的文件更新了哪些部分,不加参数直接输入 git diff。此命令比较的是工作目录中当前文件和暂存区域快照之间的差异。也就是修改之后还没有暂存起来的变化内容。
  • 使用git diff --staged
    这条命令将比对已暂存文件与最后一次提交的文件差异。也可以用git diff --cached

1.1.3. 提交更新

1.1.3.1. 提交更新简介

git commit
如果直接输入这条命令,就会打开一个记事本,输入本次提交的说明。

$ git commit -m "Story 182: Fix benchmarks for speed"
[master 463dc4f] Story 182: Fix benchmarks for speed
 2 files changed, 2 insertions(+)
 create mode 100644 README

可以看到,提交后它会告诉你,当前是在哪个分支(master)提交的,本次提交的完整 SHA-1 校验和是什么(463dc4f),以及在本次提交中,有多少文件修订过,多少行添加和删改过

1.1.3.2. 跳过暂存区提交代码

跳过暂存区,即可以不使用git add fileName将已跟踪的文件添加到暂存区。

git commit -a -m “skip cached commit code”

1.1.3.3. 移除文件

在git中,移除文件,必须从暂存区域中移除文件,即使用git rm命令,而不是使用rm。
如果是使用rm,那么在提交的时候,会出现Changes not staged for commit(未暂存清单)
应该使用git rm fileName。如果删除去,已经修改过并且放在暂存区了,就必须增加强制删除选项-f
如果你想让文件保留在磁盘,但是并不想让 Git 继续跟踪。那么就是用如下命令:
git rm --cached fileName

1.1.3.4. 移动文件

git mv sourceFile destinationFile
将sourceFile移动至destinationFile
git mv命令相当于三条命令
mv sourceFile destinationFile
git rm sourceFile
git add destinationFile

1.1.3.5. 查看文件列表

git ls-files 命令是用来查看暂存区中文件信息
常用参数
参数说明(括号里是简写)
–cached(-c)显示暂存区中的文件,git ls-files命令默认的参数
–deleted(-d)显示删除的文件
–modified(-m) 显示修改过的文件
–other(-o)显示没有被git跟踪的文件
–stage(-s) 显示mode以及文件对应的Blob对象,进而我们可以获取暂存区中对应文件里面的内容。

1.2. gitignore

在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如果没有这个文件,则需自己手工建立此文件)。

#               表示此为注释,将被Git忽略
*.a             表示忽略所有 .a 结尾的文件
!lib.a          表示但lib.a除外
/TODO           表示仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/          表示忽略 build/目录下的所有文件,过滤整个build文件夹;
doc/*.txt       表示会忽略doc/notes.txt但不包括 doc/server/arch.txt
 
bin/:           表示忽略当前路径下的bin文件夹,该文件夹下的所有内容都会被忽略,不忽略 bin 文件
/bin:           表示忽略根目录下的bin文件
/*.c:           表示忽略cat.c,不忽略 build/cat.c
debug/*.obj:    表示忽略debug/io.obj,不忽略 debug/common/io.obj和tools/debug/io.obj
**/foo:         表示忽略/foo,a/foo,a/b/foo等
a/**/b:         表示忽略a/b, a/x/b,a/x/y/b等
!/bin/run.sh    表示不忽略bin目录下的run.sh文件
*.log:          表示忽略所有 .log 文件
config.php:     表示忽略当前路径的 config.php 文件
 
/mtk/           表示过滤整个文件夹
*.zip           表示过滤所有.zip文件
/mtk/do.c       表示过滤某个具体文件
 
被过滤掉的文件就不会出现在git仓库中(gitlab或github)了,当然本地库中还有,只是push的时候不会上传。

需要注意的是,gitignore还可以指定要将哪些文件添加到版本管理中,如下:

!*.zip
!/mtk/one.txt

唯一的区别就是规则开头多了一个感叹号,Git会将满足这类规则的文件添加到版本管理中。为什么要有两种规则呢?
想象一个场景:假如我们只需要管理/mtk/目录中的one.txt文件,这个目录中的其他文件都不需要管理,那么.gitignore规则应写为::

/mtk/*
!/mtk/one.txt

假设我们只有过滤规则,而没有添加规则,那么我们就需要把/mtk/目录下除了one.txt以外的所有文件都写出来!
注意上面的/mtk/*不能写为/mtk/,否则父目录被前面的规则排除掉了,one.txt文件虽然加了!过滤规则,也不会生效!


还有一些规则如下:
fd1/*
说明:忽略目录 fd1 下的全部内容;注意,不管是根目录下的 /fd1/ 目录,还是某个子目录 /child/fd1/ 目录,都会被忽略;

/fd1/*
说明:忽略根目录下的 /fd1/ 目录的全部内容;

/*
!.gitignore
!/fw/
/fw/*
!/fw/bin/
!/fw/sf/
说明:忽略全部内容,但是不忽略 .gitignore 文件、根目录下的 /fw/bin/ 和 /fw/sf/ 目录;注意要先对bin/的父目录使用!规则,使其不被排除。

1.3. 查看提交历史

查看提交历史
①git log
②git log -p -2
选项-p,它会显示每次提交所引入的差异
输出选项-2,它会仅显示最近提交的两次
③git log --stat
你想看到每次提交的简略统计信息,可以使用–stat 选项
④git log --pretty=format:"%an, %cd, %s"
–pretty。 这个选项可以使用不同于默认格式的方式展示提交历史

选项说明
%an作者姓名
%ae作者电邮
%ae作者的电子邮件地址
%ad作者修订日期(可以用 --date= 选项定制格式)
%ar作者修订日期,按多久以前的方式显示
%cn提交者(committer)的名字
%ce提交者的电子邮件地址
%cd提交日期
%cr提交日期(距今多长时间)
%s提交说明

⑤git log --since=2.weeks
–since 可以查看最近一段时间提交的记录
⑥git log --after=“2018-05-21 00:00:00”–before=“2018-05-25 23:59:59”
–after --before 可以查看2018-05-21 00:00:00至2018-05-25 23:59:59这段时间,提交的记录
⑦当 oneline 或 format 与另一个 log 选项 --graph 结合使用时尤其有用。 这个选项添加了一些 ASCII 字符串来形象地展示你的分支、合并历史。

选项说明
-p按补丁格式显示每个提交引入的差异。
–stat显示每次提交的文件修改统计信息。
–shortstat只显示 --stat 中最后的行数修改添加移除统计。
–name-only仅在提交信息后显示已修改的文件清单。
–name-status显示新增、修改、删除的文件清单。
–abbrev-commit仅显示 SHA-1 校验和所有 40 个字符中的前几个字符。
–relative-date使用较短的相对时间而不是完整格式显示日期(比如,“2 weeks ago”)。
–graph在日志旁以 ASCII 图形显示分支与合并历史。
–pretty使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(用来定义自己的格式)。

1.4. 资料

Github手册

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值