推送
# 推送
git push origin main # 向origin这个远程仓库推送main分支
# 推送main分支到origin的main分支
git push origin main:main
设置本地分支与codeup远程分支的跟踪关系
git branch --set-upstream-to=codeup/main main
# 后续直接使用
git push codeup
注意事项:
- 权限与冲突:需确保有远程仓库的写入权限,且本地提交不与远程分支冲突。
- 强制推送:慎用
git push -f(强制推送),可能导致他人代码被覆盖,仅在明确后果时使用。 - 分支管理:首次推送需指定远程分支(如
git push -u origin main),后续可直接git push。 - 空推送:若本地无新提交,推送不会覆盖远程代码。
拉取
# 从远程仓库下载最新变更(如分支、标签、提交等),但不合并到当前工作分支
git fetch [remote] [branch]
注意事项:
git fetch的默认行为是更新所有远程分支的本地副本,但并不会自动合并,需要手动执行git merge或git rebase来合并。
# 从远程仓库下载最新变更,并合并到当前分支
git pull [remote] [branch]
# 等价于git fetch + git merge(默认)
注意事项:
- 合并冲突:如果本地修改与远程提交冲突,需手动解决冲突后执行
git add和git commit。 - 合并策略:可通过
--rebase参数改为变基(git pull --rebase),避免冗余合并提交。 - 风险:直接拉取可能覆盖本地未提交的更改,建议先
git stash保存临时修改。 - 分支对应:确保本地分支与远程分支正确关联(如
git branch -u origin/main)。
关键对比与最佳实践

最佳实践:
- 定期同步:先用
git fetch查看远程变更,再决定是否合并。 - 避免直接 Pull:在重要操作前(如合并),先
git stash保存本地未提交的修改。 - 分支策略:
- 开发分支(如
dev)频繁pull,主分支(如main)谨慎push。 - 使用
git pull --rebase保持提交历史线性。 - 冲突处理:
- 冲突时手动编辑文件,标记已解决(
git add),再提交。 - 使用
git merge --abort或git rebase --abort终止未完成的合并/变基。
常见问题:
- Q:
git pull提示 "Already up to date" 但实际有更新?
A: 本地分支可能未跟踪远程分支,执行 git branch -vv 检查关联关系。
- Q: 如何撤销错误的
git pull?
A: 使用 git reflog 查找之前的提交,再通过 git reset --hard [commit] 回退。
- Q: 推送时提示 "non-fast-forward" 错误?
A: 远程分支有新提交,需先 git pull 合并后再推送,或使用 git push -f(谨慎)。