Git技巧
假如在家里写完忘记了push, 去公司就没拉,然后在公司又写了 新的,怎么push
这也是一个超级经典的“健忘症”场景!很多人刚开始用 Git 时都会遇到。
先别慌,你的代码绝对不会丢。我们先来看看现在的局面:
- 家里电脑 A:写了新内容,但没推(Push)上去,代码留在家里。
- GitHub 云端:目前还是旧代码。
- 公司电脑 B:因为没拉(Pull),所以在旧代码的基础上,你又写了新的内容。
现在你人在公司,想要把公司写的新内容推(Push)上去。因为你家里的修改还没上云,所以你现在在公司直接点击“推送 (Push)”是 100% 可以成功的!
以下是具体的操作逻辑和后续回家后的处理办法:
第一阶段:在公司电脑(电脑 B)上的操作
因为云端目前没有任何新提交(家里没推上去,云端就相当于没变),所以你公司的电脑实际上并没有“落后”于云端。
- 直接推送:在公司电脑写完后,像往常一样,去 VS Code 的 Git 面板:
- 暂存修改(点
+) - 写下备注(如:“在公司写了新内容”)
- 点击 「提交 (Commit)」,然后点击 「推送 (Push)」。
- 结果:公司电脑的新代码顺利进入 GitHub 云端。
第二阶段:晚上回到家(电脑 A)的操作(关键!)
现在,GitHub 云端已经有了你在公司写的最新内容,而你的家里电脑 A里还留着昨天写完忘记推的内容。
这时候你打开家里的电脑,绝对不能直接点推送,也不能直接点拉取(直接拉取可能会报错)。请按照以下步骤安全合并:
步骤 1:先在家里提交(Commit)本地的修改
在家里电脑的 VS Code 中,把你之前写完的内容先“打包”本地提交:
- 打开左侧 Git 面板。
- 消息框写上备注(如:“家里写的内容补交”)。
- 点击 「提交 (Commit)」(⚠️ 注意:只点提交,千万不要点同步或推送!)。
- 这一步的作用是让 Git 把你家里的草稿正式记录下来,防止等下拉取时被冲掉。
步骤 2:点击「拉取 (Pull)」合并两端
提交完成后,点击那个向下的小箭头(拉取),把你在公司写的内容拉下来。
此时,Git 会自动把“公司写的”和“家里写的”合并在一起:
- 如果你们改的不是同一个文件:Git 会自动合并成功。
- 如果改了同一个文件:VS Code 会像我们之前说的那样,高亮显示冲突,你手动点击选择保留哪一边的修改,然后保存文件,重新提交即可。
步骤 3:最后点击「推送 (Push)」
合并完成后,点击向上的小箭头(推送)。
这样,你家里写的内容和公司写的内容,就完美地在 GitHub 云端“合二为一”了!
💡 贴心总结:
- 人在公司时:正常提交并推送就行(因为云端没变,不会报错)。
- 回到家里时:先本地「提交 (Commit)」,再「拉取 (Pull)」,最后「推送 (Push)」。
如果在家里先写的没push,去公司又写了新的,也没push, 回到家又写了新的怎么办?####
这也是个非常有意思的“滚雪球”场景!这时候你的代码其实分布在三个不同的地方,像一条多叉路口:
- 家里电脑 🏠:有前天写的文件,以及今天写的新文件(这两部分目前都在家里,没有上云)。
- GitHub 云端 ☁️:还是最原始的旧代码(因为你一直没 Push,云端至今是一片净土)。
- 公司电脑 🏢:有昨天在公司写的新文件(还在公司电脑上,没 Push 也未上云)。
别担心,虽然听上去有点套娃,但其实非常好解决。因为云端目前仍然没有任何新代码,这就意味着在你的两条“分支”发生碰撞前,我们可以非常从容地在家里电脑上把本地的“前天”和“今天”的内容先合并整理好。
请按照以下顺序操作,就能把这三批代码安全、无损地合在一起:
第一步:今晚在家里 🏠,先把本地的所有修改合并提交
因为你前天和今天都在家里写了新东西,这两个修改都在这台电脑上。
- 打开家里电脑的 VS Code。
- 进入左侧 Git 面板,你会看到“更改 (Changes)”列表里躺着你前天和今天写的所有新文件。
- 在消息框里写个备注,比如:
"家里的修改打包(含前天和今天)"。 - 点击 「提交 (Commit)」 按钮。
- ⚠️ 注意:现在绝对不要点击「推送 (Push)」或者「发布/同步」,只点“提交”!
- 点击 「推送 (Push)」(向上的小箭头),把家里电脑这部分打包好的代码推送到 GitHub 云端。
此时的状态:GitHub 云端现在已经拥有了你“前天 + 今天”在家里写的所有最新代码。
第二步:明天去公司 🏢,合并并推送公司电脑的代码
当你明天到了公司,打开公司电脑。此时,公司电脑的代码还停留在昨天,而 GitHub 云端已经有了昨晚你从家里推上去的代码。
由于你昨天在公司写了新东西还没 Push 也没 Commit,请按以下步骤操作:
- 先在公司电脑提交本地修改:
- 打开公司电脑的 VS Code。
- 在 Git 面板里写下备注,比如:
"公司昨天的修改"。 - 点击 「提交 (Commit)」(同样,只点提交,不点推送)。
- 这一步至关重要,它会把你在公司写的内容锁死在本地数据库里,拉取时绝对不会丢失。
- 拉取云端代码(Pull):
- 点击向下的小箭头(拉取)。
- Git 会自动把你昨晚在家里推上去的代码(前天+今天的内容)下载下来,并与你公司电脑上(昨天的内容)进行合并。
- 如果没有冲突:Git 自动合并成功。
- 如果有冲突:VS Code 会高亮显示,你用鼠标勾选保留哪一边的修改,保存文件,然后重新点一次暂存和提交。
- 推送上云(Push):
- 合并完成后,点击向上的小箭头(推送),把合并后的完整体推送到 GitHub。
第三步:明晚回到家 🏠,同步最终版
当你明晚再次回到家,你家里的电脑又落后于云端了(因为公司电脑刚才推了完整版上去)。
- 打开家里电脑的 VS Code。
- 直接点击「拉取 (Pull)」(向下的小箭头)。
- 此时,你在公司合并好的终极版代码就会瞬间同步到你家里。两台电脑和云端彻底达成一致!
💡 核心避坑心法:
其实不管场景多复杂,Git 的合并逻辑永远只有一句话:
“先在本地打包(Commit)锁死自己的代码,然后拉取(Pull)别人的代码合并,最后推送(Push)。”
只要你在「拉取」前做好了「提交(Commit)」,Git 就绝对有能力保护你的任何一行代码不被覆盖!
有时候push要验证,钩子不正确,可以强行push
git commit -m "晚上修改" --no-verify && git push origin main
如果需要设置邮箱和用户名需要
C:\Users\huyushu\Documents\astro-theme-typography-main>git config --global user.email "xxxxxxxxxx隐私邮箱.noreply.github.com"
C:\Users\huyushu\Documents\astro-theme-typography-main>git config --global user.name "github用户名"
在新设备拉取仓库的时候因为网络原因无法拉取
可以设置为代理客户端的端口
C:\Windows\system32>git config --global http.https://github.com.proxy socks5://127.0.0.1:10808
C:\Windows\system32>git config --global https.https://github.com.proxy socks5://127.0.0.1:10808
C:\Windows\system32> 评论系统还未配置,请设置以下环境变量:
PUBLIC_UTTERANCES_REPO=你的 GitHub 仓库名,例如 owner/repo
PUBLIC_UTTERANCES_ISSUE_TERM=pathname
PUBLIC_UTTERANCES_LABEL=comment
PUBLIC_UTTERANCES_THEME=github-light