Files
My-Notes/笔记/Git/Visual Studio中使用Git.md
T
2026-06-21 09:51:55 +08:00

238 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Visual Studio 中使用 Git
这篇记录 Visual Studio 里使用 Git 管理 Obsidian 笔记库的流程。
当前笔记库路径:
```text
E:\Obsidian\OneDrive\Apps\remotely-save\MyNotes
```
GitHub 远程仓库:
```text
https://github.com/Ki5ter/Obsidian.git
```
## VS 里的几个设置不要混淆
`默认位置 Default location`
不是当前正在工作的仓库路径。它只是 Visual Studio 以后 clone 新仓库时默认放到哪里。
推荐设置成类似:
```text
E:\GitRepos
```
不推荐设置成:
```text
E:\Obsidian\OneDrive\Apps\remotely-save\MyNotes
```
原因是 `MyNotes` 本身就是一个仓库,不应该再作为所有新仓库的默认存放目录。
`Git 全局配置 Git Global Config`
影响电脑上所有 Git 仓库,比如用户名、邮箱、全局代理。
`Git 仓库配置 Git Repository Config`
只影响当前打开的这个仓库,比如当前仓库的 `origin` 地址。
`远程库 Remotes`
配置当前本地仓库对应的远程仓库地址。常见写法:
```text
Name: origin
URL: https://github.com/Ki5ter/Obsidian.git
```
## 第一次使用的正确流程
1. 在资源管理器中找到笔记库文件夹:
```text
E:\Obsidian\OneDrive\Apps\remotely-save\MyNotes
```
2. 如果笔记库在 OneDrive 里,先右键文件夹,选择:
```text
始终保留在此设备上
```
3. 用 Visual Studio 打开文件夹:
```text
文件 -> 打开 -> 文件夹
```
4. 打开 `Git 更改` 窗口。
5. 如果还不是 Git 仓库,选择创建 Git 仓库,或者用命令:
```powershell
git -C "E:\Obsidian\OneDrive\Apps\remotely-save\MyNotes" init
```
6. 在当前仓库的远程库里添加:
```text
Name: origin
URL: https://github.com/Ki5ter/Obsidian.git
```
7.`Git 更改` 窗口输入提交信息,例如:
```text
Initial Obsidian notes backup
```
8. 点击 `全部提交`
9. 点击 `推送`
## 提交和推送的区别
`全部提交`
只是把改动提交到本地仓库。提交成功后,GitHub 上还不会有变化。
`推送`
把本地提交上传到 GitHub 远程仓库。
如果 VS 显示:
```text
2 传出
```
意思是本地有 2 个 commit 还没有推送到远程仓库。
## 本地分支名 master 和 main
有些仓库默认分支叫 `master`GitHub 新仓库常见默认分支叫 `main`
如果本地当前是 `master`,可以直接推送:
```powershell
git -C "E:\Obsidian\OneDrive\Apps\remotely-save\MyNotes" push -u origin master
```
如果想改成 `main`
```powershell
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
```
## Clash Verge 代理问题
如果推送时报错:
```text
Failed to connect to 127.0.0.1 port 10809
```
说明 Git 被配置成使用 `127.0.0.1:10809` 代理,但 Clash Verge 没有在这个端口提供服务。
当前 Clash Verge 配置中常见端口:
```text
mixed-port: 7897
socks-port: 7898
port: 7899
```
推荐让 Git 使用 `mixed-port`
```powershell
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
```
然后再推送:
```powershell
git -C "E:\Obsidian\OneDrive\Apps\remotely-save\MyNotes" push -u origin master
```
或者回 Visual Studio 里点击 `推送`
如果不想让 Git 走代理,可以清除代理:
```powershell
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、路由和规则匹配。
当前场景更推荐:
```text
Clash Verge 正常运行
Git 的 http.proxy / https.proxy 指向 Clash Verge 的 mixed-port
VS 中正常点击推送
```
## 常见排查命令
查看当前仓库状态:
```powershell
git -C "E:\Obsidian\OneDrive\Apps\remotely-save\MyNotes" status --short --branch
```
查看远程仓库:
```powershell
git -C "E:\Obsidian\OneDrive\Apps\remotely-save\MyNotes" remote -v
```
查看分支:
```powershell
git -C "E:\Obsidian\OneDrive\Apps\remotely-save\MyNotes" branch -vv
```
查看最近提交:
```powershell
git -C "E:\Obsidian\OneDrive\Apps\remotely-save\MyNotes" log --oneline --decorate -5
```
查看 Git 代理:
```powershell
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 注意事项
如果出现下面这些错误:
```text
not a git repository
Permission denied
The cloud file provider is not running
unable to access .git/info/exclude
```
优先检查 OneDrive 是否正在运行,以及笔记库是否已经设置为:
```text
始终保留在此设备上
```
Git 仓库里的 `.git` 目录不要只存在云端占位。`.git` 目录读不到时,Visual Studio 会无法刷新仓库设置,也可能无法提交或推送。