300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Git 笔记:基本操作工作流程

Git 笔记:基本操作工作流程

时间:2020-05-15 02:56:50

相关推荐

Git 笔记:基本操作工作流程

1 git 工作流程

一般工作流程如下:

克隆 Git 资源作为工作目录。在克隆的资源上添加或修改文件。如果其他人修改了,你可以更新资源。在提交前查看修改。提交修改。在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。

2 Git 基本操作

Git 的工作就是创建和保存你项目的快照,以及与之后项目的快照进行对比。

2.1 git 创建仓库

使用git init命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以git init是使用 Git 的第一个命令。

所有 Git 需要的数据和资源都存放在创建的.get文件夹中。

git init

会在当前目录下创建一个.git文件夹(前面说的版本库)

git init new

在当前目录下新建一个new 文件夹,在new文件夹里面创建一个.git 文件夹

2.2git clone

使用git clone从现有 Git 仓库中拷贝项目XXX

git clone XXXgit clone /liuwj2000/ls.gitgit clone /liuwj2000/ls

如果我们需要拷贝到指定的目录YYY,可以使用如下命令

git clone XXX YYY

2.3 git add

git add命令可将该文件添加到暂存区。

如果当前目录下有几个文件想要纳入版本控制,需要先用 git add 命令告诉 Git 开始对这些文件进行跟踪,然后用git commit提交:

git add *.cgit add READMEgit commit -m "初始化项目版本"

以上命令将目录下以 .c 结尾及 README 文件提交到仓库中。

2.3.1 添加多个文件

git add [file1] [file2] ...

2.3.2添加指定目录到暂存区(包括子目录):

git add [dir]

2.3.3添加当前目录下的所有文件到暂存区:

git add .

2.4 git status

git status 命令用于查看在你上次提交之后是否有对文件进行再次修改。

比如我创建了3个文件 1.txt 2.txt 3.txt,将 1.txt和2.txt git add 到暂存区,然后我在命令行中输入

git status

那么有:

2.4.1 git status -s

获得简短的输出结果

??表示没有git add

A表示 已经git add了

2.4.2 修改了已经git add 的file,但是没有再次git add

如果我们修改了1.txt,但是没有再git add,会怎么样呢?

git status 是多了中间这一段:

git status -s 的话,是 1.txt 的状态变成了AM

AM状态的意思是这个文件在我们将它添加到缓存之后又有改动

2.5 git diff

2.5.1 git diff 内容理解

2.5.2git diff

当工作区有改动,暂存区为空,git diff的对比是“工作区与最后一次commit提交的仓库的共同文件”当工作区有改动,暂存区不为空,diff对比的是“工作区与暂存区的共同文件”。

2.5.3git diff --cached /git diff --staged

对比暂存区(已add但未commit文件)和最后一次commit(HEAD)之间的所有不相同文件

2.5.4git diff HEAD

对比工作区与最后一次commit之间的所有不相同文件

2.5.5git diff HEAD~X或git diff HEAD^^^…(后面有X个^符号,X为正整数)

对比近一次提交的版本与 倒数第X个版本的所有不相同文件

2.5.6git diff <分支名1> <分支名2>

比较两个分支上最后 commit 的内容的差别

2.6 git commit

使用 git add 命令将内容写入暂存区。

git commit 命令则将暂存区内容添加到本地仓库中。

2.6.1 基本用法

提交暂存区到本地仓库中:

git commit -m [message]

[message] 可以是一些备注信息。

如果你没有设置 -m 选项,Git 会尝试为你打开一个编辑器以填写提交信息。

提交暂存区的指定文件到仓库区:

git commit [file1] [file2] ... -m [message]

2.6.2 -a

-a参数设置修改文件后不需要执行 git add 命令,直接来提交

git commit -a

在 Linux 系统中,commit 信息使用单引号',Windows 系统,commit 信息使用双引号"。

所以在linux中,我们需要git commit -m 'XXX' ,在 Windows中,我们需要 git commit -m "XXX"。

2.7 git reset

git reset 命令用于回退版本,可以指定退回某一次提交的版本。

2.7.1 --mixed

--mixed为默认,可以不用带该参数.

用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变

2.7.2 --soft

用于回退到某个版本

2.7.3 --hard

撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交

2.7.4 基本用法

git reset [HEAD]

2.8 git rm

用于删除文件

2.9 git mv

用于移动或重命名一个文件、目录或软连接

git mv [file] [newfile]

3Git 工作区、暂存区和版本库

3.1工作区、暂存区和版本库之间的关系

图中左侧为工作区,右侧为版本库。在版本库中标记为 "index" 的区域是暂存区(stage/index),标记为 "master" 的是 master 分支所代表的目录树。

图中我们可以看出此时 "HEAD" 实际是指向 master 分支的一个"游标"。所以图示的命令中出现 HEAD 的地方可以用 master 来替换。

图中的 objects 标识的区域为 Git 的对象库,实际位于 ".git/objects" 目录下,里面包含了创建的各种对象及内容。

当对工作区修改(或新增)的文件执行git add命令时,暂存区(index)的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。

当执行提交操作(git commit)时,暂存区(index)的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树

当执行git reset HEAD命令时,暂存区(index)的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。

当执行git rm --cached <file>命令时,会直接从暂存区(index)删除文件,工作区则不做出改变。

当执行git checkout .或者git checkout -- <file>命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区中的改动。

当执行git checkout HEAD .或者git checkout HEAD <file>命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。

4 git 配置(git config)

git config 专门用来配置或读取相应的工作环境变量。

这些环境变量,决定了 Git 在各个环节的具体工作方式和行为。

4.1 三种配置

这些环境变量可以存放在以下三个不同的地方:

每一个级别的配置都会覆盖上层的相同配置,所以.git/config里的配置会覆盖~/.gitconfig/etc/gitconfig中的同名变量。

4.2 配置用户信息

配置个人的用户名称和电子邮件地址:

(设置提交代码时的用户信息)

如果用了--global选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。

如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 --global 选项重新配置即可,新的设定保存在当前项目的 .git/config 文件里。

4.3 查看配置信息

git config --list

在配置里面,可以看到刚才配置的name和e-mail信息

4.3.1 查看特定配置信息

5 从github上下载单个文件

将网址复制到GitZip (kinolien.github.io)即可

参考资料:git diff的最全最详细的4大主流用法_快乐李同学的博客-CSDN博客_gitdiff

Git 基本操作 | 菜鸟教程 ()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。