Git命令速查
初始化Git仓库
git init
初始化一个新的Git仓库。
配置Git用户信息
git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"
设置全局用户名称和邮箱地址。
添加远程仓库
git remote add origin git@github.com:yourusername/yourrepository.git
添加远程仓库地址。
查看远程仓库
git remote -v
显示已添加的远程仓库列表。
添加文件到索引
git add hello.c
将文件添加到索引中准备提交。
提交文件
git commit -m "Add hello.c file with Hello, World! program"
提交文件并添加提交信息。
查看提交日志
git log
显示提交日志,显示提交历史记录。
推送到远程仓库
git push -u origin main
将本地提交推送到远程仓库的main
分支。
查看文件差异
git diff
显示工作目录和索引之间的差异。
git diff --staged
显示索引和最后一次提交之间的差异。
查看当前状态
git status
显示工作目录和索引的状态。
查看分支
git branch
显示本地分支列表,当前分支前会有一个*
号。
创建新分支
git branch new-branch
创建一个名为new-branch
的新分支。
切换分支
git checkout new-branch
切换到new-branch
分支。
创建并切换到新分支
git checkout -b new-branch
创建并切换到new-branch
分支。
合并分支
git checkout main
git merge new-branch
将new-branch
分支合并到main
分支。
删除分支
git branch -d new-branch
删除new-branch
分支。
显示提交的简短统计信息
git log --oneline
显示每个提交的简短统计信息。
回滚提交
git revert <commit-hash>
创建一个新的提交,撤销指定的提交。
重置文件到特定版本
git reset <commit-hash> --hard
将当前分支重置到指定的提交,并丢弃所有更改。
克隆远程仓库
git clone git@github.com:yourusername/yourrepository.git
克隆远程仓库到本地。
获取远程更新
git fetch
从远程仓库获取更新,但不合并到本地分支。
拉取远程更新并合并
git pull
从远程仓库拉取更新并自动合并到当前分支。
显示最近的提交日志
git log --graph --oneline --all
显示带有图形表示的提交日志。
忽略文件
创建一个.gitignore
文件,添加你想要Git忽略的文件或目录。例如:
*.log
*.tmp
node_modules/
完整示例工作流程
以下是一个完整的工作流程示例,包括创建文件、提交、分支操作等:
# 初始化Git仓库
git init
# 设置用户信息
git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"
# 添加远程仓库
git remote add origin git@github.com:yourusername/yourrepository.git
# 创建文件并添加内容
echo '#include <stdio.h>\n\nint main() {\n printf("Hello, World!\\n");\n return 0;\n}' > hello.c
# 添加文件到索引
git add hello.c
# 提交文件
git commit -m "Add hello.c file with Hello, World! program"
# 推送到远程仓库
git push -u origin main
# 查看文件差异
git diff
# 创建并切换到新分支
git checkout -b new-feature
# 修改文件
echo '// New feature added' >> hello.c
# 添加文件到索引并提交
git add hello.c
git commit -m "Add new feature to hello.c"
# 切换回main分支并合并新分支
git checkout main
git merge new-feature
# 推送到远程仓库
git push
# 删除新分支
git branch -d new-feature
在使用 Git 进行版本控制时,你会遇到一些核心概念和常用命令。理解这些基础概念是有效使用 Git 的关键。
核心概念
-
暂存区(Staging Area):
暂存区是 Git 中的一个层级,用于暂存你的更改,之后可以一次性提交这些更改到你的本地仓库。暂存区提供了一个预览改动的机会,确认无误后再进行提交。 -
本地仓库(Local Repository):
本地仓库是你的项目的一个私有副本,存在于你的计算机上。它包含了所有的文件、历史记录和分支,使你能够在不影响远程仓库(如 GitHub 上的仓库)的情况下进行工作。 -
远程仓库(Remote Repository):
远程仓库通常位于网络上的某个服务上,如 GitHub、GitLab 或 Bitbucket。它允许多个开发者推送和拉取代码,共同协作开发。
常用 Git 命令
-
配置命令:
git config --global user.name "username"
:设置用户名。git config --global user.email "email@example.com"
:设置用户邮箱。
-
初始化和克隆:
git init
:在当前目录初始化一个新的 Git 仓库。git clone [url]
:从远程仓库克隆一份代码到本地。
-
基本操作:
git add [file]
:将文件添加到暂存区。git commit -m "message"
:提交暂存区的内容到本地仓库。git status
:查看当前仓库的状态(哪些文件被修改但未暂存,哪些已暂存等)。git log
:查看提交历史。
-
分支管理:
git branch
:查看本地所有分支。git branch [branch-name]
:创建新分支。git checkout [branch-name]
:切换到指定分支。git merge [branch]
:将指定分支合并到当前分支。
-
远程操作:
git remote add [name] [url]
:添加一个新的远程仓库。git push [remote-name] [branch-name]
:将代码推送到远程仓库的指定分支。git pull [remote-name] [branch-name]
:从远程仓库拉取代码并自动合并到当前分支。git fetch [remote-name]
:从远程仓库获取最新的历史,但不自动合并。
-
撤销操作:
git checkout -- [file]
:撤销指定文件的修改。git reset --hard [commit]
:重置当前分支的HEAD到指定提交,同时丢弃之后的所有更改。git revert [commit]
:生成一个新提交,该提交撤销指定提交的更改。
补充 Git 命令
-
查看差异:
git diff
:显示工作目录中未暂存的更改。git diff --staged
或git diff --cached
:显示已暂存的与最后一次提交的差异。git diff [branch1]...[branch2]
:显示两个分支之间的差异。
-
查看状态和日志:
git status
:显示工作目录和暂存区状态。git log
:显示当前分支的版本历史。git log --oneline
:显示简短的提交历史。git log --graph
:以图形方式显示分支、合并历史。
-
标签管理:
git tag
:列出所有标签。git tag [tag-name]
:在当前提交上创建一个新标签。git tag -a [tag-name] -m "message"
:创建一个含附注的标签。git tag -d [tag-name]
:删除一个标签。
-
撤销更改:
git restore [file]
:撤销对文件的修改(Git 2.23及以上版本)。git restore --staged [file]
:将文件从暂存区移出(Git 2.23及以上版本)。
-
重置与回退:
git reset
:重置当前HEAD到指定状态,但不改变工作目录(默认为--mixed
)。git reset --soft [commit]
:回退到某个提交,保留源码和暂存区。git reset --hard [commit]
:彻底回退到某个提交,清除工作目录和暂存区的所有更改。
-
处理大文件:
-
使用 Git LFS(Large File Storage)来处理大文件。需要安装 Git LFS 扩展:
git lfs install git lfs track "*.psd" git add .gitattributes
-
-
高级分支策略:
git cherry-pick [commit-id]
:选择一个提交从一个分支应用到另一个分支。git rebase [base-branch]
:将当前分支的更改重新应用在基底分支之上。
-
查看配置和别名:
git config --list
:显示所有 Git 配置。git config --global alias.ci commit
:创建一个别名ci
用于commit
命令。
Git 基础概念
-
暂存区(Staging Area):
暂存区是 Git 中用于临时保存你的更改,这些更改随后可以提交到本地仓库。这提供了一个机会来审查更改,确认无误后再进行提交。 -
本地仓库(Local Repository):
本地仓库是你的项目的一个私有副本,存储在你的计算机上。它包括所有的文件、历史记录和分支,允许你在不影响远程仓库的情况下进行开发。 -
远程仓库(Remote Repository):
远程仓库通常位于互联网上,例如在 GitHub、GitLab 或 Bitbucket 等平台上。它允许多个开发者推送和拉取代码,以便协同工作。
常用 Git 命令
配置与初始化
git config --global user.name "username"
:设置全局用户名。git config --global user.email "email@example.com"
:设置全局邮箱。git init
:在当前目录初始化一个新的 Git 仓库。git clone [url]
:克隆一个远程仓库到本地。
基本操作
git add [file]
:添加文件到暂存区。git commit -m "message"
:提交暂存区的更改到本地仓库。git status
:查看仓库当前状态。git log
:查看提交历史记录。
分支与合并
git branch
:列出、创建或删除分支。git checkout [branch-name]
:切换分支。git merge [branch]
:合并指定分支到当前分支。
远程操作
git remote add [name] [url]
:添加一个新的远程仓库。git push [remote-name] [branch-name]
:推送本地分支到远程仓库。git pull [remote-name] [branch-name]
:从远程仓库拉取代码并合并到当前分支。git fetch [remote-name]
:从远程仓库获取数据到本地。
查看差异
git diff
:查看工作目录中未暂存的更改。git diff --staged
:查看已暂存的与上次提交的差异。
撤销更改
git checkout -- [file]
:撤销对文件的修改。git reset [commit]
:重置当前HEAD到指定提交,可选择性地更新暂存区或工作目录。git revert [commit]
:生成一个新提交,撤销指定提交的更改。
高级特性
git tag
:用于标记发布版本。git rebase
:重新整理提交历史。git cherry-pick [commit-id]
:选择一个提交并应用到其他分支。
处理大文件
-
使用 Git LFS(Large File Storage)来管理大文件:
git lfs install git lfs track "*.psd" git add .gitattributes
1. 工作目录(Working Directory)
工作目录是你在计算机上实际看到的文件和目录,这里包含了当前项目的所有文件。当你编辑文件时,这些更改发生在工作目录中。这些文件尚未被 Git 跟踪,除非你显式地告诉 Git 去注意(通过 git add
命令将它们加入暂存区)。
2. 暂存区(Staging Area)
暂存区,也称为索引,是一个准备区,用于临时保存你对工作目录中文件所做的更改。通过 git add
命令,你可以选择性地添加工作目录中的更改到暂存区。只有在暂存区中的更改才会被包括在下一次提交中。暂存区允许你细致地控制即将提交的代码,确保只提交你想要的更改。
3. 本地仓库(Local Repository)
本地仓库是你的项目的 Git 数据库,存储了项目的历史记录、分支、标签等信息。当你执行 git commit
命令时,Git 会将暂存区中的更改提交到本地仓库。这个仓库位于你的计算机上,包括所有的提交历史,使得你可以回滚到之前的状态、创建和合并分支,以及进行其他版本控制操作。
工作流程简述
- 修改文件:在工作目录中对文件进行更改。
- 暂存更改:通过
git add
将更改的文件添加到暂存区,准备下一次提交。 - 提交更改:通过
git commit
将暂存区的更改提交到本地仓库。这一步会将更改永久记录到版本历史中。
通过这个流程,你可以有效地管理你的代码更改和版本控制。暂存区的设计使得你可以在最终提交之前精确控制哪些更改被包括,而本地仓库则是你项目的安全备份,记录了所有的版本历史。这种机制使得 Git 强大而灵活,适用于各种规模的项目开发。
好的,让我们以一个具体的项目目录结构为例来阐述如何使用 Git 中的工作目录、暂存区和本地仓库。假设你正在开发一个简单的网页项目,项目名称为 WebProject
。
项目目录结构
一个案例: WebProject
目录结构如下:
WebProject/
│
├── index.html
├── style.css
├── script.js
└── img/
└── logo.png
步骤 1: 初始化 Git 仓库
首先,在项目的根目录下初始化 Git 仓库。打开终端,切换到 WebProject
目录,然后执行:
cd WebProject
git init
这会在 WebProject
目录下创建一个 .git
文件夹,其中包含了所有 Git 需要的数据和对象,此时该目录成为了一个本地仓库。
步骤 2: 工作目录的使用
你在 index.html
、style.css
和 script.js
文件中进行了修改。这些文件当前处于工作目录中。在工作目录中,Git 还不知道这些更改,直到你明确告诉它。
步骤 3: 使用暂存区
你决定将这些更改添加到下一个提交中。你需要先将这些文件的更改添加到暂存区:
git add index.html style.css script.js
执行这个命令后,这些文件的当前更改被添加到暂存区。在这个阶段,你可以使用 git status
命令查看哪些文件已经被暂存。
步骤 4: 提交到本地仓库
一旦你满意于暂存区的状态,并准备将更改保存到版本历史中,你可以进行提交:
git commit -m "Updated the homepage and styles"
这个命令会将暂存区的内容提交到本地仓库中。现在,这些更改成为了项目的一部分,并记录在版本历史中。
步骤 5: 推送到远程仓库
如果你的项目托管在如 GitHub 这样的远程仓库上,你可能还会想将本地的更改推送到远程仓库:
git remote add origin https://github.com/yourusername/WebProject.git
git push -u origin master
这些命令首先添加了远程仓库的地址,然后将代码推送到远程仓库。
通过这个流程,你可以看到如何在实际的项目中应用工作目录、暂存区和本地仓库的概念。这样的管理方式使得你可以控制何时进行更改的记录,以及如何组织这些更改以便于团队协作和版本控制。
其实情况有些不同。当你使用 git add style.css
命令时,你是在将 style.css
文件当前的状态(即它在那一刻的内容)添加到暂存区。这意味着 Git 在那个特定时刻“记录”了文件的状态,准备将这个状态包含在下一次提交中。
如果在执行 git add
后,你继续修改了 style.css
文件,这些后续的修改不会自动被加入到暂存区。为了包括这些新的修改在内,你需要再次执行 git add style.css
来更新暂存区中文件的状态。
本文作者:望兮
本文链接:https://www.cnblogs.com/xywml/p/18407411
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步