常用的Git指令

172 阅读4分钟

一直用SourceTree,Git 指令用的很少,今天搜索了一下Git指令,虚心学习一下

1. git commit(提交代码)

git commit 用于将已暂存(git add)的修改提交到本地仓库。

使用步骤:

git add .        # 将所有修改的文件添加到暂存区
git commit -m "提交信息"  # 提交到本地仓库

示例:

git add .
git commit -m "修复了登录界面崩溃的 bug"

如果想一次性添加并提交,也可以用:

git commit -am "快速提交"

注意: -a 只会提交已跟踪的文件(新增的文件仍需要 git add)。


2. git pull(拉取远程代码)

git pull 用于从远程仓库拉取最新代码,并合并到当前分支。

语法:

git pull 远程名 分支名

如果远程名是 origin,当前分支是 main,则可以使用:

git pull origin main

如果你的分支已经和远程绑定了,直接用 git pull 也可以。

注意:

  • 如果本地和远程代码冲突,Git 会要求你手动解决冲突后再提交。

3. git push(推送本地代码到远程)

git push 将本地的提交推送到远程仓库,让其他人可以看到你的更改。

语法:

git push 远程名 分支名

如果远程名是 origin,当前分支是 main,则可以使用:

git push origin main

如果是新分支,首次推送时可能需要:

git push -u origin 新分支名

-u 选项会将本地分支和远程分支关联起来,之后 git push 就可以直接推送。


总结

操作作用
git commit -m "说明"提交代码到本地
git pull origin 分支拉取远程代码并合并
git push origin 分支推送本地代码到远程

建议使用 git pull 先同步代码,再 git push,避免冲突。


另外Git 容易遇到各种异常,比如提交错误、推送失败、拉取冲突等。下面是一些常见的异常场景及解决方法。

1. git commit 相关问题

1.1 提交了错误的代码,想要撤回

情况1:还没 push,只是本地提交错误

可以使用 git reset 撤回:

git reset --soft HEAD~1  # 撤回上一次提交,代码保留在暂存区
git reset --mixed HEAD~1  # 撤回上一次提交,代码保留在工作区
git reset --hard HEAD~1   # 彻底删除上一次提交的内容

⚠️ --hard 操作不可逆,请谨慎使用!

情况2:已经 push 了,想要撤回

如果你已经 git push 了代码,就需要强制回退,并推送到远程:

git reset --hard HEAD~1
git push --force  # 强制推送

⚠️ --force 可能会覆盖远程代码,团队协作时需谨慎使用。


2. git pull 相关问题

2.1 git pull 出现冲突

如果你拉取代码时出现类似这样的错误:

CONFLICT (content): Merge conflict in 文件名

说明你的本地修改和远程代码有冲突,需要手动解决:

  1. 查看冲突的文件(Git 会在文件中标记冲突位置)
  2. 手动修改冲突部分
  3. 标记已解决并提交
git add 冲突文件
git commit -m "解决合并冲突"
git push

2.2 git pull 失败,提示 fatal: refusing to merge unrelated histories

如果两个仓库没有共同的提交历史(比如刚 init 的仓库),可以用:

git pull origin main --allow-unrelated-histories

3. git push 相关问题

3.1 git push 失败,提示 rejected (non-fast-forward)

这个错误通常是因为远程有新的提交,而你的本地分支落后了,需要先 pull

git pull --rebase origin main  # 拉取最新代码并变基
git push origin main

如果冲突较多,可以改用 git pull 解决后再 push。

3.2 git push 失败,提示 remote: Permission to xxx denied

这个通常是 没有权限SSH 认证失败

  • 检查你的 SSH key 是否配置正确:
    ssh -T git@github.com  # 测试 GitHub 连接
    
  • 如果提示 Permission denied (publickey),需要重新添加 SSH key:
    ssh-keygen -t rsa -C "你的邮箱"
    cat ~/.ssh/id_rsa.pub  # 复制公钥到 GitHub/GitLab
    

4. 其他异常情况

4.1 fatal: Not a git repository

如果运行 Git 命令时报:

fatal: Not a git repository (or any of the parent directories): .git

说明当前目录 不是 Git 仓库,解决方法:

git init  # 如果是新项目,先初始化

或者检查是否进入了正确的项目目录。

4.2 误删了某个文件,想要恢复

git checkout -- 文件名  # 恢复工作区的文件
git reset HEAD 文件名   # 取消暂存区的更改

4.3 想丢弃所有本地修改

git reset --hard HEAD  # 撤回所有未提交的修改
git clean -df          # 删除未被 Git 追踪的文件

⚠️ 这个操作会删除所有未提交的更改,请谨慎使用!


总结

错误情况解决方案
git commit 错误提交git reset --soft HEAD~1 撤回
git pull 冲突手动解决冲突,git add + git commit
git pull 提示 unrelated historiesgit pull --allow-unrelated-histories
git push 失败,提示 non-fast-forwardgit pull --rebase 先同步
git push 权限错误检查 SSH key
fatal: Not a git repositorygit init 或进入正确目录
误删文件git checkout -- 文件名 恢复
丢弃所有本地修改git reset --hard HEAD