[GIT]常用基本操作
Git 是一个分布式版本控制系统,用于跟踪文件的更改,协助团队协作开发软件项目。
1. 初始化 Git 仓库
要使用 Git 跟踪项目,首先需要将项目目录初始化为 Git 仓库。
1 |
|
这会在当前目录下创建一个隐藏的 .git
文件夹,用于存储版本控制相关的数据。
2. 克隆远程仓库
如果已有远程仓库,可以通过 git clone
命令将其复制到本地:
1 |
|
这会将远程仓库下载到当前目录,并创建一个同名文件夹。
3. 查看仓库状态
使用 git status
查看当前仓库的状态,比如哪些文件被修改了、哪些文件处于暂存区等。
1 |
|
这会显示未跟踪文件、已修改文件和暂存区的文件。
4. 跟踪新文件
要将新文件添加到 Git 的跟踪列表中,使用 git add
命令:
1 |
|
也可以一次性添加所有文件:
1 |
|
这会将当前目录下的所有修改和新文件添加到暂存区。
5. 提交更改
一旦添加了文件到暂存区,可以使用 git commit
来提交这些更改。每次提交都会记录一条历史记录,可以随时查看和恢复。
1 |
|
-m
后跟的消息应简要描述这次提交的更改内容。
6. 查看提交历史
使用 git log
命令可以查看仓库的提交历史:
1 |
|
这会显示提交的哈希值、作者、日期和提交消息。如果想查看简化的日志,可以使用 --oneline
选项:
1 |
|
7. 创建分支
在 Git 中,分支用于并行开发不同的功能。可以创建一个新的分支来开发一个新功能:
1 |
|
这会创建并切换到一个新的分支。如果你只想切换分支而不创建新分支,可以使用:
1 |
|
8. 推送到远程仓库
将本地的提交推送到远程仓库,以便与团队成员共享代码:
1 |
|
例如,如果想将 main
分支的更改推送到远程仓库:
1 |
|
9. 拉取远程仓库的更改
使用 git pull
从远程仓库拉取最新的更改并合并到当前分支:
1 |
|
例如,从 main
分支拉取远程仓库的最新更改:
1 |
|
10. 暂存工作(Stashing)
如果正在处理一些代码更改,但还不想提交这些更改,而又想切换到另一个分支或做其他事情,可以使用 git stash
将工作区的更改暂存起来:
1 |
|
之后可以使用 git stash apply
恢复暂存的工作:
1 |
|
11. 查看差异
要查看文件的更改内容,可以使用 git diff
命令:
1 |
|
这会显示自上次提交以来的更改内容。
12. 还原更改
在 Git 中,还原代码或撤销更改是非常常见的操作,无论是恢复某个文件的状态,还是撤销某次提交,Git 都提供了多个方式来安全、灵活地操作项目历史。以下是 Git 中常用的还原和撤销操作的详细介绍。
12.1 撤销未提交的更改
还原工作区的修改
如果修改了文件,但还没有提交(即文件还未加入暂存区或已经暂存但未提交),可以将它们恢复到上次提交时的状态:
1 |
|
这个命令会丢弃文件中的所有未提交的更改,恢复为上一次提交时的版本。如果想还原多个文件,也可以直接用 .
表示当前目录下的所有文件:
1 |
|
撤销已暂存的更改
如果已经通过 git add
将文件添加到暂存区,但你想撤销这个操作,可以使用 git reset
:
1 |
|
这会将文件从暂存区移出,但保留文件的更改。此时,可以再次编辑文件或选择不提交这些更改。
还原整个工作目录
如果想撤销所有未提交的更改(包括暂存区和未暂存的文件),可以使用 git reset
和 git checkout
的组合:
1 |
|
这会将整个工作区还原为最后一次提交的状态,所有未提交的更改都会丢失。
12.2 撤销已提交的更改
修改最近的提交
如果已经提交了更改,但发现提交信息有误或文件遗漏,可以使用 git commit --amend
来修改最近一次的提交:
1 |
|
这会打开编辑器,允许修改提交消息,或者可以添加更多的文件到该提交。如果想改动的是最近一次提交的内容而不是消息,可以先用 git add
再执行 git commit --amend
。
回滚到指定提交
如果想撤销一个或多个提交,可以使用 git reset
命令。git reset
有多个选项,根据需要选择合适的方式:
软重置(
--soft
):只移动提交指针,保留所有文件的修改状态和暂存状态。1
git reset --soft <commit>
这样可以回到某个提交,但保留所有更改在暂存区,之后可以重新提交。
混合重置(
--mixed
,默认):回到指定的提交,但保留文件的更改,只是将其移出暂存区。1
git reset --mixed <commit>
硬重置(
--hard
):彻底回滚到指定的提交,删除所有未提交的更改,工作目录会与指定的提交完全一致。1
git reset --hard <commit>
撤销某次提交但保留更改
有时候不想彻底回到之前的某个提交,而只是想撤销某个提交的影响,但保留它的内容供重新修改。这种情况下可以使用 git revert
。
回滚单个提交:
1
git revert <commit>
这会生成一个新的提交,撤销指定提交的内容,但不会改变提交历史。
删除最近的提交
如果想删除最新的一个或多个提交(且不保留更改),可以使用 git reset
的硬重置:
1 |
|
这会删除最近的提交,HEAD~1
表示倒退一个提交。如果删除多个提交,可以使用 HEAD~n
,其中 n
是想删除的提交数。
12.3 还原已删除的文件
如果不小心删除了一个文件,但没有提交这个删除操作,可以使用 git checkout
恢复文件:
1 |
|
这个命令会将文件恢复到上一次提交时的状态。
如果已经提交了文件删除操作,但想恢复该文件,可以通过 git reset
或 git revert
撤销删除操作,或者通过以下命令恢复特定的已删除文件:
1 |
|
这个命令会将文件恢复到指定提交时的状态。
12.4 暂存工作并稍后恢复
当在进行某些更改时,突然需要切换到其他分支或处理其他任务,但不想提交当前的更改,可以使用 git stash
暂存这些未完成的工作。
1 |
|
这会将当前的所有未提交更改(包括暂存和未暂存的内容)暂存起来,工作目录会恢复到干净状态。
当想恢复这些工作时,使用 git stash apply
:
1 |
|
这会将暂存的更改恢复到工作目录。
12.5 查看提交的历史记录
可以使用 git log
命令查看仓库的历史提交记录:
1 |
|
如果需要查看某个文件在不同提交间的变动,可以使用 git log
加上文件名:
1 |
|
这会显示与该文件相关的所有提交。
12.6 查看文件差异
使用 git diff
可以查看工作区和暂存区的文件差异:
查看工作区和暂存区的差异:
1
git diff
查看暂存区和上次提交的差异:
1
git diff --cached
查看某次提交的更改:
1
git diff <commit>
12.7 强制推送还原
如果已经推送了错误的提交到远程仓库,并且需要还原远程仓库的状态,可以使用 git push
的强制推送选项(注意:这会覆盖远程仓库的历史,需要谨慎使用):
1 |
|
这种操作适用于紧急情况下的错误修复,且需要团队协作时的额外沟通,以避免其他开发者的工作被覆盖。
13. 克隆、推送和拉取常用流程
克隆仓库:
1
git clone https://github.com/username/repo.git
拉取最新代码:
1
git pull origin main
进行开发、提交:
1
2git add .
git commit -m "Add new feature"推送到远程仓库:
1
git push origin main