利用GIT实现高效版本控制
进入这篇文章,相信都是对git有一些了解的,作为一个强大的版本控制工具,我们只闻其名当然是不够的!看完这篇文章,你就能学会如何利用git对你的项目进行高效的版本管理!接下来跟着我的脚步,沉浸式体验git的使用。
首先要在操作目录下打开git
1.创建仓库和初始化
git init
:初始化一个新的 Git 仓库。
创建了本地仓库,git才能对我们的项目进行管理
2.添加和提交更改
-
**git add[filename]**
:将更改添加到暂存区。 -
**git add .**
:将当前目录中的所有更改添加到临时区域。 -
**git status**
:查看工作目录和暂存区的状态。 -
**git commit -m "[commit message]"**
:使用描述性消息提交阶段性更改。
这个时候再查看工作目录和暂存区的状态就是这个样子:
显示工作区被清空。
3.分支管理
很多时候我们在修改项目内容的时候,若是直接修改了一点就提交,到后面发现这些修改又没有必要了的话,我们就要对版本进行回退操作(这个稍后再讲),非常麻烦,为了应对这种情况,分支管理操作显得非常重要!
**git branch**
:列出仓库中的所有分支。
-
**git branch [branch name]**
:使用指定的名称创建一个新的分支。 -
**git checkout [branch name]**
:切换到指定的分支。 -
**git checkout -b [branch name]**
:创建并切换到新的分支。可以发现切换不同分支的时候,最后面的括号的内容在变化。
再使用
**git branch**
语句,就能看到所有的分支了。 -
**git merge [branch name]**
:将指定的分支合并到当前分支中。
4.查看提交历史
此处省略为了演示用的多次提交
-
**git log**
:查看提交历史。
-
**git reflog**
:显示commit
的历史提交记录
当提交次数过多了或者清屏了的时候,使用git log可能不能看到所有的提交历史,这个时候使用git reflog,我们就能看到所有的提交历史。
-
**git diff**
:显示工作目录和暂存区之间的差异。我现在先在文档里面添加了一行“stage08”,这个时候调用git diff,就可以看到这样的画面:
-
**git diff [commit1] [commit2]**
:显示两次提交之间的差异。这里我在后面加上两次提交的哈希值,我就能看到两次提交中的不同之处。
-
**git checkout -- <filename>**
:丢弃工作目录中对指定文件的更改,将文件恢复到最近一次提交时的状态。
上面提到我在工作目录中添加了一行“stage08”,假如这个时候我不需要我目前所做的更改,我就可以调用这个语句,让工作目录回到上一次提交的状态。
-
**git giff --staged**
:查看暂存区和最后一次提交之间的差异。使用这个命令可以查看已暂存的更改和最后一次提交之间的差异。
-
**git reset --hard<commit_hash>**
:这个命令会将HEAD指针指向指定的提交,并将工作目录和暂存区回滚到该提交的状态。其中,<commit_hash>
是目标提交的哈希值(或者可以是分支名、标签名等可以直接解析到哈希值的引用)。上面的git checkout – 命令,会丢掉工作目录所做的更改,直接回到上一次的提交状态,但是很多时候我们并不想这样做,毕竟丢掉了就没了…这个时候我们就可以先将我们的更改提交,然后使用命令git reset --hard<commit_hash>,我们便可以直接跳到相应提交的状态。
这里我们跳到了stage05,在需要时我们用相同的操作便可以回到之前的版本,或者说任意的版本,而且工作的内容也不会丢失。
5.撤销更改
-
**git reset --hard
**:重置工作目录和暂存区到指定提交的状态,同时丢弃之前的所有修改。git checkout -- [file]
和git reset --hard
都是用于撤销对文件的更改,但它们的行为略有不同:- git checkout – [file]:
git checkout – [file]:- 这个命令用于丢弃工作目录中对指定文件的更改,将文件恢复到最近一次提交时的状态。
- 它只影响工作目录中的文件,不会影响暂存区或提交历史。
- 如果文件在暂存区中有修改,那么这个命令会用暂存区的文件覆盖工作目录中的文件。
- 如果文件在暂存区中没有修改,那么这个命令会用最近一次提交中的文件覆盖工作目录中的文件。
- git reset --hard:
git reset --hard:- 这个命令会重置工作目录和暂存区到指定提交的状态,同时丢弃之前的所有修改。
- 它不仅影响工作目录中的文件,还会影响暂存区的内容,将暂存区也回滚到指定提交的状态。
- 这个命令相当于对工作目录和暂存区都执行了
git checkout -- .
命令,同时还重置了HEAD指针。
总的来说,
git checkout -- [file]
是用于撤销对指定文件的修改,而git reset --hard
是用于撤销对整个工作目录和暂存区的修改,将它们都回滚到指定提交的状态。使用时要谨慎,尤其是git reset --hard
,因为它会永久丢弃未提交的修改。 - git checkout – [file]:
-
**git reset HEAD <filename>**
:将暂存区中指定文件的修改撤销(即将文件从暂存区中移出),同时保留工作目录中对该文件的修改。这个命令会将文件从暂存区中移出,相当于撤销了使用
git add
将文件添加到暂存区的操作,但不会影响工作目录中的文件内容。使用这个命令后,文件的修改会被重新放回到工作目录中的未暂存状态,你可以继续修改这个文件,然后再次将其添加到暂存区或者直接提交。 -
**git resrt --hard HEAD^**
:回到上一个版本。
命令将重置当前分支的HEAD指针和工作目录到上一个提交(即当前提交的父提交)。这个命令中的
HEAD^
表示当前提交的父提交,^
符号表示父提交,HEAD
表示当前的提交。这个操作会永久性地删除上一个提交中的所有修改,慎用。
结语
Git 是一个强大而灵活的工具,可以帮助开发者有效地管理和控制项目的版本。学习这篇文章,基本上能满足个人的大部分需求了!
通过学习和掌握 Git 的基本概念和常用操作,您将能够更高效地进行团队协作,提高项目的质量和可维护性。
希望本文能够为您提供一个良好的入门指南,帮助您更好地利用 Git 进行版本控制。祝愿您在开发旅程中取得成功!
这篇博客覆盖了 Git 的常用操作以及最佳实践,希望对您有所帮助!
标签:文件,高效,git,版本控制,暂存区,--,GIT,提交,目录 From: https://blog.csdn.net/2303_80137294/article/details/136744178