以下是一个 全面的 Git 指令大全,涵盖了从基本操作到高级用法。
1. 配置 Git
初始化 Git 配置
git config --global user.name "Your Name" # 设置用户名
git config --global user.email "you@example.com" # 设置邮箱
git config --global core.editor "vim" # 设置默认编辑器
git config --global core.autocrlf input # 处理换行符(Linux/Mac)
git config --global core.autocrlf true # 处理换行符(Windows)
查看配置
git config --list # 查看所有配置信息
2. 基本操作
初始化 Git 仓库
git init # 初始化一个本地 Git 仓库
克隆远程仓库
git clone <repository-url> # 克隆远程仓库到本地
3. 分支操作
查看分支
git branch # 列出本地分支
git branch -r # 列出远程分支
git branch -a # 列出所有分支(本地 + 远程)
创建分支
git branch <branch-name> # 创建新分支
切换分支
git checkout <branch-name> # 切换到某个分支
git switch <branch-name> # 新版切换分支命令
创建并切换分支
git checkout -b <branch-name> # 创建并切换到新分支
git switch -c <branch-name> # 新版创建并切换
删除分支
git branch -d <branch-name> # 删除本地分支(已合并)
git branch -D <branch-name> # 强制删除本地分支(未合并)
推送本地分支到远程
git push origin <branch-name>
删除远程分支
git push origin --delete <branch-name>
4. 提交代码
添加文件到暂存区
git add <file-name> # 添加单个文件
git add . # 添加当前目录的所有文件
git add *.txt # 添加所有 .txt 文件
查看当前状态
git status # 查看工作区和暂存区的状态
提交代码到本地仓库
git commit -m "commit message" # 提交并附带提交信息
git commit # 启动编辑器进行提交
修改最后一次提交
git commit --amend # 修改上一次的提交信息或文件
5. 查看历史
查看提交历史
git log # 查看完整提交历史
git log --oneline # 简化输出(每个提交一行)
git log --graph --oneline # 显示分支图
git log -p # 查看每次提交的代码改动
查看某文件的修改历史
git log -- <file-name> # 查看某个文件的历史
6. 回滚与撤销
撤销文件修改
git checkout -- <file-name> # 撤销工作区文件修改(本地未 add)
撤销暂存区文件
git reset HEAD <file-name> # 将暂存区文件撤回到工作区
回滚到指定提交
git reset --soft <commit-id> # 回滚到某提交,保留工作区文件和暂存区
git reset --mixed <commit-id> # 回滚到某提交,保留工作区文件,清空暂存区
git reset --hard <commit-id> # 回滚到某提交,清空工作区和暂存区
7. 同步远程仓库
查看远程仓库
git remote -v # 查看远程仓库地址
添加远程仓库
git remote add origin <repository-url> # 绑定远程仓库
拉取代码
git pull origin <branch-name> # 拉取远程分支代码并合并到当前分支
推送代码
git push origin <branch-name> # 推送当前分支到远程仓库
8. 合并与冲突解决
合并分支
git merge <branch-name> # 将指定分支合并到当前分支
解决冲突
- 打开冲突文件,手动解决冲突。
- 将解决冲突后的文件添加到暂存区:
git add <file-name>
- 提交合并:
git commit
9. 标签操作
创建标签
git tag <tag-name> # 创建轻量级标签
git tag -a <tag-name> -m "message" # 创建带注释的标签
查看标签
git tag # 查看所有标签
推送标签到远程
git push origin <tag-name> # 推送指定标签
git push origin --tags # 推送所有标签
删除标签
git tag -d <tag-name> # 删除本地标签
git push origin --delete <tag-name> # 删除远程标签
10. Stash(存储现场)
保存当前工作现场
git stash # 保存未提交的修改
git stash save "message" # 保存并附加描述
查看所有存储的现场
git stash list
恢复工作现场
git stash apply # 应用最近一次存储的现场
git stash apply stash@{n} # 应用指定的现场
删除存储的现场
git stash drop stash@{n} # 删除指定的存储
git stash clear # 清空所有存储
11. 高级操作
比较差异
git diff # 查看工作区和暂存区的差异
git diff --cached # 查看暂存区和上一次提交的差异
git diff <branch-name> # 比较当前分支和指定分支的差异
git diff <commit-id1> <commit-id2> # 比较两次提交的差异
Rebasing(变基)
git rebase <branch-name> # 将当前分支的提交变基到指定分支
Cherry-pick(挑拣提交)
git cherry-pick <commit-id> # 应用某次提交到当前分支
12. 清理操作
删除未追踪的文件
git clean -f # 删除未追踪的文件
git clean -fd # 删除未追踪的文件和文件夹
清理缓存
git rm --cached <file-name> # 从暂存区删除文件但保留在工作区
13. 常见问题解决
忽略某些文件
创建 .gitignore
文件并写入需要忽略的文件或文件夹:
*.log
*.pyc
node_modules/
修改远程仓库地址
git remote set-url origin <new-url>
以上是一个较为全面的 Git 指令清单,基本涵盖了常用和高级操作。根据你的实际需求选择使用!
1. 安装 Git
- 检查是否已安装 Git
打开 Git Bash,运行以下命令检查 Git 是否已安装:
如果未安装,可以从 Git 官网 下载并安装。git --version
2. 配置 Git
在安装好 Git 后,需要配置用户名和邮箱信息(这些信息会记录在提交中)。
配置用户名和邮箱
运行以下命令:
git config --global user.name "Your Name" # 设置用户名
git config --global user.email "you@example.com" # 设置邮箱
验证配置
运行以下命令查看配置信息:
git config --list
3. 配置 SSH(推荐方式,便于操作)
为了方便地从 GitHub 克隆代码,需要配置 SSH 密钥 来免密操作。
步骤 1: 检查是否已有 SSH 密钥
运行以下命令检查是否已有 SSH 密钥:
ls -al ~/.ssh
如果文件夹中有 id_rsa
和 id_rsa.pub
文件,说明已有 SSH 密钥,可跳过生成密钥的步骤。
步骤 2: 生成新的 SSH 密钥
如果没有密钥,可以运行以下命令生成一个新的 SSH 密钥:
ssh-keygen -t rsa -b 4096 -C "you@example.com"
- 提示输入保存路径时,直接按 Enter(默认保存为
~/.ssh/id_rsa
)。 - 提示设置密码时,可按 Enter 跳过或输入密码(建议不设置密码,方便操作)。
生成的密钥会存储在 ~/.ssh
文件夹中:
- 私钥:
id_rsa
- 公钥:
id_rsa.pub
步骤 3: 添加 SSH 密钥到 SSH 代理
运行以下命令启动 SSH 代理:
eval "$(ssh-agent -s)"
然后将私钥添加到代理中:
ssh-add ~/.ssh/id_rsa
步骤 4: 将 SSH 公钥添加到 GitHub
-
查看 SSH 公钥内容:
cat ~/.ssh/id_rsa.pub
复制输出的公钥内容。
-
打开 GitHub 网站,登录你的账号:
- 点击右上角头像 -> Settings -> SSH and GPG keys -> New SSH key
- 在 “Title” 中填写描述(如 “My Laptop”)。
- 将复制的公钥粘贴到 “Key” 中并保存。
-
验证是否配置成功:
ssh -T git@github.com
输出如下说明成功:
Hi <username>! You've successfully authenticated, but GitHub does not provide shell access.
4. 克隆 GitHub 上的代码
现在你可以使用 SSH 方式克隆代码。
步骤 1: 获取仓库地址
在 GitHub 项目页面:
- 点击 Code 按钮。
- 选择 SSH,复制仓库地址,如:
git@github.com:username/repository.git
步骤 2: 使用 Git Bash 克隆代码
在目标文件夹中运行以下命令:
git clone git@github.com:username/repository.git
克隆完成后,你可以在本地目录中看到该项目的所有文件。
5. 如果使用 HTTPS(不推荐)
如果不想配置 SSH,也可以使用 HTTPS 克隆,但需要每次操作时输入用户名和密码。
步骤 1: 获取 HTTPS 地址
在 GitHub 项目页面:
- 点击 Code 按钮。
- 选择 HTTPS,复制仓库地址,如:
https://github.com/username/repository.git
步骤 2: 克隆代码
运行以下命令:
git clone https://github.com/username/repository.git
每次拉取或推送代码时,GitHub 会要求你输入用户名和密码。
6. 配置全局 Credential Helper(HTTPS 自动免密方式)
如果必须使用 HTTPS,可以配置 Credential Helper 来免密:
git config --global credential.helper store
运行以上命令后,第一次拉取或推送代码时,输入用户名和密码后会被自动保存,以后不会再要求输入。
7. 常见问题
问题 1: SSH 克隆时报错
报错:
Permission denied (publickey).
解决方法:
- 确保你正确添加了 SSH 公钥到 GitHub。
- 确保 SSH 代理已启动,并添加了私钥:
eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_rsa
通过以上步骤,就可以在 Git Bash 上完成 GitHub 仓库的克隆操作。
1. 基本操作
1.1 克隆远程仓库
将 GitHub 上的仓库克隆到本地:
git clone <仓库地址>
- 示例(SSH 地址):
git clone git@github.com:username/repository.git
- 示例(HTTPS 地址):
git clone https://github.com/username/repository.git
1.2 查看仓库状态
查看当前工作区和暂存区的状态:
git status
1.3 添加文件到暂存区
将工作区的修改添加到暂存区:
git add <文件名> # 添加单个文件
git add . # 添加当前目录下的所有文件
1.4 提交更改到本地仓库
将暂存区的更改提交到本地仓库:
git commit -m "提交信息"
1.5 查看提交历史
查看项目的提交历史:
git log # 完整历史记录
git log --oneline # 简化每个提交为一行
git log --graph # 显示分支和合并图
1.6 推送代码到远程仓库
将本地仓库的更改推送到远程仓库:
git push origin <分支名>
- 示例:
git push origin main
1.7 从远程仓库拉取代码
获取远程仓库的代码并合并到当前分支:
git pull origin <分支名>
- 示例:
git pull origin main
1.8 查看远程仓库
查看当前项目关联的远程仓库:
git remote -v
2. 分支管理
2.1 创建新分支
创建一个新分支:
git branch <分支名>
2.2 切换分支
切换到某个分支:
git checkout <分支名> # 旧指令
git switch <分支名> # 新指令
2.3 创建并切换分支
创建一个新分支并切换到该分支:
git checkout -b <分支名> # 旧指令
git switch -c <分支名> # 新指令
2.4 合并分支
将指定分支合并到当前分支:
git merge <分支名>
- 示例:
git merge feature-branch
2.5 删除分支
删除本地分支:
git branch -d <分支名> # 删除已合并的分支
git branch -D <分支名> # 强制删除未合并的分支
删除远程分支:
git push origin --delete <分支名>
3. 协作操作
3.1 添加远程仓库
为本地项目绑定一个远程仓库:
git remote add origin <仓库地址>
- 示例:
git remote add origin git@github.com:username/repository.git
3.2 查看并同步远程分支
查看所有分支(包括远程分支):
git branch -a
同步远程分支到本地(下载分支,但不切换):
git fetch origin
3.3 解决冲突
- 合并分支时出现冲突:
git merge <分支名>
- 打开冲突文件,手动解决冲突。
- 将解决后的文件添加到暂存区:
git add <冲突文件>
- 提交合并:
git commit
3.4 查看远程仓库状态
查看远程仓库是否有更新:
git remote show origin
3.5 重命名远程分支
- 重命名本地分支:
git branch -m <旧分支名> <新分支名>
- 推送新分支:
git push origin <新分支名>
- 删除旧分支:
git push origin --delete <旧分支名>
4. 高级操作
4.1 回滚到某次提交
回滚到某次提交,但保留当前文件的修改:
git reset --soft <提交ID>
回滚到某次提交,丢弃暂存区的修改,但保留工作区文件:
git reset --mixed <提交ID>
回滚到某次提交,丢弃所有更改(不可恢复):
git reset --hard <提交ID>
4.2 删除未追踪的文件
删除工作区中未被 Git 管理的文件(慎用):
git clean -f
git clean -fd # 删除未追踪的文件和目录
4.3 储存工作现场
当需要切换分支但不想提交当前修改时,可以临时储存工作:
git stash
查看储存的工作现场:
git stash list
恢复某次储存的工作:
git stash apply stash@{n} # 恢复但保留储存记录
git stash pop # 恢复并删除储存记录
4.4 比较差异
查看工作区与暂存区的文件差异:
git diff
查看暂存区与上次提交的文件差异:
git diff --cached
4.5 Cherry-pick(挑选提交)
将另一个分支的某次提交应用到当前分支:
git cherry-pick <提交ID>
4.6 Tag(标签管理)
创建标签:
git tag <标签名>
git tag -a <标签名> -m "描述信息" # 创建带注释的标签
查看标签:
git tag
推送标签到远程:
git push origin <标签名>
git push origin --tags # 推送所有标签
删除本地标签:
git tag -d <标签名>
删除远程标签:
git push origin --delete <标签名>
4.7 修改最后一次提交
如果需要修改最后一次提交的内容或信息:
git commit --amend
5. 实用小技巧
查看简化的分支结构图
git log --oneline --graph --decorate --all
强制覆盖本地分支
将本地分支完全重置为远程分支的状态:
git reset --hard origin/<分支名>
强制覆盖远程分支
将本地分支强制推送到远程(慎用):
git push origin <分支名> --force
从错误信息看,当前在 `login_yz` 分支上,但是尝试推送到 `develop` 分支,而本地没有 `develop` 分支。
有几种解决方案:
## 方案1:推送当前分支到远程
```bash
# 推送当前分支(login_yz)到远程
git push origin login_yz
# 如果是第一次推送这个分支,使用:
git push -u origin login_yz
方案2:如果你想推送到develop分支
# 先查看所有分支
git branch -a
# 如果远程有develop分支,切换到develop并合并
git checkout develop
git merge login_yz
git push origin develop
# 如果本地没有develop分支,从远程拉取
git checkout -b develop origin/develop
git merge login_yz
git push origin develop
方案3:创建新的develop分支
# 基于当前分支创建develop分支
git checkout -b develop
git push -u origin develop
推荐做法:
先查看当前状态:
# 查看当前分支
git branch
# 查看远程分支
git branch -r
# 查看所有分支
git branch -a
``