This is a long story

Recording

Git技巧

发布于 # Code

假如在家里写完忘记了push, 去公司就没拉,然后在公司又写了 新的,怎么push

这也是一个超级经典的“健忘症”场景!很多人刚开始用 Git 时都会遇到。

先别慌,你的代码绝对不会丢。我们先来看看现在的局面:

现在你人在公司,想要把公司写的新内容推(Push)上去。因为你家里的修改还没上云,所以你现在在公司直接点击“推送 (Push)”是 100% 可以成功的!

以下是具体的操作逻辑和后续回家后的处理办法:


第一阶段:在公司电脑(电脑 B)上的操作

因为云端目前没有任何新提交(家里没推上去,云端就相当于没变),所以你公司的电脑实际上并没有“落后”于云端。

  1. 直接推送:在公司电脑写完后,像往常一样,去 VS Code 的 Git 面板:
  1. 结果:公司电脑的新代码顺利进入 GitHub 云端。

第二阶段:晚上回到家(电脑 A)的操作(关键!)

现在,GitHub 云端已经有了你在公司写的最新内容,而你的家里电脑 A里还留着昨天写完忘记推的内容。

这时候你打开家里的电脑,绝对不能直接点推送,也不能直接点拉取(直接拉取可能会报错)。请按照以下步骤安全合并:

步骤 1:先在家里提交(Commit)本地的修改

在家里电脑的 VS Code 中,把你之前写完的内容先“打包”本地提交:

  1. 打开左侧 Git 面板。
  2. 消息框写上备注(如:“家里写的内容补交”)。
  3. 点击 「提交 (Commit)」(⚠️ 注意:只点提交,千万不要点同步或推送!)。

步骤 2:点击「拉取 (Pull)」合并两端

提交完成后,点击那个向下的小箭头(拉取),把你在公司写的内容拉下来。

此时,Git 会自动把“公司写的”和“家里写的”合并在一起:

步骤 3:最后点击「推送 (Push)」

合并完成后,点击向上的小箭头(推送)

这样,你家里写的内容和公司写的内容,就完美地在 GitHub 云端“合二为一”了!


💡 贴心总结:

如果在家里先写的没push,去公司又写了新的,也没push, 回到家又写了新的怎么办?####

这也是个非常有意思的“滚雪球”场景!这时候你的代码其实分布在三个不同的地方,像一条多叉路口:

别担心,虽然听上去有点套娃,但其实非常好解决。因为云端目前仍然没有任何新代码,这就意味着在你的两条“分支”发生碰撞前,我们可以非常从容地在家里电脑上把本地的“前天”和“今天”的内容先合并整理好。

请按照以下顺序操作,就能把这三批代码安全、无损地合在一起:


第一步:今晚在家里 🏠,先把本地的所有修改合并提交

因为你前天和今天都在家里写了新东西,这两个修改都在这台电脑上。

  1. 打开家里电脑的 VS Code。
  2. 进入左侧 Git 面板,你会看到“更改 (Changes)”列表里躺着你前天和今天写的所有新文件。
  3. 在消息框里写个备注,比如:"家里的修改打包(含前天和今天)"
  4. 点击 「提交 (Commit)」 按钮。
  1. 点击 「推送 (Push)」(向上的小箭头),把家里电脑这部分打包好的代码推送到 GitHub 云端。

此时的状态:GitHub 云端现在已经拥有了你“前天 + 今天”在家里写的所有最新代码。


第二步:明天去公司 🏢,合并并推送公司电脑的代码

当你明天到了公司,打开公司电脑。此时,公司电脑的代码还停留在昨天,而 GitHub 云端已经有了昨晚你从家里推上去的代码。

由于你昨天在公司写了新东西还没 Push 也没 Commit,请按以下步骤操作:

  1. 先在公司电脑提交本地修改
  1. 拉取云端代码(Pull)
  1. 推送上云(Push)

第三步:明晚回到家 🏠,同步最终版

当你明晚再次回到家,你家里的电脑又落后于云端了(因为公司电脑刚才推了完整版上去)。

  1. 打开家里电脑的 VS Code。
  2. 直接点击「拉取 (Pull)」(向下的小箭头)。
  3. 此时,你在公司合并好的终极版代码就会瞬间同步到你家里。两台电脑和云端彻底达成一致!

💡 核心避坑心法:

其实不管场景多复杂,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