Git基本操作(详,小白专用)

版权声明:转载请注明出处 https://blog.csdn.net/fan521dan/article/details/89915920

Git基本操作(详,小白专用)

Git基本常用命令

  • mkdir 创建文件夹
  • touch 创建文件
  • ls 查看当前目录下文件/文件夹(不包含隐藏)
  • ls -a 查看目录下所有文件/文件夹(包含隐藏)
  • rm <filename> 移除文件
  • rm -r * 删除整个目录中的所有子目录和文件
  • vim <filename> 编辑文件
  • cd <foldername> 进入文件夹
  • cd .. 返回上一级文件夹

Git基本配置

  • git config可以配置git的参数,可以使用git config --list查看已经配置的git参数。
  • 其中有三个级别的保存位置:
    • --system 所有用户(本系统)
    • --global 当前用户(全局)
    • --local 本地配置(当前目录),默认

配置用户名及邮箱

  • 在使用Git提交前,必须配置用户名和邮箱,这些信息会永久保存到历史记录中。

设置Git默认使用的文本编辑器

  • 一般可能会是 Vi 或者 Vim。如果你有其他偏好,比如 Emacs 的话,可以重新设置::
    • git config --global core.editor emacs

设置差异分析工具

  • 在解决合并冲突时使用哪种差异分析工具。比如要改用 vimdiff 的话:
    • git config --global merge.tool vimdiff
    • Git 可以理解 kdiff3,tkdiff,meld,xxdiff,emerge,vimdiff,gvimdiff,ecmerge,和 opendiff 等合并工具的输出信息

Git版本信息

  • 查看自带的版本
    • git --version
  • 移除原来的版本
    • yum remove git

Git创建仓库

  • Git 使用 git init 命令来初始化一个 Git 仓库
  • 在执行完成 git init 命令后,Git 仓库会生成一个 .git 目录
  • 例:git init
    • 该命令执行完后会在当前目录生成一个 .git 目录。
  • 也可以自己指定生成的仓库目录:git init newname
    • 该命令执行完后会在当前目录生成一个名为 newname 的文件夹,并把这个文件夹作为仓库,该文件下包含一个 .git 的文件夹

Git拷贝仓库

  • 我们使用 git clone 从现有 Git 仓库中拷贝项目克隆仓库的命令格式为:
    • git clone <repo> <directory>
    • 参数说明:
      • repo:Git 仓库。
      • directory:本地目录。
    • 例:git clone https://github.com/Ebookchain/ebookchain.org.git ebookchain
  • git clone 时,可以所用不同的协议,包括 ssh, git, https 等,其中最常用的是 ssh,因为速度较快,还可以配置公钥免输入密码。各种写法如下:

Git 基本快照

git add

  • touch命令可将该文件添加到缓存,如我们添加以下两个文件:
$ touch README
$ touch hello.php
$ ls
README        hello.php
$ git status -s
?? README
?? hello.php
  • git status 命令用于查看项目的当前状态
    • git status
      • 查看在你上次提交之后是否有修改
    • git status -s
      • 获得简短的结果输出。如果没加该参数会详细输出内容
  • 接下来我们执行 git add 命令来添加文件:
$ git add README hello.php 
  • 现在我们再执行 git status,就可以看到这两个文件已经加上去了。
$ git status -s
A  README
A  hello.php
  • 新项目中,添加所有文件很普遍,我们可以使用通配符来批量添加文件

    • git add .
      • 添加当前项目的所有文件
    • git add *.txt
      • 添加后缀为 .txt的所有文件
  • 现在我们修改 README 文件:

    • $ vim README
    • 在 README 添加以下内容:
      • # Demo Git 测试
    • 然后保存退出。
  • 再执行一下 git status:

$ git status -s
AM README
A  hello.php
  • “AM” 状态的意思是,这个文件在我们将它添加到缓存之后又有改动。
  • 改动后我们再执行 git add 命令将其添加到缓存中:
$ git add .
$ git status -s
A  README
A  hello.php

当你要将你的修改包含在即将提交的快照里的时候,需要执行 git add。

git diff

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

示例
在 hello.php 文件中输入以下内容:

<?php
echo 'demo例子:www.demo.com';
?>
$ git status -s
A  README
AM hello.php
$ git diff
diff --git   a/hello.php       b/hello.php
index e69de29..69b5711 100644
--- a/hello.php
+++ b/hello.php
@@ -0,0 +1,3 @@
+<?php
+echo 'demo例子:www.demo.com';
+?>
  • git status 显示你上次提交更新后的更改或者写入缓存的改动, 而 git diff 一行一行地显示这些改动具体是啥。
  • 接下来我们来查看下 git diff --cached 的执行效果:
$ git add hello.php 
$ git status -s
A  README
A  hello.php
$ git diff --cached
diff --git a/README b/README
new file mode 100644
index 0000000..8f87495
--- /dev/null
+++ b/README
@@ -0,0 +1 @@
+# Runoob Git 测试
diff --git a/hello.php b/hello.php
new file mode 100644
index 0000000..69b5711
--- /dev/null
+++ b/hello.php
@@ -0,0 +1,3 @@
+<?php
+echo 'demo例子:www.demo.com';
+?>

git commit

  • 使用 git add 命令将想要快照的内容写入缓存区。
  • 而执行 git commit 将缓存区内容添加到仓库中。
  • Git 为你的每一个提交都记录你的名字与电子邮箱地址,所以第一步需要配置用户名和邮箱地址。
    • $ git config --global user.name 'test'
    • $ git config --global user.email [email protected]
  • 接下来我们写入缓存,并提交对 hello.php 的所有改动。在首个例子中,我们使用 -m 选项以在命令行中提供提交注释。
$ git add hello.php
$ git status -s
A  README
A  hello.php
$ git commit -m '第一次版本提交'
[master (root-commit) d32cf1f] 第一次版本提交
2 files changed, 4 insertions(+)
create mode 100644 README
create mode 100644 hello.php
  • 现在我们已经记录了快照。如果我们再执行 git status:
$ git status
# On branch master
nothing to commit (working directory clean)
  • 以上输出说明我们在最近一次提交之后,没有做任何改动
  • 如果你没有设置 -m 选项
  • Git会默认打开vim 让你添加信息,如果不添加是无法提交的

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

  • 我们先修改 hello.php 文件为以下内容:
<?php
echo 'demo例子:www.demo.com';
echo 'demo例子:www.demo.com';
?>
  • 再执行以下命令:
git commit -am '修改 hello.php 文件'
[master 71ee2cb] 修改 hello.php 文件
 1 file changed, 1 insertion(+)

git reset HEAD

  • git reset HEAD 命令用于取消已缓存的内容
    我们先改动文件 README 文件,内容如下:
# demo Git 测试
# demo例子
  • hello.php 文件修改为:
<?php
echo 'demo例子:www.demo.com';
echo 'demo例子:www.demo.com';
echo 'demo例子:www.demo.com';
?>

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

$ git status -s
 M README
 M hello.php
$ git add .
$ git status -s
M  README
M  hello.pp
$ git reset HEAD hello.php 
Unstaged changes after reset:
M    hello.php
$ git status -s
M  README
 M hello.php
  • 现在执行 git commit,只会将 README 文件的改动提交,而 hello.php 是没有的。
$ git commit -m '修改'
[master f50cfda] 修改
 1 file changed, 1 insertion(+)
$ git status -s
 M hello.php
  • 可以看到 hello.php 文件的修改并未提交。
  • 这时我们可以使用以下命令将 hello.php 的修改提交:
$ git commit -am '修改 hello.php 文件'
[master 760f74d] 修改 hello.php 文件
 1 file changed, 1 insertion(+)
$ git status
On branch master
nothing to commit, working directory 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>

如我们删除 hello.php文件:

$ git rm hello.php 
rm 'hello.php'
$ ls
README

不从工作区中删除文件:

$ git rm --cached README 
rm 'README'
$ ls
README
  • 可以递归删除,即如果后面跟的是一个目录做为参数,则会递归删除整个目录中的所有子目录和文件:
    • git rm –r *
    • 进入某个目录中,执行此语句,会删除该目录下的所有文件和子目录。

Git标签

  • 发布一个版本时,我们通常先在版本库中打一个标签(tag),这样就唯一确定了打标签时刻的版本
  • 每提交(commit)一次,即可打一次标签,方便管理和查询信息
  • 创建标签
    • git tag v1.0
  • 查看已有标签
    • git tag
  • 删除标签
    • git tag -d v1.1
  • 查看此版本所修改的内容
    • git tag show v1.0
  • 创建一个带注解的标签
    • git tag -a v1.1 此方法会自动打开vim,让你编辑注解信息
    • git tag -a v1.2 -m "demo.com标签"
  • 查看提交历史时显示标签
    • 只需加上git log --decorate即可
    • 例:git log --oneline --decorate --graph
  • 给之前提交的版本追加标签
    • 通过git long --oneline找到版本号
    • git tag -a v0.9 85fc7e7 -m '之前的版本'

Git查看提交历史

  • 在使用 Git 提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,我们可以使用 git log 命令查看。
  • git log 查看历史记录
  • git log --oneline 查看历史记录的简洁的版本
  • 用 --graph 选项,查看历史中什么时候出现了分支、合并
    • git log --oneline --graph
    • 可以更清楚明了地看到何时工作分叉、又何时归并。
  • 用 '–reverse’参数来逆向显示所有日志
    • git log --reverse --oneline
  • 如果只想查找指定用户的提交日志可以使用命令:git log --author , 例如,要找 Git 源码中 Linus 提交的部分:
    • git log --author=Linus --oneline -5
    • 代表 查找用户名为 Linus 的简洁版的前5条历史记录
  • 如果要指定日期,可以执行几个选项:–since(之后) 和 --after,也可以用 --until(之前) 和 --before 。
  • 例如:
    • git log --oneline --after={2019-05-07/09:00}
      • 2019.5.7日 9点之后的所有提交
    • git log --oneline --before={3.weeks.ago}
      • 三周前的所有提交
    • git log --oneline --before={2019-05-07/12:00} --after={2019-05-07/09:00}
      • 2019.5.7日 9点之后并且在12点之前的所有提交
      • 多个条件用 且 表示

猜你喜欢

转载自blog.csdn.net/fan521dan/article/details/89915920
今日推荐