Git入门教程二

原文链接:https://www.runoob.com/git/git-basic-operations.html

Git基本操作

Git 的工作就是创建和保存你项目的快照及与之后的快照进行对比。本章将对有关创建与提交你的项目快照的命令作介绍。

获取与创建项目命令

git init
用 git init 在目录中创建新的 Git 仓库。 你可以在任何时候、任何目录中这么做,完全是本地化的。
在目录中执行 git init,就可以创建一个 Git 仓库了。比如我们创建 rundo 项目:

$ mkdir rundo
$ cd runoob/
$ git init
Initialized empty Git repository in Initialized empty Git repository in C:/Users/haohuihai/Desktop/git/rundo/.git/
# 在Desktop/git/rundo/.git/ 目录初始化空 Git 仓库完毕。

在这里插入图片描述
git clone
使用 git clone 拷贝一个 Git 仓库到本地,让自己能够查看该项目,或者进行修改。
如果你需要与他人合作一个项目,或者想要复制一个项目,看看代码,你就可以克隆那个项目。 执行命令

 git clone [url]

[url] 为你想要复制的项目地址,就可以了。
例如我们克隆 Github 上的项目:
克隆完成后 当前目录生成一个目录

$ git clone git@gitee.com:haohh/tests.git
Cloning into 'tests'...
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 5 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (5/5), done.

在这里插入图片描述
克隆完成后,在当前目录下会生成一个tests目录:

$ cd tests/
$ ls -a
./  ../  .git/  LICENSE  README.en.md  README.md

在这里插入图片描述
上述操作将复制该项目的全部记录

$ ls
config       HEAD    index  logs/     packed-refs
description  hooks/  info/  objects/  refs/

在这里插入图片描述
Git 会按照你提供的 URL 所指示的项目的名称创建你的本地项目目录。 通常就是该 URL 最后一个 / 之后的项目名称。如果你想要一个不一样的名字, 你可以在该命令后加上你想要的名称。

基本快照

Git 的工作就是创建和保存你的项目的快照及与之后的快照进行对比
git add
git add 命令可将该文件添加到暂存区

$ touch hhh  // 新建hhh文件
$ touch hao  // 新建hao文件
$ ls    // 查看文件列表
hao  hhh  LICENSE  README.en.md  README.md
$ git status -s    // 查看发生变动的文件
?? hao
?? hhh

git status 命令用于查看项目的当前状态。
接下来我们执行 git add 命令来添加文件:

$ git add hao hhh

现在我们再执行 git status,就可以看到这两个文件已经加上去了。

$ git status -s
A  hao
A  hhh

在这里插入图片描述

?为未添加上去 ,A为以添加上去的
现在我们修改 README 文件:

$ vim README

在 README 添加以下内容:## Runoob Git 测试,然后保存退出。(按Esc,然后输入":wq"命令,保存并推出vim编辑器)
再执行一下 git status:

$ git status -s
A  hao
A  hhh
?? README

保存所有的文件

$ git add .

查看

$ git status -s
A  README
A  hao
A  hhh

在这里插入图片描述
git status
git status 以查看在你上次提交之后是否有修改。
我演示该命令的时候加了 -s 参数,以获得简短的结果输出。如果没加该参数会详细输出内容:

$ git status
On branch master
Your branch is up to date with 'origin/master'.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
        new file:   README
        new file:   hao
        new file:   hhh

git diff
执行 git diff 来查看执行 git status 的结果的详细信息。
git diff 命令显示已写入缓存与已修改但尚未写入暂存区的改动的区别
git diff 有两个主要的应用场景。
被修改但未添加进暂存区:git diff
查看已被存放在暂存区的改动: git diff --cached
查看已存在暂存的与未在暂存区的所有改动:git diff HEAD
显示摘要而非整个 diff:git diff --stat

在 hao 文件中输入以下内容:

<?php
echo '尝试';
?>
$ git status -s
A  README
AM hao
A  hhh
$ git diff
diff --git a/hao b/hao
index e69de29..1095ebe 100644
--- a/hao
+++ b/hao
@@ -0,0 +1,3 @@
+<?php
+echo '尝试学习'
+?>

在这里插入图片描述
git status 显示你上次提交更新后的更改者写入暂存区的改动, 而 git diff 一行一行地显示这些改动具体是啥。
接下来我们来查看下 git diff --cached 的执行效果:
在这里插入图片描述
git commit
使用 git add 命令将想要快照的内容写入暂存区, 而执行 git commit 将暂存区内容添加到版本库中。
Git 为你的每一个提交都记录你的名字与电子邮箱地址,所以第一步需要配置用户名和邮箱地址。

$ git config --global user.name 'haohhh'
$ git config --global user.email test@rundo.com

接下来我们写入缓存,并提交对 hao 的所有改动。在首个例子中,我们使用 -m 选项以在命令行中提供提交注释.

$ git add hao
$ git status -s
A  README
A  hao
$ git commit -m '第一次版本提交'
[master 3ea1336] 第一次版本提交
 3 files changed, 4 insertions(+)
 create mode 100644 README
 create mode 100644 hao
 create mode 100644 hhh

现在我们已经记录了快照。如果我们再执行 git status:

$ git status 
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)
nothing to commit, working tree clean

这里如果使用git status -s,则不会输出任何东西

如果你觉得 git add 提交缓存的流程太过繁琐,Git 也允许你用 -a 选项跳过这一步。命令格式如下:

git commit -a

我们先修改hao 文件为以下内容:

<?php
echo '测试';
echo '测试';
?>

再执行以下命令:

$ git commit -am '修改 hao 文件'
[master 71ee2cb] 修改 hao 文件
 1 file changed, 1 insertion(+)

git reset HEAD

git reset HEAD 命令用于取消已提交到暂存区的内容。
我们先改动文件 README 文件,内容如下

# Runoob Git 测试 
#测试

hao文件修改为:

<?php
echo '测试';
echo '测试';
echo '测试';
?>

现在两个文件修改后,都提交到了暂存区,我们现在要取消其中一个的暂存,操作如下:

$ git status -s
 M README
 M hao
$ git add .
$ git status -s
M  README
M  hao
$ git reset HEAD hao
Unstaged changes after reset:
M       hao
$ git status -s
M  README
 M hao

现在你执行 git commit,只会将 README 文件的改动提交,而 hao 是没有的。

$ git commit -m '修改'
[master a98a86b] 修改
 1 file changed, 1 insertion(+)
$ git status -s
 M hao

可以看到 hao 文件的修改并未提交。
这时我们可以使用以下命令将hao 的修改提交:

$  git commit -am '修改 hao 文件'
[master 5f08cf2] 修改 hao 文件
 1 file changed, 2 insertions(+)
$ git status
On branch master
Your branch is ahead of 'origin/master' by 3 commits.
  (use "git push" to publish your local commits)
nothing to commit, working tree clean

简而言之,执行 git reset HEAD 以取消之前 git add 添加,但不希望包含在下一提交快照中的缓存。
git rm
如果只是简单地从工作目录中手工删除文件,运行 git status 时就会在 Changes not staged for commit 的提示。
要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除,然后提交。可以用以下命令完成此项工作

git rm <file>

如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f

git rm -f <file>

如果把文件从暂存区域移除,但仍然希望保留在当前工作目录中,换句话说,仅是从跟踪清单中删除,使用 --cached 选项即可

git rm --cached <file>

如我们删除 hao文件:

$ git rm hao 
rm 'hao'
$ ls
hhh  LICENSE  README  README.en.md  README.md

不从工作区中删除文件:

$ git rm --cached README 
rm 'README'
$ ls
hhh  LICENSE  README  README.en.md  README.md

可以递归删除,即如果后面跟的是一个目录做为参数,则会递归删除整个目录中的所有子目录和文件:

git rm –r * 

进入某个目录中,执行此语句,会删除该目录下的所有文件和子目录

git mv

git mv 命令用于移动或重命名一个文件、目录、软连接。
我们先把刚移除的 README 添加回来:

$ git add README 

然后对其重名:

$ git mv README  README.md
$ ls
README.md

关于文件内容修改的命令:

vim  <file> 

进入文件编辑界面 按a
开始编辑内容 编辑完成 按Esc(退出),输入:+x或:+wq 按回车
退出编辑
文件内容编辑完成

将node_module添加到忽略文件无效的解决办法

  1. 本地删除 node_modules 包
  2. 将删除的node_modules 包进行 git add,git commit,git push三部曲(这一步的目的是把远程的node_modules 删除,这也是关键一步)
  3. 重新npm install下载 node_modules
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值