本教程整合并优化了 Git 核心命令,涵盖初始化、配置、文件操作、分支管理、远程仓库操作及常见场景,适合快速入门和日常参考。命令按使用流程分组,简洁明了,包含注意事项和最佳实践。
1. 初始化与配置
初始化 Git 仓库并设置基本配置。
-
git init
初始化当前目录为 Git 仓库,创建.git
文件夹。 -
git clone <repository_url>
克隆远程仓库到本地,例如:git clone https://github.com/username/repository.git
。 -
git status
查看当前分支状态,显示已修改、已暂存或未跟踪的文件。 -
git config --global user.name “Your Name”
设置全局用户名,例如:"Your Name"
。 -
git config --global user.email “your.email@example.com”
设置全局邮箱,例如:"your.email@example.com"
。 -
git config --global core.editor “code --wait”
配置默认编辑器为 VS Code(替代 VIM)。 -
git config --global --edit
用默认编辑器打开 Git 配置文件。
2. 文件操作与提交
管理文件修改、暂存和提交。
-
git add <file_name>
将指定文件暂存到待提交区域。 -
git add .
暂存当前目录下所有修改的文件。建议:逐个添加文件,确保提交内容清晰。 -
git commit -m “message”
提交暂存文件到本地仓库,附带简洁描述性提交信息,例如:git commit -m "Add login feature"
。 -
touch .gitignore
创建.gitignore
文件,指定忽略的文件或文件夹(例如:node_modules/
、.env
)。 -
git checkout – <file_name>
丢弃工作区中指定文件的修改,恢复到最新提交状态。 -
git reset --hard <commit_hash>
将当前分支回退到指定提交,丢弃之后的所有更改。注意:谨慎使用,数据不可恢复。
3. 查看历史与差异
检查提交历史和代码差异。
-
git log
显示详细提交历史记录。 -
git log --oneline
以单行格式简洁显示提交历史。 -
git show <commit_hash>
查看指定提交的详细信息。 -
git diff
比较工作区与暂存区之间的差异。 -
git diff --staged
比较暂存区与上次提交之间的差异。 -
git diff <commit_hash1> <commit_hash2>
比较两个提交之间的差异(可使用..
简化,如git diff <hash1>..<hash2>
)。 -
git diff
比较两个分支之间的差异。
4. 分支管理
创建、切换、合并和删除分支。
-
git branch
列出所有分支,当前分支前有*
标记。 -
git branch <branch_name>
创建新分支,例如:git branch feature-login
。 -
git checkout <branch_name> 或 git switch <branch_name>
切换到指定分支。 -
git checkout -b <branch_name> 或 git switch -c <branch_name>
创建并立即切换到新分支。 -
git merge <branch_name>
将指定分支合并到当前分支。建议:在main
分支上合并其他分支。
注意:若不同分支修改同一文件,可能引发冲突,需手动编辑文件,保留所需代码并删除冲突标记。 -
git rebase <branch_name>
将当前分支的提交重新应用到指定分支(例如:master
)上。注意:会改写历史,团队协作时需谨慎。 -
git branch -d <branch_name>
删除已合并的本地分支。未合并分支需用-D
强制删除。
5. 暂存工作
临时保存修改以切换分支。
-
git stash
暂存当前分支的未提交修改,允许切换分支。 -
git stash pop
恢复最近一次暂存的修改,可在原分支或新分支应用。 -
git stash list
列出所有暂存记录。
6. 远程仓库操作
与远程仓库(例如 GitHub)交互。
-
git remote -v
查看已配置的远程仓库信息。 -
git remote add origin
添加远程仓库,例如:git remote add origin https://github.com/username/repository.git
。 -
git remote remove
删除指定远程仓库连接。 -
git remote rename <old_name> <new_name>
重命名远程仓库连接。 -
git remote set-url origin <new_url>
修改远程仓库 URL。 -
git push -u origin <branch_name>
推送本地分支到远程仓库并设置上游分支,例如:git push -u origin main
。 -
git push origin <branch_name>
推送指定分支到远程仓库。 -
git pull
从远程仓库拉取代码并合并到当前分支。等效于git fetch
加git merge
。
7. GitHub特定操作
在 GitHub 上创建和管理仓库。
-
创建 GitHub 仓库
登录 GitHub,点击“New Repository”创建新仓库,复制仓库 URL。 -
git branch -M main
重命名默认分支为main
(或自定义名称),例如从master
改为main
。 -
配置 SSH 密钥
- 生成 SSH 密钥并添加到 SSH 代理:参考 GitHub 指南。
- 添加 SSH 密钥到 GitHub 账户:参考 GitHub 指南。
- 测试 SSH 连接:参考 GitHub 指南。
8. SSH连接到 GitHub
配置 SSH 连接,避免每次推送时输入用户名和密码。
-
生成 SSH 密钥对
运行以下命令生成一个新的 SSH 密钥对:ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
按照提示操作,通常使用默认路径
~/.ssh/id_rsa
。 -
将公钥添加到 GitHub
-
查看并复制公钥内容:
cat ~/.ssh/id_rsa.pub
-
登录 GitHub,进入 Settings > SSH and GPG keys,点击 New SSH key,将复制的公钥粘贴并保存。
-
-
测试 SSH 连接
运行以下命令测试 SSH 连接是否成功:ssh -T git@github.com
如果成功,会显示:
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
-
更改远程仓库 URL 为 SSH
如果你之前使用了 HTTPS 链接,改为 SSH 链接:git remote set-url origin git@github.com:username/repository.git
之后推送时不会再要求输入用户名和密码,而是使用 SSH 密钥进行身份验证。
9. 注意事项与最佳实践
- 分支隔离:除首次提交外,各分支独立,提交不会相互影响,除非执行合并或变基操作。
- 冲突解决:合并冲突时,Git 会标记冲突区域,需手动编辑文件,保留所需代码,删除冲突标记(如
<<<<<<<
、=======
、>>>>>>>
)。 - 谨慎使用 rebase:
git rebase
会改写提交历史,公开分支上使用可能导致团队协作问题。 - 提交信息:编写清晰的提交信息,描述变更内容,例如“Fix login bug”或“Add user profile page”。
- gitignore:在项目初期创建
.gitignore
,忽略临时文件、依赖文件夹(如node_modules/
)等。 - 备份与安全:定期推送代码到远程仓库,避免本地数据丢失。