GIt学习——git 基础命令 (一)

目录

获取 Git 仓库

在现有目录中初始化仓库

 克隆现有的仓库

记录每次更新到仓库

检查当前文件状态

跟踪新文件

暂存已修改文件

理解git add 命令

 git 忽略文件

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

提交文件git commit 

跳过使用暂存区域

移除文件

重命名文件


基础知识是日常最基本的行为,有:初始化仓库、追踪文件、暂存或提交更改;演示如何配置 Git 来忽略指定的文件和文件模式、如何迅速而简单地撤销错误操作、如何浏览你的项目的历史版本以及不同提交(commits)间的差异、如何向你的远程仓库推送(push)以及如何从你的远程仓库拉取(pull)文件

获取 Git 仓库

有两种取得 Git 项目仓库的方法。 第一种是在现有项目或目录下导入所有文件到 Git 中; 第二种是从一个服务器克隆一个现有的 Git 仓库。

在现有目录中初始化仓库

1. 在当前目录下执行 git init 命令;

2. 把该文件加入版本管理;

3. 提交文件;

 克隆现有的仓库

$ git clone 仓库url

仓库url 有https 和ssh 两种传输协议,两种url 格式存在差异;

记录每次更新到仓库

工作目录下的每一个文件都不外乎这两种状态:已跟踪或未跟踪。 已跟踪的文件是指那些被纳入了版本控制的文件,在上一次快照中有它们的记录,在工作一段时间后,它们的状态可能处于未修改,已修改或已放入暂存区。 工作目录中除已跟踪文件以外的所有其它文件都属于未跟踪文件,它们既不存在于上次快照的记录中,也没有放入暂存区。 初次克隆某个仓库的时候,工作目录中的所有文件都属于已跟踪文件,并处于未修改状态。

编辑过某些文件之后,由于自上次提交后你对它们做了修改,Git 将它们标记为已修改文件。 我们逐步将这些修改过的文件放入暂存区,然后提交所有暂存了的修改,如此反复。所以使用 Git 时文件的生命周期如下:

 

他们之间的生命周期状态转化图例。

检查当前文件状态

要查看哪些文件处于什么状态,可以用 git status [-s] 命令。 如果在克隆仓库后立即使用此命令,会看到类似这样的输出:

$ git status
On branch master
nothing to commit, working directory clean

这说明你现在的工作目录相当干净。换句话说,所有已跟踪文件在上次提交后都未被更改过。 此外,上面的信息还表明,当前目录下没有出现任何处于未跟踪状态的新文件,否则 Git 会在这里列出来。 最后,该命令还显示了当前所在分支,并告诉你这个分支同远程服务器上对应的分支没有偏离。 现在,分支名是 “master”,这是默认的分支名。

 

跟踪新文件

使用命令 git add 开始跟踪一个文件。 所以,要跟踪 README 文件,运行:

$ git add README

此时再运行 git status 命令,会看到 README 文件已被跟踪,并处于暂存状态:

$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   README

只要在 Changes to be committed 这行下面的,就说明是已暂存状态。 如果此时提交,那么该文件此时此刻的版本将被留存在历史记录中。另外,

git add all 是跟踪所有文件

由于文件跟踪、添加比较麻烦,所以这时候可以借助GUI 工具,比如你的编程IDE、或者其他的,可以通过可视化批量进行,而且会有颜色区分。

暂存已修改文件

现在我们来修改一个已被跟踪的文件。 如果你修改了一个名为 CONTRIBUTING.md 的已被跟踪的文件,然后运行 git status 命令,

 文件 readme.txt 出现在 Changes not staged for commit 这行下面,说明已跟踪文件的内容发生了变化,但还没有放到暂存区。 要暂存这次更新,需要运行 git add 命令。

理解git add 命令

我们用它追踪文件,或把已追踪过的文件放入暂存区;这个命令不应该从字面上去“添加文件” (类似svn),应该从git的三个工作目录:工作区、暂存区、仓库。他是代表:“添加内容到下一次提交中”而不是“将一个文件添加到项目中”要更加合适。

 git 忽略文件

以Android工程为例,我们找到工程根目录下的 .gitignore 文件,

*.iml
.gradle
local.properties
.DS_Store
build
captures
*.apk
.idea/misc.xml
.idea/modules.xml
.idea/
*.jks

需要忽略的文件都是根据不同的语言来特性来的,java 工程、android工程、js 工程都是不一样的,另外,我们可以再IDE中去编辑相关的忽略文件代码。同时,我们应该掌握一些规则,即一些正则表达式的用法。所以说正则表达式的语法需要掌握,在很多地方都会用到。

GitHub 有一个十分详细的针对数十种项目及语言的 .gitignore 文件列表,你可以在 https://github.com/github/gitignore 找到它.
Android的忽略文件规则:https://github.com/github/gitignore/blob/master/Android.gitignore

 

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

查看未暂存的修改(没有执行过git add):

$ git diff
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 8ebb991..643e24f 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -65,7 +65,8 @@ branch directly, things can get messy.
 Please include a nice description of your changes when you submit your PR;
 if we have to read the whole diff to figure out why you're contributing
 in the first place, you're less likely to get feedback and have your change
-merged in.
+merged in. Also, split your changes into comprehensive chunks if your patch is
+longer than a dozen lines.

此命令比较的是工作目录中当前文件和暂存区域快照之间的差异, 也就是修改之后还没有暂存起来的变化内容。

查看已暂存

若要查看已暂存的将要添加到下次提交里的内容,可以用 git diff --cached 命令。(Git 1.6.1 及更高版本还允许使用 git diff --staged,效果是相同的,但更好记些。)

$ git diff --staged
diff --git a/README b/README
new file mode 100644
index 0000000..03902a1
--- /dev/null
+++ b/README
@@ -0,0 +1 @@
+My Project

 注意:一般的我们编辑器会自动执行 git add 命令对于一些修改过的文件,同时用命令行查看文件差异不直观,所以这个命令就用GUI的操作比较好。

提交文件git commit 

提交文件就是把暂存区文件加入到仓库。现在的暂存区域已经准备妥当可以提交了。 在此之前,请一定要确认还有什么修改过的或新建的文件还没有 git add 过,否则提交的时候不会记录这些还没暂存起来的变化。 这些修改过的文件只保留在本地磁盘。 所以,每次准备提交前,先用 git status 看下,是不是都已暂存起来了, 然后再运行提交命令 git commit

$ git commit -m 'init respon'
[master (root-commit) b4b55db] init respon
 2 files changed, 8 insertions(+)
 create mode 100644 gitLearn/abc.txt
 create mode 100644 "git\345\255\246\344\271\240\350\256\260\345\275\225.txt"

跳过使用暂存区域

假如说,我们每次对修改的文件都需要先添加到暂存区(直接提交会出错),再到本地仓库,这个过程有些繁琐;这时候我们可以跳过暂存区,直接用 

git commit -a -m ‘提交日志信息’

移除文件

想把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。 换句话说,你想让文件保留在磁盘,但是并不想让 Git 继续跟踪。 当你忘记添加 .gitignore 文件,不小心把一个很大的日志文件或一堆 .a 这样的编译生成文件添加到暂存区时,可以使用:

git rm --cached fileName  
git rm --cached \*~ 删除以~结尾的所有文件 

重命名文件

要在 Git 中对文件改名,可以这么做:

$ git mv file_from file_to
$ git mv README.md README
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    renamed:    README.md -> README

其实,运行 git mv 就相当于运行了下面三条命令:

$ mv README.md README
$ git rm README.md
$ git add README
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值