Git常用命令

1. 进入本地仓库目录

打开终端(或 Git Bash),切换到仓库根目录:

1
cd /path/to/your-repo

2. 查看修改状态

检查哪些文件被修改:

1
git status
  • 红色显示的文件表示已修改但未添加到暂存区。

3. 将修改添加到暂存区

添加单个文件:

1
git add 文件名

或添加所有修改的文件:

1
git add .

再次运行 git status,绿色显示的文件表示已添加到暂存区。


4. 提交修改到本地仓库

1
git commit -m "描述你的修改内容(例如:修复登录页面样式问题)"
  • -m 后跟提交信息,需简洁明确(推荐使用英文或中文)。

5. 推送修改到远程仓库

将本地提交推送到远程仓库(默认分支通常是 mainmaster):

1
git push origin 分支名
  • 例如推送到 main 分支:
    1
    git push origin main

6. 验证推送结果

  • 访问远程仓库页面(如 GitHub),检查文件是否更新。
  • 或通过命令查看远程状态:
    1
    2
    git log --oneline  # 查看本地提交记录
    git remote show origin # 检查远程仓库状态

常见问题

  1. 提交后发现漏了文件

    1
    2
    3
    4
    # 继续修改文件,然后再次添加并提交
    git add 漏掉的文件名
    git commit --amend # 合并到上一次提交
    git push -f origin 分支名 # 强制推送(仅限自己的分支)
  2. 推送冲突(多人协作时可能发生):

    1
    git pull origin 分支名  # 先拉取远程最新代码,解决冲突后再推送

默认情况下直接使用 git clone 不会自动克隆子模块(submodule)。子模块信息虽然记录在 .gitmodules 文件中,但其代码需要额外操作才能同步到本地。


如何完整克隆包含子模块的仓库?

方法 1:递归克隆(推荐)

在克隆时添加 --recurse-submodules 参数,一次性递归克隆主仓库和所有子模块

1
git clone --recurse-submodules 仓库URL

方法 2:克隆后初始化子模块

如果已经用普通方式克隆了主仓库,后续可以手动拉取子模块:

1
2
3
4
5
6
7
8
9
10
11
# 进入主仓库目录
cd your-repo

# 初始化子模块配置(从 .gitmodules 读取)
git submodule init

# 拉取子模块代码
git submodule update

# 或者合并成一步:
git submodule update --init

验证子模块

  1. 查看子模块目录是否包含文件(不再是空文件夹):

    1
    ls -la path/to/submodule
  2. 检查子模块状态:

    1
    git submodule status

常见问题

  1. 子模块更新失败

    • 确保子模块的仓库地址可访问(尤其是私有仓库)。
    • 如果子模块本身也有嵌套子模块,使用:
      1
      git submodule update --init --recursive
  2. 切换分支后子模块内容异常
    主仓库切换分支时,子模块可能需要同步更新到对应提交:

    1
    git submodule update --remote

子模块工作原理

  • 主仓库只记录子模块的具体提交哈希,不保存子模块的代码。
  • 子模块是独立的仓库,需要单独拉取和更新。

设置代理

git config –global http.proxy http://127.0.0.1:7080
git config –global https.proxy https://127.0.0.1:7080
取消设置代理
git config –global –unset http.proxy
git config –global –unset https.proxy
可以通过
git config -l
查看设置状态