技技术学习2026.10.28

git应用

讲解了git工具的日常开发

5 MIN READ1278 字

Git 命令:从日常开发到提交 GitHub

从日常开发到把代码提交到 GitHub,Git 的用法可以拆成两条线来理解:本地日常循环(改代码、存档)和首次连接远程(建仓库、推上去)。掌握这两条线,大部分日常场景就够用了。


一、首次把本地项目提交到 GitHub

如果你有一个本地项目还没和 GitHub 关联过,按下面顺序走一遍。

⚠️ 关键点:在 GitHub 上创建仓库时,不要勾选添加 README、.gitignore 或 License。否则远程仓库会有一个初始提交,和你本地历史冲突,首次推送会变麻烦。

第一步:配置身份(只需一次)

Git 需要知道是谁在提交。在终端或 Git Bash 里执行:

git config --global user.name "你的名字"
git config --global user.email "你的邮箱"

邮箱建议用你 GitHub 账号绑定的邮箱,这样提交记录才能正确关联到你的账号。

第二步:在项目文件夹里初始化仓库

cd /你的项目路径
git init

这会在当前目录创建一个隐藏的 .git 文件夹,本地仓库就建好了。

第三步:把文件加入暂存区并提交

git add .
git commit -m "Initial commit"
  • git add .:把所有文件放入”待提交”状态
  • commit:真正在本地存下第一个快照

提交信息写得具体一点,比如 "Add user login page",比笼统的 "update" 有用得多。

第四步:关联远程仓库并推送

先在 GitHub 上创建一个空仓库,拿到仓库地址(HTTPS 或 SSH 都行)。然后:

git branch -M main
git remote add origin <你的仓库地址>
git push -u origin main
命令作用
git branch -M main把本地分支名统一成 main(GitHub 默认名)
git remote add origin关联远程仓库
git push -u origin main-u 记住推送关系,之后直接 git push

二、日常开发循环

首次推送成功后,以后每一次改代码,基本就是三个动作循环:

1. 改完代码,先看看改了什么

git status
git diff
  • status:告诉你哪些文件变了、哪些已经暂存了
  • diff:逐行展示你具体改了什么

💡 养成提交前看一眼 diff 的习惯,能避免把调试用的临时改动也提交上去。

2. 暂存并提交

git add .
git commit -m "修复了某个问题"

如果是修改已经跟踪过的文件,不想逐个 add,可以用:

git commit -am "信息"

一步完成(但新文件不会被包含,新文件还是要先 add)。

3. 推送到 GitHub

git push

因为首次用了 -u,Git 已经记住了推送到哪里,这条短命令就够了。


三、几个日常会碰到的场景

查看提交历史

git log --oneline

一行一个提交,简洁清楚。去掉 --oneline 会显示完整信息,但太长,日常看历史用这个就够了。

改错了最后一次提交信息

git commit --amend -m "新的提交信息"

如果只是提交信息写错,或者漏加了某个文件想补进上一次提交,用 --amend。

⚠️ 如果已经推送到远程,修正后需要 git push --force,在多人协作的分支上要谨慎。

撤回还没提交的修改

git restore <文件名>          # 丢弃工作区某个文件的修改
git restore --staged <文件名> # 把文件从暂存区撤下来

restore 是较新的命令,用来替代旧版中容易混淆的 checkout -- 和 reset HEAD。

⚠️ 被 restore 丢弃的工作区修改无法恢复,执行前确认一下。

临时切去处理别的事,但手头代码没写完

git stash        # 暂存当前改动
# 去干别的事,回来之后
git stash pop    # 恢复改动

stash 把当前未提交的改动暂存起来,工作区恢复到干净状态。回来 pop 一下,改动又回来了。

分支的简单用法

git switch -c feature-xxx   # 创建并切换到新分支
git switch main             # 切回主分支
git merge feature-xxx       # 在主分支上合并

做新功能或改 bug 时开一个分支,改完再合回 main,这样 main 上的代码始终是相对稳定的。

💡 switch -c 是现在推荐的写法,比老式的 checkout -b 更清晰。


四、容易踩的坑

推送被拒绝,提示 rejected

最常见的原因是远程仓库有你本地没有的提交(比如你直接在 GitHub 网页上改了文件)。

不要上来就用 git push --force,那会覆盖远程历史。先试试:

git pull --rebase origin main

把远程的改动拉下来、变基到你的提交之前,解决可能的冲突后再 push。

HTTPS 推送时要求输入密码

GitHub 已经不接受账号密码做 Git 操作了。你需要:

  • 用 Personal Access Token 代替密码,或
  • 改用 SSH 方式连接(配一次 SSH key,一劳永逸)

提交里混进了不该传的文件

比如 node_modules/、.env、日志文件。在项目根目录建一个 .gitignore,把这些写进去。

如果文件已经被 Git 跟踪了,光加 .gitignore 不够,还需要:

git rm --cached <文件>

把它从跟踪中移除(本地文件保留)。

MARGINALIA

留言0

路过的话,留下一枚脚印吧。
BE KIND, BLOOM SOFTLY.

    还没有留言。做第一个在这里留下脚印的人吧。

    登录后会把留言记在你的名字下;不注册也可以直接留言。
    支持换行 · 最多 2000 字0 / 2000