TECH

Git 从零到远程:初始化、提交、推送与分支管理命令大全

本文面向初学者与日常开发者,完整记录从本地新建仓库到推送远程、分支管理与常见问题解决的命令行操作。所有命令均在 macOS/Linux 终端与 Windows PowerShell 下可用。

一、前置配置(全局一次即可)
检查 Git 版本:
git --version
设置用户名与邮箱(用于提交记录显示):
git config --global user.name "你的名字" git config --global user.email "你的邮箱"
建议将默认分支设为 main:
git config --global init.defaultBranch main

二、新建本地仓库(从 0 开始)
mkdir my-project && cd my-project git init git status
创建 .gitignore 忽略文件示例(根据项目调整):
echo "node_modules/\n.DS_Store\n.env" > .gitignore
将文件加入暂存区并提交:
git add . git commit -m "初始化项目"

三、连接并推送到远程仓库(GitHub/GitLab/自建 Gitea 等)
在远程平台先创建空仓库,复制其地址(HTTPS 或 SSH)。

添加远程并验证:
git remote add origin https://github.com/yourname/yourrepo.git git remote -v
首次将本地 main 推送到远程并建立追踪:
git push -u origin main
如果远程默认分支为 master,可改本地分支名或推送到 master:
git branch -M master git push -u origin master

四、从远程拉取仓库(已有项目)
直接克隆:
git clone https://github.com/yourname/yourrepo.git
克隆指定分支:
git clone -b develop https://github.com/yourname/yourrepo.git
使用 SSH(免密推送,需预先配置公钥):
git clone git@github.com:yourname/yourrepo.git

五、同步与更新本地代码
拉取远程最新提交(合并到当前分支):
git pull
先获取,再选择合并:
git fetch git merge origin/main
推荐:保持线性历史的拉取方式:
git pull --rebase 如果提示本地有修改,如果需要本地修改保留,可使用:
git pull --rebase --autostash 如果不需要,直接重置到远程最新:
git reset --hard origin/main

六、分支管理日常操作
查看本地与远程分支:
git branch -a
新建分支:
git branch feature/login 或创建并切换:
git switch -c feature/login (兼容老命令)git checkout -b feature/login
切换分支:
git switch main (兼容)git checkout main
重命名当前分支:
git branch -m feature/auth
删除本地分支:
git branch -d feature/login 强制删除(未合并也删):
git branch -D feature/login
推送分支并建立追踪:
git push -u origin feature/login
合并分支到 main(先切到 main):
git switch main git merge feature/login

七、解决合并冲突的基本流程
发生冲突时,Git 会标记冲突文件:
git status 手动编辑冲突文件,保留正确内容后:
git add . git commit
放弃本次合并:
git merge --abort

八、暂存与清理
临时搁置未提交的改动:
git stash 恢复并移除暂存:
git stash pop 仅恢复不删除:
git stash apply
清理未跟踪文件(谨慎): git clean -fd

九、历史、回退与恢复
查看提交历史(精简图示):
git log --oneline --graph --decorate --all
恢复某个文件到指定提交:
git checkout <commit> -- path/to/file
反做一个提交(创建新的“抵消”提交):
git revert <commit>
回退分支到某提交(会改历史,谨慎):
git reset --hard <commit> 注意:reset 会改变历史,团队协作请先沟通。

十、远程分支与上游设置
删除远程分支:
git push origin --delete feature/login
为本地分支设置上游:
git branch --set-upstream-to=origin/develop develop
修改远程地址(HTTPS → SSH 或仓库迁移):
git remote set-url origin git@github.com:yourname/yourrepo.git

十一、常见错误速查
fatal: not a git repository → 请先进入项目目录或执行 git init fatal: Authentication failed → 检查 HTTPS 令牌或配置 SSH 公钥 ! [rejected] non-fast-forward → 先 git pull --rebase 再推送,或与团队确认重写历史 File too large → 使用 Git LFS:git lfs installgit lfs track "*.bin"

十二、变基(高级但常用)
将功能分支基于最新 main(减少无意义合并):
git switch feature/login git fetch git rebase origin/main
交互式整理最近 N 次提交(合并/改注释/重排):
git rebase -i HEAD~5

结语与速查清单(复制即用)
新建并推送:
git init && git add . && git commit -m "init" git branch -M main && git remote add origin <远程地址> git push -u origin main
分支日常:
git switch -c feature/x git push -u origin feature/x git switch main && git pull --rebase && git merge feature/x