git安装与使用—移动互联网应用开发技术

一、下载(安装)git

Git - Downloading Package (git-scm.com)

二、git的简单使用

1.新建文件夹

2.在该文件夹打开Git Bash

3.配置用户名和邮箱

在Git Bash里面输入代码

#单次配置
git config user.name ‘目标用户名’
git config user.email ‘目标邮箱名’
#全局配置
git config --global user.name ‘目标用户名’
git config --global user.email ‘目标邮箱名’

查看配置

git config -l

按q退出

 4.建立仓库

git init

生成.git隐藏文件夹

5.把名字写入name.txt

echo "姓名" >> name.txt

6.把文件加入追踪

git add name.txt

7.生成一笔提交

git commit -m "add which is 'your name'"

your name改成自己名字

8.查看提交日志

git log

三、切branch分支(更新中)

1.保证当前分支干净

git status

没有红色字符才是干净的

不干净怎么办??

查看附录、git的进阶使用-2.git status-目录不干净怎么办?

2.找一笔提交拉分支

git log
git checkout 'commit ID' -b 'name'

3.在新分支对name.txt做修改

这里以增加一串“666666666”为例

echo "666666666" >> name.txt

4.提交

git add name.txt
git status
git commit -m "xxxxx"

5.截图分支信息

git branch -vva

附录、git的进阶使用

1.git diff

git diff 是Git版本控制系统中非常重要的命令,用于比较不同版本之间的文件差异。它可以展示出工作目录、暂存区以及不同提交之间的文件内容差异。

2.git status

git status 是Git的一个重要命令,用于查看当前工作目录和暂存区的状态。当你在Git仓库目录下运行此命令时,Git会反馈以下信息:

  1. 未跟踪的文件: Git会列出所有不在版本控制下的新文件,也就是你新建的文件或者从外部引入的文件,它们前面会有提示 "Untracked files"。

  2. 已修改但未暂存的文件: 显示哪些文件已被修改但尚未添加到暂存区(使用 git add)。这类文件会标示为 "Changes not staged for commit"。

  3. 已暂存的改动: 列出已使用 git add 添加到暂存区,等待 git commit 的文件。这些文件会出现在 "Changes to be committed" 部分。

        目录不干净怎么办?

当你执行 git status 后看到工作目录不干净,通常意味着存在以下几种情况之一:

  1. 未跟踪的文件:新添加的文件尚未被Git跟踪。若这些文件不需要版本控制,可以将其加入到 .gitignore 文件中;若需要版本控制,使用 git add 命令将其添加到暂存区。

    git add 

    若要添加所有未跟踪的文件(包括新文件和修改过的文件),可以使用:

    git add .
  2. 已修改但未暂存的文件:已存在的文件被修改过,但尚未添加到暂存区。同样使用 git add 命令将它们添加到暂存区以便后续提交。

  3. 删除的文件尚未被Git记录:如果删除了一些文件但Git并未察觉,可以使用 git rm 命令删除并从版本控制中移除:

    git rm 

    若要删除所有未跟踪的文件(包括已删除但Git还不知道的文件):

    git clean -f

    若要删除所有未跟踪的文件和目录(递归删除):

    git clean -fd

    注意:git clean 是一个危险操作,因为它会永久删除未跟踪的文件,所以在执行前务必确认。

  4. 暂存了更改但未提交:如果有一些更改已暂存但未提交,你可以选择提交这些更改,也可以使用 git reset 命令取消暂存:

    git reset 

    若要取消暂存所有更改:

    git reset

    若要取消暂存并丢弃所有未提交的更改(工作目录也会恢复到上次提交的状态):

    git reset --hard HEAD

    再次提醒:git reset --hard 是一个危险操作,因为它会丢弃所有未提交的更改,一旦执行无法恢复。

3.git add

git add 是Git版本控制系统中的一个关键命令,用于将文件或目录的更改添加到暂存区(Stage)。当您对项目中的文件进行修改、新建或删除操作后,可以使用 git add 命令将这些更改告知Git,并准备好下一步的提交。

基本用法如下

  1. git add 

    这将把指定文件的当前版本添加到暂存区,等待下次提交

  2. git add .

    这会将当前目录及其子目录下所有已修改或新增的文件添加到暂存区。

  3. 交互式添加:

    git add -p

    git add --patch

    这样可以进入交互模式,逐块选择文件中的更改部分进行添加,尤其适用于大型文件或只想提交部分更改的情况。

  4. 添加并直接提交(Git 2.0及以上版本支持):

    git add . && git commit -m "Your commit message"

    这样可以快速地将所有更改添加到暂存区并立即提交,前提是暂存区中的更改是你想要一次性提交的全部内容。

  5. 添加删除的文件: 当你删除了一个文件并希望将这个删除操作也纳入版本控制时,只需在删除文件后执行 git add 命令,Git会检测到文件已被删除并将其记录在暂存区。

通过 git add,可以将项目中的一部分或全部更改暂存起来,待确认无误后,使用 git commit 命令将暂存区的更改正式写入Git仓库的历史记录中。

4.切branch分支

如果你想基于某个提交创建并切换到新分支,可以这样做:

# 查看提交历史,找到你要基于的提交哈希
git log
# 基于指定提交哈希创建并切换到新分支
git checkout -b new_branch 

这里,new_branch 是你想要创建的新分支名称, 是你想要基于的那个提交的完整哈希值。

如果你想在现有分支上检出某个提交(不会创建新分支,只是临时回到那个提交的状态),可以使用:

git checkout 

但请注意,这会使你进入一个“detached HEAD”状态,此时的提交并不是分支的一部分,当你进行新的提交时,原有的分支不会移动。为了返回到原来的分支并继续工作,你需要执行:

git checkout 

其中  是你原来所在的分支名称。

在Git中,切换分支的命令是 git checkout(在Git 2.23版本之后推荐使用 git switch 命令替代,但 git checkout 仍然可用并兼容)。

5.git reset

git reset 是Git中的一个命令,用于撤销或回滚提交或更改。这个命令的功能强大而灵活,有三种主要的模式:soft、mixed(默认)和hard。每种模式都会改变HEAD指针的位置和索引(暂存区)的状态,也可能影响工作目录中的文件。

  1. Soft Reset(软重置)

    git reset --soft 

    这种方式只会移动HEAD指针到指定的提交,暂存区和工作目录中的所有更改都将保留。这是一个只影响HEAD而不影响暂存区和工作树的撤销操作。

  2. Mixed Reset(混合重置)

    git reset 

    git reset --mixed 

    这是默认模式,它会移动HEAD指针到指定的提交,并清空暂存区,使得暂存区与HEAD所指的提交内容一致,但工作目录中的所有更改将保留。

  3. Hard Reset(硬重置)

    git reset --hard 

    这是最激进的方式,它不仅会移动HEAD指针到指定的提交,还会将暂存区和工作目录中的所有更改都恢复成指定提交时的状态,即所有未提交的更改都会丢失,并且不可恢复(除非使用git reflog找回)。

此外,git reset 还可用于撤销git add操作,将已暂存的更改放回工作目录,命令如下:

git reset 

这会将指定文件从暂存区移出,文件的更改将重新出现在工作目录中,但并不改变HEAD指向的提交。

6.Master Main Branch?

在Git的历史版本中,“master”分支曾是默认的主分支名称,代表着项目的主要开发线。然而,随着开源社区对术语敏感性的提升,许多项目开始采用更加中立的名称“main”作为默认主分支。

因此,现在的关系是:

  • 以前的传统关系:在许多老项目或者尚未更改分支命名约定的项目中,"master"分支通常是默认的主分支,用于存放稳定版或最新的开发成果。

  • 现代转变:自2020年左右,GitHub、GitLab和其他一些平台开始推荐并支持将默认主分支由"master"改为"main"。在这种情况下,"main"分支扮演了与原先"master"分支相同的角色,成为项目的核心开发分支。

    无论是"master"还是"main",这个主分支都是团队协作的基础,通常用来发布稳定版本,其他功能分支会在开发完成后合并到主分支中。不过,每个项目可以根据自身需求定制分支策略,不一定严格遵循这种默认设定。