git应用
讲解了git工具的日常开发
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.
还没有留言。做第一个在这里留下脚印的人吧。