Git分支文件编辑疑问:切换分支后如何保留不同版本文件?
解答你的Git分支文件版本问题
当然可以在切回master分支时打开app.js的原始版本,但这里要分两种情况来看,核心是Git如何管理工作区和分支版本的:
情况1:你已经在新分支提交了修改
如果在新分支修改完app.js后,已经执行了git add app.js和git commit -m "修改说明"把改动提交到了新分支,那当你切回master分支(执行git checkout master或者git switch master)时,Git会自动把工作区里的app.js替换成master分支上的原始版本。这时候你打开编辑器看到的就是master分支的原始内容了——因为Git会根据当前分支的指向,把对应的文件版本同步到本地工作区。
情况2:你还没提交新分支的修改
如果只是修改了文件但没提交,直接切回master的话,Git会把你未提交的改动留在工作区里,这时候打开编辑器看到的还是修改后的版本(因为工作区文件没被替换)。这时候要看到master的原始版本,有两个可选方案:
- 方案A:暂存未提交的改动
- 先切回你的新分支:
git switch 你的新分支名称 - 执行
git stash把当前未提交的改动暂存到Git的临时存储区 - 再切回master:
git switch master,这时候工作区的app.js就变回原始版本了 - 之后想回到新分支继续修改的话,切回新分支后执行
git stash pop就能恢复之前的改动
- 先切回你的新分支:
- 方案B:直接恢复master的原始文件(谨慎操作)
如果你确定不需要保留未提交的改动,可以直接在master分支执行git checkout HEAD -- app.js,这个命令会用master分支当前的版本(HEAD指向master)覆盖工作区的app.js,这样就能看到原始版本,但未提交的修改会丢失,所以一定要确认后再操作。
你提到“无论处于哪个分支,编辑器都会直接将修改保存到本地文件夹”,这是正常的——编辑器操作的是本地工作区的文件,而Git的分支切换本质是把对应分支的文件版本同步到工作区。只有当分支间的改动已经被Git记录(提交或暂存),切换分支时Git才会安全地替换工作区的文件内容。
内容的提问来源于stack exchange,提问作者Devon Norris
相关产品推荐
相关产品推荐

