[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