Files
My-Notes/笔记/Git/Visual Studio中使用Git.md

5.8 KiB
Raw Permalink Blame History

Visual Studio 中使用 Git

这篇记录 Visual Studio 里使用 Git 管理 Obsidian 笔记库的流程。

当前笔记库路径:

%USERPROFILE%\OneDrive\Apps\remotely-save\MyNotes

GitHub 远程仓库:

https://github.com/Ki5ter/Obsidian.git

VS 里的几个设置不要混淆

默认位置 Default location: 不是当前正在工作的仓库路径。它只是 Visual Studio 以后 clone 新仓库时默认放到哪里。

推荐设置成类似:

%USERPROFILE%\GitRepos

不推荐设置成:

%USERPROFILE%\OneDrive\Apps\remotely-save\MyNotes

原因是 MyNotes 本身就是一个仓库,不应该再作为所有新仓库的默认存放目录。

Git 全局配置 Git Global Config: 影响电脑上所有 Git 仓库,比如用户名、邮箱、全局代理。

Git 仓库配置 Git Repository Config: 只影响当前打开的这个仓库,比如当前仓库的 origin 地址。

远程库 Remotes: 配置当前本地仓库对应的远程仓库地址。常见写法:

Name: origin
URL: https://github.com/Ki5ter/Obsidian.git

第一次使用的正确流程

  1. 在资源管理器中找到笔记库文件夹:
%USERPROFILE%\OneDrive\Apps\remotely-save\MyNotes
  1. 如果笔记库在 OneDrive 里,先右键文件夹,选择:
始终保留在此设备上
  1. 用 Visual Studio 打开文件夹:
文件 -> 打开 -> 文件夹
  1. 打开 Git 更改 窗口。

  2. 如果还不是 Git 仓库,选择创建 Git 仓库,或者用命令:

git -C "E:\Obsidian\OneDrive\Apps\remotely-save\MyNotes" init
  1. 在当前仓库的远程库里添加:
Name: origin
URL: https://github.com/Ki5ter/Obsidian.git
  1. Git 更改 窗口输入提交信息,例如:
Initial Obsidian notes backup
  1. 点击 全部提交

  2. 点击 推送

提交和推送的区别

全部提交: 只是把改动提交到本地仓库。提交成功后,GitHub 上还不会有变化。

推送: 把本地提交上传到 GitHub 远程仓库。

如果 VS 显示:

2 传出

意思是本地有 2 个 commit 还没有推送到远程仓库。

本地分支名 master 和 main

有些仓库默认分支叫 masterGitHub 新仓库常见默认分支叫 main

如果本地当前是 master,可以直接推送:

git -C "E:\Obsidian\OneDrive\Apps\remotely-save\MyNotes" push -u origin master

如果想改成 main

git -C "E:\Obsidian\OneDrive\Apps\remotely-save\MyNotes" branch -M main
git -C "E:\Obsidian\OneDrive\Apps\remotely-save\MyNotes" push -u origin main

不建议提交 .vs 目录

Visual Studio 会在仓库里生成 .vs/ 目录,用来保存本机缓存、索引、窗口布局等内容。

这些文件通常只和当前电脑有关,不适合推送到 GitHub。建议在 .gitignore 中加入:

/.vs/

如果 .vs/ 已经被 Git 跟踪过,需要取消跟踪但保留本地文件:

git rm --cached -r -- ".vs"
git commit -m "Stop tracking Visual Studio local files"
git push

Clash Verge 代理问题

如果推送时报错:

Failed to connect to 127.0.0.1 port 10809

说明 Git 被配置成使用 127.0.0.1:10809 代理,但 Clash Verge 没有在这个端口提供服务。

当前 Clash Verge 配置中常见端口:

mixed-port: 7897
socks-port: 7898
port: 7899

推荐让 Git 使用 mixed-port

git config --global http.proxy http://127.0.0.1:7897
git config --global https.proxy http://127.0.0.1:7897
git -C "E:\Obsidian\OneDrive\Apps\remotely-save\MyNotes" config http.proxy http://127.0.0.1:7897
git -C "E:\Obsidian\OneDrive\Apps\remotely-save\MyNotes" config https.proxy http://127.0.0.1:7897

然后再推送:

git -C "E:\Obsidian\OneDrive\Apps\remotely-save\MyNotes" push -u origin master

或者回 Visual Studio 里点击 推送

如果不想让 Git 走代理,可以清除代理:

git config --global --unset http.proxy
git config --global --unset https.proxy
git -C "E:\Obsidian\OneDrive\Apps\remotely-save\MyNotes" config --unset http.proxy
git -C "E:\Obsidian\OneDrive\Apps\remotely-save\MyNotes" config --unset https.proxy

TUN 虚拟网卡模式

TUN 或虚拟网卡模式可以让更多系统流量进入代理,理论上也可能让 Git 不需要单独设置代理。

但它不是解决 Git 推送问题的第一选择,因为它会涉及管理员权限、DNS、路由和规则匹配。

当前场景更推荐:

Clash Verge 正常运行
Git 的 http.proxy / https.proxy 指向 Clash Verge 的 mixed-port
VS 中正常点击推送

常见排查命令

查看当前仓库状态:

git -C "E:\Obsidian\OneDrive\Apps\remotely-save\MyNotes" status --short --branch

查看远程仓库:

git -C "E:\Obsidian\OneDrive\Apps\remotely-save\MyNotes" remote -v

查看分支:

git -C "E:\Obsidian\OneDrive\Apps\remotely-save\MyNotes" branch -vv

查看最近提交:

git -C "E:\Obsidian\OneDrive\Apps\remotely-save\MyNotes" log --oneline --decorate -5

查看 Git 代理:

git config --global --get-regexp "http.*proxy|https.*proxy"
git -C "E:\Obsidian\OneDrive\Apps\remotely-save\MyNotes" config --get-regexp "http.*proxy|https.*proxy"

OneDrive 注意事项

如果出现下面这些错误:

not a git repository
Permission denied
The cloud file provider is not running
unable to access .git/info/exclude

优先检查 OneDrive 是否正在运行,以及笔记库是否已经设置为:

始终保留在此设备上

Git 仓库里的 .git 目录不要只存在云端占位。.git 目录读不到时,Visual Studio 会无法刷新仓库设置,也可能无法提交或推送。