5、Git 操作

5.1 隐藏(Stash)

    在 Git 中,隐藏操作将能够修改跟踪文件,阶段更改,并将其保存在一系列未完成的更改中,并可以随时重新应用。

    当更改了文件的内容后,通过 git status 对跟踪文件进行检查,现在,要切换分支以进行客户升级,但不想提交一直在做的工作; 那么可以把当前工作的改变隐藏起来。 要将一个新的存根推到堆栈上,运行 git stash 命令:

$ git stash

     现在,可以安全地切换分支并在其他地方工作。通过使用git stash list命令来查看已存在更改的列表

$ git stash list

    之后想重新开始新的文件编写,查找上次没有修改完的文件,只需执行 git stash pop 命令即可从堆栈中删除更改并将其放置在当前工作目录中:

$ git stash pop

5.2 移动、重命名(mv)

5.2.1 移动操作

    移动操作将目录或文件从一个位置移动到另一个位置。例如,我们想要将源代码移动到src目录中。修改后的目录结构将显示如下:

$ mkdir gitmv
$ git mv noadd.txt gitmv/

    更改之后,为了使这些更改永久性,必须将修改的目录结构推送到远程存储库,在执行git pull操作之后,目录结构将被更新。

$ git pull

5.2.2 重命名操作

$ git mv noadd.txt noadd2.txt

R : 表示文件已被重命名;

对于提交操作,需要使用 -a 标志,这使 git commit 自动检测修改的文件。

5.3 修正(checkout)

    当我们不想要修改已经提交了的文件的内容时,需要通过撤销修改,可以使用 git checkout 命令。可以使用此命令来还原文件的内容

$ git checkout remind.md

 ​​​​

 5.3.1 删除分段区域的更改

    当执行添加操作时,文件将从本地存储库移动到暂存区域。 如果用户意外修改文件并将其添加到暂存区域,则可以使用 git checkout 命令恢复其更改。

    在Git中,有一个 HEAD 指针总是指向最新的提交。 如果要从分段区域撤消更改,则可以使用 git checkout 命令,但是使用 checkout 命令,必须提供一个附加参数,即 HEAD 指针。 附加的提交指针参数指示 git checkout 命令重置工作树,并删除分段更改

$ git checkout head -- remind.md

5.3.2 复位移动头指针

    经过少量更改后,可以决定删除这些更改。 git reset命令用于复位或恢复更改。 我们可以执行三种不同类型的复位操作。

  

每个分支都有一个 HEAD 指针,它指向最新的提交。如果用 --soft 选项后跟提交 ID 的 Git reset 命令,那么它将仅重置 HEAD 指针而不会破坏任何东西。

 .git/refs/heads/master 文件存储 HEAD 指针的提交 ID。 可使用 git log -1 命令验证。

$ cat .git/refs/heads/test

  • --mixed :将从尚未提交的暂存区域还原这些更改。它仅从暂存区域恢复更改。对文件的工作副本进行的实际更改不受影响。

    默认 Git 复位等效于执行 git reset - mixed

  • --hard :将清除分段区域; 它会将 HEAD 指针重置为特定提交 ID 的最新提交,并删除本地文件更改。

现在,利用 git log 命令获取对应的头指针 ID 所指向的暂存区域,通过重置 HEAD 与 --hard 选项,将从分段区域还原文件,并删除对文件所做的任何本地更改。

$ git reset --hard 5d8bfbc12278b840acf7e26e62f6ebf166f6ffc4

 

5.4 标签(tag)

    假设项目中存在两个成员,均需要标记项目内容,以便更容易访问。

5.4.1 创建标签

    使用 git tag 命令来标记当前 HEAD 指针。在创建标签时需要提供 -a 选项的标签名称,并提供带 -m 选项的标签消息。

$ git tag -a 'first_tag' -m 'git tag -a name -m message'

    如果要标记特定提交,则使用相应的COMMIT ID而不是HEAD指针:

$ git push origin tag first_tag

5.4.2 查看标签

    可以使用带有 -l 选项的 git tag 命令查看所有可用的标签:

$ git tag -l

    使用 git show tagname 命令后跟其标签名来查看有关标签的更多详细信息:

$ git show first_tag

5.4.3 删除标签

    使用命令 git tag -d 从本地以及远程存储库中删除标签

5.5 补丁(format-patch)

    补丁是一个文本文件,其内容类似于查看修改命令 git diff ,但与代码一样,它也有关于提交的元数据; 例如提交ID,日期,提交消息等。我们可以从提交创建一个补丁,而其他人可以将它们应用到他们的存储库。

    使用 git format-patch 命令创建最新提交的修补程序。 如果要为特定提交创建修补程序,请在 format-patch 命令后面指定 COMMIT_ID 。

$ git format-patch -1
# 指定 commit Id
$ git format-patch ba47cca229eefb8aaba9c7393ed94fa319778fac 

    上述命令在当前工作目录中创建了 .patch 文件。其他工作人员可以使用这个补丁来修改他的文件。git 分别提供两个命令来应用补丁:

  • git apply : 修改本地文件而不创建提交;

  • git am : 修改文件并创建提交。

5.6 分支(branch)

分支操作允许创建另一路线 / 方向上开发,通过使用这个操作将开发过程分为两个不同的方向。

5.6.1 创建分支

    使用 git branch <branch name> 命令创建一个分支,可以从现有分支上创建,也可以使用特定的标签或提交作为起点创建。如果没有任何特定的提交 ID ,将会以 HEAD 作为起点提交分支。

$ git branch newbranch

    创建了新分支 "newbranch" ,使用 git branch 列出可用的分支,Git 在当前签出分支之前显示一个星号。创建分支的操作如下:

  

5.6.2 切换分支

    使用 git checkout <branch name> 命令在分支之间切换:

$ git checkout new_branch

5.6.3 创建并切换分支

    Git 为 checkout 命令提供 -b 选项; 此操作将创建一个新的分支,并立即切换到新分支。

$ git checkout -b test_branch

5.6.4 删除分支

    通过向 git branch 命令提供 -D 选项来删除分支。在删除现有分支时需切换到其他分支。

$ git branch -D test_branch

5.6.5 重命名分支

    假设需要在项目中添加对宽字符的支持,并且已经创建了一个新的分支,但分支名称需要重新命名。那么可通过使用 -m 选项后跟旧的分支名称和新的分支名称来更改/重新命名分支名称。

$ git branch -m new_branch wchar_support

5.6.6 合并分支

    当进行文件提交到新分支后,将显示如下:

  

    通过查看提交信息,假设工作人员需要在 master 分支中有相同的功能,不用重新执行代码编写同样的代码,而是通过将分支与主分支合并来执行代码的合并。如下:

$ git merge origin/wchar_support

    通过合并操作后,显示如下:

  

5.7 不同平台换行符问题

    GNU / Linux 和 Mac OS 使用换行( LF )或新行作为行结束字符,而 Windows 使用换行和回车( LFCR )组合来表示行结束字符。

    对于 Windows 系统,可以将 Git 客户端配置为将行结束符转换为 CRLF 结束符,并在提交时将其转换回 LF 格式,如下:

$ git config --global core.autocrlf true

    对于 GNU / Linux 或 Mac OS 系统,我们可以配置 Git 客户端,以便在执行结帐操作时将线结束从 CRLF 转换为 LF ,如下:

$  git config --global core.autocrlf input

5.8 远程操作

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐