Git常用命令

一、本地操作

1. 初始化仓库

git init                     # 在当前目录创建新仓库
git init <项目目录>          # 在指定目录创建

2. 基础文件操作

命令作用
git add <文件>将文件加入暂存区
git add .添加所有修改的文件
git reset <文件>从暂存区移除文件(保留工作区修改)
git rm <文件>删除文件并暂存删除操作
git mv <旧名> <新名>重命名文件并暂存操作

3. 提交更改

git commit -m "提交描述"      # 提交暂存区的更改
git commit -am "描述"        # 跳过git add直接提交已跟踪文件
git commit --amend           # 修改最后一次提交(可改描述或内容)

4. 分支管理

命令作用
git branch查看本地分支
git branch <分支名>创建新分支
git checkout <分支名>切换分支
git switch <分支名>(Git 2.23+) 更安全的切换方式
git merge <分支名>合并指定分支到当前分支
git branch -d <分支名>删除已合并的分支
git branch -D <分支名>强制删除未合并分支
git branch -m <旧分支名> <新分支名>重命名分支(不在当前分支)
git branch -m <新分支名>重命名分支(在当前分支)

5. 查看状态与历史

命令作用
git status查看工作区和暂存区状态
git log查看提交历史
git log --oneline --graph简洁版历史(含分支图)
git diff查看未暂存的修改
git diff --cached查看暂存区的修改
git show <提交哈希>查看某次提交的详细内容

6. 撤销操作

场景命令
丢弃工作区修改git restore <文件> (Git 2.23+) 或 git checkout -- <文件>
取消暂存的文件git restore --staged <文件>git reset <文件>
回退到某次提交git reset --soft <提交> (保留修改)
git reset --mixed <提交> (默认,保留工作区)
git reset --hard <提交> (彻底丢弃修改)
恢复误删文件git checkout <提交哈希> -- <文件路径>

7. 临时保存更改(无需提交)

git stash                   # 保存当前工作区和暂存区
git stash list              # 查看保存的临时记录
git stash pop               # 恢复最近一次的临时保存
git stash drop              # 删除最近一次的临时保存

8. 标签管理(版本标记)

git tag v1.0.0              # 创建轻量标签
git tag -a v1.0.0 -m "版本说明"  # 创建含注释的标签
git tag                     # 查看所有标签
git show v1.0.0             # 查看标签详情

9. 忽略文件配置

在项目根目录创建 .gitignore 文件,例如:

# 忽略所有.log文件
*.log

# 忽略文件夹
node_modules/
.DS_Store

10. 典型工作流示例

场景:开发新功能
git checkout -b feature-xxx   # 创建功能分支
# 修改代码...
git add .                    # 暂存更改
git commit -m "实现xxx功能"   # 提交
git checkout main            # 切回主分支
git merge feature-xxx        # 合并功能分支
git branch -d feature-xxx    # 删除已合并分支
场景:修复错误
git stash                    # 暂存当前未完成的工作
git checkout -b hotfix-bug   # 创建修复分支
# 修复代码...
git commit -am "修复XX问题"
git checkout main            # 切回主分支
git merge hotfix-bug         # 合并修复
git stash pop                # 恢复之前的工作

注意事项

  1. 频繁提交:小颗粒度提交更易管理
  2. 分支隔离:不同功能/修复使用独立分支
  3. 慎用 --hardgit reset --hard 会永久丢弃未提交的修改
  4. 备份习惯:重要修改前可手动复制项目目录

这些命令已覆盖本地开发的 95% 场景,无需联网即可完成完整的版本控制。

二、远端操作

1. 查看远程仓库信息

git remote -v                  # 查看所有远程仓库的详细信息(URL)
git remote show origin         # 查看特定远程仓库(如origin)的详细信息

2. 添加/删除远程仓库

git remote add <name> <url>    # 添加远程仓库(如 git remote add origin https://...)
git remote remove <name>       # 删除远程仓库(如 git remote remove origin)
git remote rename <old> <new>  # 重命名远程仓库
git remote set-url origin <url>    # 修改远端仓库地址

3. 推送代码到远程仓库

git push <remote> <branch>     # 推送到指定分支(如 git push origin main)
git push -u origin main        # 首次推送并设置上游分支(-u)
git push --set-upstream origin <分支名> # 同上
git push --force               # 强制推送(覆盖远程,谨慎使用)
git push --tags                # 推送所有本地标签到远程

4. 从远程仓库拉取代码

git pull <remote> <branch>    # 拉取并合并(相当于 fetch + merge)
git fetch <remote>            # 仅获取远程更新不自动合并
git fetch --prune             # 同步删除远程已删除的分支

5. 分支操作

git checkout -b <branch> origin/<branch>  # 基于远程分支创建本地分支
git branch -r                  # 查看远程分支
git branch -a                  # 查看所有分支(本地+远程)
git push origin --delete <branch> # 删除远程分支
git branch --set-upstream-to=origin/<分支> [本地分支名] # 为当本地分支创建跟踪信息(设置上游分支)
git branch -u origin/<新远程分支名> [本地分支名] # 同上,可更改现有分支的上游
git branch --unset-upstream [分支名] # 删除上游分支关联
git branch -vv # 查看现有跟踪关系

6. 克隆仓库

git clone <url>                # 克隆仓库(默认拉取所有分支)
git clone --branch <branch> <url> # 克隆指定分支
git clone --depth 1 <url>      # 浅克隆(只获取最近一次提交)

7. 标签操作

git push origin <tagname>      # 推送单个标签
git push origin --tags         # 推送所有本地标签
git fetch --tags               # 获取远程标签

8. 高级操作

git remote set-url origin <new-url>  # 修改远程仓库URL
git push --mirror              # 镜像推送(完全同步本地仓库状态)

常见场景示例:

  1. 首次关联本地仓库到远程

    git remote add origin https://github.com/user/repo.git
    git push -u origin main
    
  2. 同步远程已删除的分支

    git fetch --prune
    
  3. 强制覆盖远程分支(谨慎使用):

    git push --force origin main
    

提示:用 git remote -v 可随时查看当前关联的远程仓库地址。

三、同步重命名远程分支

推送新分支 + 删除旧分支

常规操作:

1. 删除远程旧分支
git push origin --delete <旧分支名>

或:

git push origin :<旧分支名>  # 冒号前有空格
2. 推送新分支到远程
git push origin <新分支名>
3. 关联本地新分支与远程分支
git branch -u origin/<新分支名>

简化操作(一步完成远程分支重命名):

git push origin <新分支名>         # 推送新分支
git push origin --delete <旧分支名> # 删除旧分支

验证结果:

git branch -a  # 查看所有分支(确认本地和远程分支名已更新)

常见问题:

  1. 如果其他人已拉取旧分支
    通知他们运行以下命令同步变更:

    git fetch --prune  # 清理本地缓存的远程分支记录
    git checkout <新分支名>
    
  2. 重命名默认分支(如 mastermain

    • 需先在远程仓库(GitHub/GitLab)设置中将默认分支改为新名称。

    • 本地操作后需更新关联:

      git branch -m master main
      git push -u origin main
      

总结

操作类型命令示例
本地分支重命名git branch -m <旧分支> <新分支>
远程分支重命名git push origin <新分支> + git push origin --delete <旧分支>
更新关联git branch -u origin/<新分支>

四、全局安全目录

git config --global --add safe.directory /storage/emulated/0/FTP/Linux/.git这个命令用于将指定目录添加到 Git 的全局安全目录列表中,解决在某些情况下 Git 因安全限制而拒绝访问仓库的问题。

命令分解

  • git config: Git 的配置命令
  • --global: 将配置应用于当前用户的所有仓库(写入用户全局配置)
  • --add: 添加一个新值到多值配置项(不覆盖现有值)
  • safe.directory: 安全目录配置项
  • /storage/emulated/0/FTP/Linux/.git: 要标记为安全的 Git 仓库路径

为什么需要这个配置?

Git 2.35.2+ 版本引入了更严格的安全检查,当检测到以下情况时会拒绝访问:

  1. 仓库目录所有者与当前用户不同
  2. 仓库位于潜在不安全的共享位置

常见于:

  • Android 设备上的 Termux 环境
  • 跨用户共享的仓库
  • 外部存储设备上的仓库
  • Docker/NFS 挂载的目录

相关操作

1. 查看当前安全目录设置
git config --global --get-all safe.directory
2. 添加多个安全目录
git config --global --add safe.directory /path/to/repo1
git config --global --add safe.directory /path/to/repo2
3. 使用通配符标记所有目录为安全(不推荐)
git config --global --add safe.directory '*'
4. 删除安全目录设置
git config --global --unset-all safe.directory
5. 临时解决方案(单次运行)
git -c safe.directory=/path/to/repo <command>

典型应用场景

在 Android Termux 中访问外部存储的 Git 仓库时:

git config --global --add safe.directory /storage/emulated/0/your-project

这个配置会写入 ~/.gitconfig 文件,内容类似:

[safe]
    directory = /storage/emulated/0/FTP/Linux/.git
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值