# 创建新分支
git branch <分支名>
# 切换分支
git checkout <分支名>
# 创建并切换到新分支
git checkout -b <分支名>
# 查看本地分支
git branch
# 删除本地分支
git branch -d <分支名>
# 强制删除本地分支
git branch -D <分支名>
# 添加远程仓库
git remote add <远端名称> <远程仓库URL>
# 查看远程仓库
git remote -v
# 从远程仓库拉取更新
git pull <远端名称> <分支名>
# 推送本地分支到远程仓库
git push <远端名称> <本地分支名>:<远程分支名>
# 推送本地分支并设置上游分支
git push -u <远端名称> <分支名>
# 查看远程分支
git branch -r
# 查看所有分支(本地和远程)
git branch -a
# 删除远程分支
git push <远端名称> --delete <远程分支名>
# 切换到目标分支
git checkout <目标分支>
# 合并源分支到目标分支
git merge <源分支>
# 解决冲突后提交
git add <冲突文件>
git commit
# 查看完整提交历史
git log
# 查看简洁提交历史
git log --oneline
# 查看最近N个提交
git log -n <数量>
# 查看提交历史和更改内容
git log -p
# 查看特定文件的提交历史
git log -- <文件路径>
# 查看特定作者的提交历史
git log --author="<作者名>"
# 查看特定时间段的提交历史
git log --since="<开始时间>" --until="<结束时间>"
# 查看工作区和暂存区的差异
git diff
# 查看暂存区和HEAD的差异
git diff --cached
# 查看工作区和HEAD的差异
git diff HEAD
# 查看两个提交之间的差异
git diff <提交1> <提交2>
# 查看两个分支之间的差异
git diff <分支1> <分支2>
# 软回退:保留工作区和暂存区的更改
git reset --soft <提交哈希>
# 混合回退:保留工作区的更改,清空暂存区
git reset --mixed <提交哈希> # 默认选项
# 硬回退:丢弃工作区和暂存区的更改
git reset --hard <提交哈希>
# 强制本地分支与远程分支保持一致
git reset --hard <远端名称>/<分支名>
# 撤销工作区的修改(未add)
git checkout -- <文件路径>
# 撤销暂存区的修改(已add但未commit)
git reset HEAD <文件路径>
# 撤销最近的提交,保留更改
git reset HEAD~1
# 撤销最近的提交,丢弃更改
git reset --hard HEAD~1
# 撤销特定文件的提交
git checkout HEAD -- <文件路径>
硬回退的风险:git reset --hard 会永久丢弃未提交的更改,无法恢复
推送已回退的分支:如果已经将分支推送到远程仓库,回退后再次推送需要使用 --force 选项,这会覆盖远程分支的历史
共享分支的回退:如果分支被多人共享,回退可能会导致其他开发者的工作丢失
标签的影响:回退操作不会移动标签,标签仍然指向原来的提交
创建备份分支:在回退前创建一个备份分支,保存当前状态
git branch <备份分支名> HEAD
git revert 而不是 git reset,这样可以创建一个新的提交来撤销之前的更改,而不是修改历史
bash
git revert <提交哈希>
沟通协作:如果分支被多人共享,在回退前应与团队成员沟通,确保所有人都了解更改
谨慎使用force推送:只有在确定不会影响其他开发者的情况下,才使用 git push --force
定期备份:定期备份重要的分支和提交,以防止意外丢失
通过遵循这些最佳实践,可以更有效地使用Git,减少错误和冲突,提高开发效率。