赞
踩
Git是一种分布式版本控制系统,深受全球开发者喜爱。它的设计哲学简洁高效,能够处理从小到大的项目。基本上作为一个互联网开发者,都必须掌握这门技术,本文将带你探究Git的工作原理及实战处理一些常见问题
以下面具体的示例来说明一下Git的工作原理图:
Example.java
并写入代码git add Example.java
后,Example.java
的当前状态记录到暂存区Example.java
并希望更新暂存区时,需重新执行git add
,会自动覆盖之前已经提交到本地仓库的文件Example.java
的修改完成后,通过执行git commit
命令,将更改永久保存到本地仓库的历史记录中,确保本次修改的内容永远不会丢失git commit -a
等价于 git add + git commit
命令组合git merge
命令允许将不同分支的更改合并到当前分支。git rebase
用于将更改应用于其他分支的最新提交之上,有助于保持历史的清晰。git push
命令将本地仓库的更改上传到远程仓库,如GitHubgit fetch
拉取远程仓库的最新状态,再通过git merge
或git rebase
进行合并或变基git pull
结合了git fetch
与git merge
,从远程仓库获取并自动合并到本地分支git clone
会复制远程仓库的内容到本地git checkout [branch-name]
切换分支git stash
能够存储当前进度,之后可通过git stash pop
恢复这些更改Git作为强大的版本控制工具,其复杂性有时也会让用户头疼。然而,对于大多数问题,Git提供了简洁而优雅的解决方案。这里我们探索几个工作中常见的问题,并提供具体的解决策略
commit --amend
有时我们会在执行git commit
后意识到忘记添加某些文件,或者提交信息写错了
解决方案:
- 使用`git commit --amend`可以重新提交
- 如果忘记添加文件到最近的提交,可以先用`git add`添加文件,然后使用`git commit --amend`无需创建新的提交
示例:
git add forgotten_file.java
git commit --amend -m "Correct commit message"
Cherry-pick
想要将特定的提交从一个分支移动到另一个分支,而不影响其他内容,就可以使用cherry-pick命令
示例:
[原分支] A---B---C---D
\
\
[目标分支] X---Y---Z
想要将提交B从原分支复制到目标分支,具体操作:
# 1.切换到目标分支
git checkout 目标分支
# 2.cherry-pick操作
git cherry-pick B的哈希值
操作后的结果:
[原分支] A---B---C---D
\
\
[目标分支] X---Y---Z---B'
注意:cherry-pick可能会导致冲突,特别是当提交B中的改动与目标分支的现有改动不兼容时,解决冲突后,
可以通过git cherry-pick --continue完成操作,或者如果你决定不进行cherry-pick,可以通过
git cherry-pick --abort来取消操作
git rest --hard + git push origin force
假设由于你过早的合并了master分支,但由于master分支代码出现了重大bug,导致回滚了master,这时候就需要回退到merge master之前的提交点
远程分支main状态:
main: A---B---C---D (错误的提交是C与D,需要强制回滚到B提交点)
强制回滚流程:
1. 在本地重置到正确的提交:
git checkout main
git reset --hard B
本地重置后状态:
main: A---B
3. 强制推送到远程
由于远程分支包含额外的提交(C和D),普通的推送会被拒绝,因此需要使用强制推送
git push origin main --force
执行强制推送后,远程分支状态:
main: A---B
注意事项:
- 强制推送会重写远程分支的历史。这可能对其他协作者造成影响,在执行这种操作前,请确保通知所有团队成员 本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。