引言

git是一个分布式版本控制系统,它被广泛用于追踪文件的更改和协助多人合作开发,程序员必备知识,但是git命令繁多,所以把它整理起来

必备知识

初始化本地仓库:git init

用于初始化一个新的 Git 仓库,当你在一个新目录中执行 git init时,Git 会创建一个名为 .git的子目录,这个子目录包含了所有的必要文件和元数据,用于跟踪你的项目的版本

git init

如果想要初始化一个 Git 仓库到一个特定的目录,而不是当前目录,可以使用这个命令

git init 目录名称

如果这个目录已经存在,Git 会在这个目录中创建一个新的 .git子目录,并将其初始化为一个 Git 仓库。如果这个目录不存在,Git 会创建该目录,并在其中初始化一个新的 Git 仓库

克隆远程仓库:git clone

用于从远程仓库复制一个 Git 仓库到本地,这个命令会创建一个本地仓库的副本,包括所有文件的版本历史记录,还会自动设置远程仓库的名称为 origin

git clone 远程地址

执行这个命令后,Git 会自动创建一个跟仓库同名的目录,并将远程仓库的内容克隆到这个目录中,这个目录也会包含一个 .git子目录,其中包含了所有的版本控制信息

如果你不想目录跟仓库同名,可以这样

git clone 远程地址 指定名称

Git 会在当前目录下创建一个名为你自己指定的名称的目录,并将远程仓库的内容克隆到这个目录中。

添加文件到暂存区:git add

用于将文件更改添加到暂存区,提交代码时需要先将要提交的更改添加到暂存区,然后才能将这些更改提交到仓库

git add 添加到暂存区的文件的路径

如果您想要添加当前目录下的所有文件,可以这样,. 是通配符

git add .

添加所有已跟踪的文件的更改和删除,但不包括未跟踪的文件

git add -u 或 git add --update

添加所有更改,包括已跟踪文件的更改、删除和未跟踪的文件

git add -A 或 git add --all

提交更改:git commit -m

用于将暂存区中的更改提交到仓库

git commit -m "提交信息"

查看远程仓库的状态:git status

用于查看当前仓库的状态,提供了有关工作目录、暂存区和最近提交的信息,包括哪些文件被修改了、哪些文件被添加到暂存区以及哪些文件尚未被跟踪

git status

执行这个命令后,Git 会显示当前所在的分支、暂存区中等待提交的更改(如果有)、工作目录中未被暂存的更改(即已修改但未添加到暂存区的文件)、未被跟踪的新文件(即尚未被 Git 记录的文件)、被忽略的文件(如果配置了 .gitignore文件)

获取最新的提交:git fetch

用于从远程仓库获取最新的提交,并将它们存储在本地仓库的远程跟踪分支上

git fetch 仓库名 本地分支名

获取最新的提交:git pull

用于从远程仓库获取最新的提交,并将它们合并到当前分支

git pull 仓库名 本地分支名

从名为 origin的远程仓库获取名为 master的分支的最新提交,并将它们合并到本地master分支

git pull origin master

推送到远程仓库:git push

用于将本地分支的更改推送到远程仓库,如果没有指定分支,会默认推送到名为 master的分支

git push 远程仓库名 分支名

推送到名为 origin的远程仓库的 master分支

git push origin master

推送两个分支

git push 远程仓库名 分支名1 分支名2

从暂存区删除文件:git reset

用于将当前分支的头部(即指针)重置到一个指定的状态,常用于撤消之前的提交、撤销暂存区的更改或者将文件从暂存区中移除

git reset 操作 提交哈希

这个命令有三种操作,如:

只移动 HEAD 指针,不改变暂存区和工作目录

git reset --soft 提交哈希

移动 HEAD 指针,并重置暂存区,但不改变工作目录,如果没有指定操作,则默认这个

git reset --mixed 提交哈希

移动 HEAD 指针,并重置暂存区和工作目录,这样会丢弃所有未提交的更改

git reset --hard 提交哈希

案例:

撤销上一次提交并保留工作目录中的更改

git reset --soft HEAD~1

永久删除最近的提交以及工作目录和暂存区中的所有更改

git reset --hard HEAD~1

移除暂存区中指定的文件,但保留工作目录中的更改

git reset HEAD 文件目录

移动、重命名文件:git mv

用于移动或重命名一个文件或目录,如移动一个文件

git mv 当前文件路径/当前文件 想要移动的路径/当前文件

重命名一个文件

git mv 当前文件 当前文件新名称

删除文件:git rm

用于从工作目录和暂存区中删除文件

git rm 操作 想要删除的文件

强制删除文件,即使它在 .gitignore 文件中被忽略了

git rm -f 想要删除的文件

只从暂存区中删除文件,但保留在工作目录中

git rm --cached 想要删除的文件

在删除文件后,可以使用git commit命令来提交这次更改,这样文件的删除就被记录在Git 仓库历史中

git commit -m "删除了 xxx.txt 文件"

显示分支:git branch

用于查看、创建、删除和重命名分支

git branch 操作 分支名

查看分支的最后一次提交

git branch -v 分支名

查看哪些分支已经合并到当前分支

git branch --merged 分支名

查看哪些分支尚未合并到当前分支

git branch --no-merged 分支名

删除分支

git branch -d 分支名

强制删除分支(即使它有未合并的更改)

git branch -D 分支名

重命名当前分支

git branch -m 分支名

查看所有分支,包括远程跟踪分支

git branch -a 分支名

创建分支

git branch 分支名

切换分支:git checkout

用于切换分支或恢复工作树文件

git checkout 分支名

创建分支并切换到这个分支

git checkout -b 分支名

撤销对指定文件的更改,将其恢复到指定提交时的状态

git checkout 指定提交 指定文件

放弃所有未提交的更改,将工作目录恢复到最后一次提交的状态

git checkout .   或  git checkout -- .

合并分支:git merge

用于将两个或多个分支的更改合并在一起,在执行合并操作之前,先确保当前分支是最新的,以避免合并冲突

git merge 操作 分支名

禁用快速前进(fast-forward)合并,即使可以快速前进,也会生成一个新的合并提交

git merge --no-ff 分支名

将指定分支的更改压缩到当前分支的一个提交中,而不是创建一个合并提交

git merge --squash 分支名

在合并时提供合并提交的提交消息

git merge -m <消息> 分支名

合并指定分支到当前分支

git merge 指定分支

合并之前先执行 git pull或git fetch,如果要合并到 master 分支的话,执行git merge origin/master

创建提交:git revert

用于创建一个新的提交,该提交会撤销某个早期提交的更改

git revert 操作 提交哈希

只准备撤销,不自动创建提交

git revert -n 或 --no-commit 提交哈希

在提交消息中添加一个 Signed-off-by 行

git revert --signoff 提交哈希

撤销指定提交的更改并创建一个新的提交

git revert 指定提交

显示提交历史:git log

git log

执行这个命令后,会每个提交的哈希值、作者、日期和提交消息,在默认情况下,会显示所有分支的提交历史

将每个提交压缩到一行,只显示哈希值和提交消息

git log --oneline

查看最近的三条提交记录,并且希望每条记录只显示一行

git log --oneline -n 3

显示对未暂存文件的更改:git diff

用于查看工作目录、暂存区或提交之间的更改,显示两个状态之间的差异

git diff

查看暂存区和最新提交之间的差异

git diff --cached   或    git diff HEAD

比较当前工作目录和特定提交之间的差异

git diff 提交哈希

保存当前工作状态:git stash

用于保存当前工作状态以便稍后恢复,当需要暂时离开当前工作,例如开始修复一个紧急问题,或者需要合并一个新分支,但不想丢失当前的工作进度,您可以使用这个命令来保存当前的状态。

git stash

查看存储的堆栈记录,包括创建时间、提交哈希和堆栈记录的名称

git stash list

恢复第一个存储的堆栈记录

git stash pop stash@{0}

显示第一个存储的堆栈记录的详细信息,包括文件差异

git stash show stash@{0}

**操作远程仓库:git remote

用于查看和操作远程仓库,可以查看远程仓库的列表、获取远程仓库的详细信息,或者为远程仓库重命名

git remote 操作 仓库名

查看所有远程仓库的列表

git remote -v

获取特定远程仓库的详细信息

git remote show 仓库名

远程仓库重命名,不会更改其 URL

git remote rename 仓库名 仓库新名

添加远程仓库

git remote add 仓库名 仓库地址

删除远程仓库

git remote remove 仓库名

暂时就这么多啦

goodBye~

下班~

最后修改:2024 年 05 月 29 日
如果觉得我的文章对你有用,请随意赞赏