挂载目录


sudo mount -t cifs -o username=AS,password=***,vers=3.0,dir_mode=0777,file_mode=0777,gid=1000,uid=1000 //192.168.1.133/tpf /opt/tpf

sudo mount -t cifs -o username=AS,password=***,vers=3.0,dir_mode=0777,file_mode=0777,gid=1000,uid=1000 //192.168.1.133/soft /opt/soft

 
mount: /home/xt/share/source: cannot mount //192.168.0.199/source read-only.
dmesg(1) may have more information after failed mount system call.

解决办法:
sudo apt install cifs-utils
yum install cifs-utils

 


 
fdisk -l

fdisk /dev/sdc
fdisk -l

mkfs.ext4 /dev/sdc1

root@ai:~# blkid /dev/sdc1
/dev/sdc1: UUID="2aa3e6a1-2f0d-4070-a95b-79218eb2ba39" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="8ab3866c-01"

mkdir /wks 

# vim /etc/fstab 
UUID=2aa3e6a1-2f0d-4070-a95b-79218eb2ba39 /wks           ext4    defaults        0       2

reboot 

 


 


 


 


Git

第一次使用(必须配置)

## 步骤1: 配置SSH(只需配置一次)

在客户端电脑上执行:

cat >> ~/.ssh/config << 'EOF'
Host git-server
    HostName 144.34.185.72
    Port 26225
    User git
EOF

## 步骤2: 添加SSH公钥到服务器(如果还没有)

ssh-copy-id -i ~/.ssh/id_rsa.pub -p 26225 git@144.34.185.72

## 步骤3: 测试连接

ssh -p 26225 git@144.34.185.72
# 应该看到:fatal: Interactive git shell is not allowed.

克隆仓库

# 克隆doc仓库
git clone git-server:doc.git

# 克隆aitpf仓库
git clone git-server:aitpf.git

# 克隆73biji仓库
git clone git-server:73biji.git

添加现有项目到Git

cd /path/to/your/project
git init
git add .
git commit -m "Initial commit"

# 添加远程仓库
git remote add origin git-server:doc.git

# 推送
git push -u origin master

常用命令

# 拉取最新代码
git pull origin master

# 推送代码
git push origin master

# 查看状态
git status

# 查看远程仓库
git remote -v

故障排查 - Permission denied

# 检查SSH密钥
ls -la ~/.ssh/id_rsa*

# 如果没有密钥,生成一个
ssh-keygen -t rsa -b 4096

# 重新添加公钥到服务器
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 26225 git@144.34.185.72

重要提示:使用正确的克隆命令

# 确认使用的是 git-server 别名而不是IP地址
git clone git-server:doc.git  # ✓ 正确(使用SSH config)
git clone git@144.34.185.72:doc.git  # ✗ 错误(绕过SSH config,使用默认22端口)
git clone git@144.34.185.72:doc.git -p 26225  # ✗ 错误(Git不支持-p参数)

重要提示: Git只会使用SSH config中定义的别名,当你使用 git@IP地址 格式时,SSH config会被完全绕过。

服务器管理

# 创建新仓库(在服务器上执行)
sudo /home/xt/wks/scripts/git_create_repo.sh myproject

# 测试服务器状态
sudo /home/xt/wks/scripts/git_test.sh

Git服务器信息

服务器配置:
- 服务器地址: 144.34.185.72 或 fine-bump-3.localdomain
- Git用户: git
- SSH端口: 26225
- 仓库路径: /home/git/

已创建的仓库:
- doc: git-server:doc.git
- aitpf: git-server:aitpf.git
- 73biji: git-server:73biji.git

客户端配置 - 生成SSH密钥

# 生成SSH密钥对
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

# 查看公钥
cat ~/.ssh/id_rsa.pub

# 将公钥添加到服务器
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 26225 git@144.34.185.72

# 测试连接
ssh -T -p 26225 git@144.34.185.72
# 成功会显示: fatal: Interactive git shell is not allowed.

克隆仓库的正确方式

方式1: 配置SSH config(强烈推荐,最简单)
-------------------------------------------------
# 一次性配置(只需执行一次)
cat >> ~/.ssh/config << 'EOF'
Host git-server
    HostName 144.34.185.72
    Port 26225
    User git
    IdentityFile ~/.ssh/id_rsa
EOF

# 克隆仓库
git clone git-server:doc.git
git clone git-server:aitpf.git
git clone git-server:73biji.git

方式2: 使用环境变量
-------------------------------------------------
# 使用环境变量指定SSH端口
GIT_SSH_COMMAND="ssh -p 26225" git clone git@144.34.185.72:doc.git

添加远程仓库到现有项目

cd /path/to/your/project
git init
git add .
git commit -m "Initial commit"

# 添加远程仓库
git remote add origin git-server:doc.git

# 推送到远程
git push -u origin master
# 或使用main分支
git push -u origin main

常用Git命令

# 查看远程仓库
git remote -v

# 拉取最新代码
git pull origin master

# 推送代码
git push origin master

# 查看状态
git status

# 查看分支
git branch -a

创建新仓库(使用脚本)

# SSH登录到服务器
ssh xt@服务器

# 使用脚本创建仓库
sudo /home/xt/wks/scripts/git_create_repo.sh <仓库名称>

# 示例:创建一个新项目
sudo /home/xt/wks/scripts/git_create_repo.sh myproject

# 脚本功能:
# - 自动创建裸仓库
# - 设置正确的权限
# - 添加仓库描述
# - 显示使用说明

常见原因

**1. 被 .gitignore 排除(最可能)**
检查你的 `.gitignore` 文件,通常会有以下内容:

```gitignore
# 虚拟环境
.venv/
venv/
env/
```

**2. 验证是否被忽略**
```bash
# 检查 .venv 是否被忽略
git check-ignore -v .venv

# 查看仓库中被忽略的文件
git status --ignored
```

## 如果你确实想提交 .venv(不推荐)

虚拟环境包含大量依赖文件,通常**不应该提交到 Git**。更好的做法是提交 `requirements.txt` 或 `pyproject.toml`。

但如果确实需要:

```bash
# 1. 从 .gitignore 中移除 .venv/ 条目(编辑 .gitignore 文件)

# 2. 强制添加(如果之前被忽略了)
git add -f .venv/

# 3. 提交
git commit -m "添加 .venv 目录"
```

 

## 推荐做法(不提交 .venv)

```bash
# 1. 确保 .venv 在 .gitignore 中
echo ".venv/" >> .gitignore

# 2. 提交依赖清单(如果你用 pip)
pip freeze > requirements.txt
git add requirements.txt .gitignore
git commit -m "添加依赖配置"

# 3. 其他人克隆后重建环境
python -m venv .venv
pip install -r requirements.txt
```

## 快速排查清单

| 命令 | 用途 |
|------|------|
| `git status` | 查看未追踪文件 |
| `git status --ignored` | 查看被忽略的文件 |
| `git check-ignore -v .venv` | 检查忽略规则来源 |
| `cat .gitignore` | 查看忽略规则 |

**结论**:以 `.` 开头的目录在 Git 中没有特殊限制,`.venv` 没被提交几乎肯定是因为 `.gitignore` 的规则。这是 Python 项目的标准做法,建议保持这种配置,只提交依赖清单文件而非整个虚拟环境。


 


## 只提交众多修改文件中的一个 ``` git add t_field_pool.py git commit -m "chat2sql init field pool" # 或者更安全的强制推送(如果远程有更新则失败) git push --force-with-lease origin master ``` 实际上远程上根本就没有这个文件,但git push无法推送 ## 远程覆盖本地 ``` # 1. 拉取远程最新代码 git fetch --all # 2. 强制重置到远程分支(会丢弃所有本地修改) git reset --hard origin/master # 3. 清理未跟踪的文件(可选) git clean -fd ``` ## Git克隆特定分支 - Git clone 默认只克隆主分支(通常是 main 或 master)。要克隆特定的 develop 分支,有几种常用方法: - 方法 1:克隆后切换到 develop 分支(推荐) ``` cd /d/git/ git clone git-server:chat2sql-develop.git cd chat2sql-develop git checkout develop ``` - 方法 2:只克隆 develop 分支(浅克隆,节省空间) ``` cd /d/git/ git clone --branch develop --single-branch git-server:chat2sql-develop.git ```

 


 


Git 的用户名和邮箱配置分为**全局**(对所有仓库生效)和**项目**(仅对当前仓库生效)两个级别。以下是具体的配置和查看方法: ### 1. 全局配置(推荐) 这是最常用的方式,配置后对你电脑上所有的 Git 仓库生效。 ```bash # 设置全局用户名 git config --global user.name "你的名字" # 设置全局邮箱 git config --global user.email "your_email@example.com" ``` **示例**: ```bash git config --global user.name "tanpf" git config --global user.email "itoracle@163.com" ``` 配置完成后,你的所有提交都会附上这个身份信息。 ### 2. 项目单独配置 如果你需要为某个特定项目使用不同的身份(如区分个人和工作账号),可以进入该项目目录,去掉 `--global` 参数进行设置: ```bash cd 你的项目文件夹 git config user.name "另一个名字" git config user.email "another_email@example.com" ``` 这个设置会覆盖全局配置,**仅对当前仓库生效**。 ### 3. 验证配置 配置完成后,建议按以下顺序确认一下: * **查看当前仓库生效的配置**(进入项目目录后执行): ```bash git config user.name git config user.email ``` * **查看全局配置**: ```bash git config --global user.name git config --global user.email ``` ### 核心要点 * **隐私提示**:Git 配置的邮箱是公开的(会被记录在提交历史中)。如果你不想暴露私人邮箱,可以使用 GitHub 等平台提供的**私密邮箱地址**(如 `username@users.noreply.github.com`)。 * **优先级**:**项目配置 > 全局配置**。如果两者都设置了,Git 会优先使用项目专属的配置。 * **过去的提交**:这些命令只影响**未来的提交**。如果想修改历史提交中的邮箱,需要用到 `git rebase` 或 `git filter-branch`,操作比较复杂。
git操作记录

 

## git拉取记录
```
git init
git remote add origin http://10.14.128.2:8888/ai/bank-complaint-classifier.git

git pull origin dev
```

```

# 1. 保存当前更改
git stash

# 2. 拉取远程更新
git reset
git pull --rebase origin main

# 3. 恢复本地更改
git stash pop

# 4. 如果有冲突,解决冲突
git add .
git rebase --continue

# 5. 推送
git commit -m "tousu v1"
git push -u origin main
```


## git提交记录

```
git add .
git commit -m "tousu v1"

# 现在创建dev分支
git checkout -b dev
git push -u origin dev  # 第一次
```
```
git add .
git commit -m "tousu v1"
git push                 # 后续

```


```
-u  --set-upstream
把本次推送的远程分支(origin/dev)登记为本地分支 dev 的“上游”。
登记后,今后在该分支上直接敲 git push / git pull 就不必再写 origin dev。

-f  --force
强制推送,即用本地版本覆盖远程同名分支,不管远程是否比本地新。
会丢弃远程那端可能存在的提交,危险操作,多人协作时慎用。
```

    

云桌面

 
cd /d/git
git clone git-server:aitpf.git
    
 
```
$ cat ~/.ssh/config
Host 101.43.140.244
  HostName 101.43.140.244
  User xt
  IdentityFile "C:\Users\itoracle_17068343192\.ssh\id_rsa"


Host bwh
  HostName 144.34.185.72
  User xt
  Port 26225
  IdentityFile "C:\Users\itoracle_17068343192\.ssh\id_rsa"

Host git-server
    HostName 144.34.185.72
    Port 26225
    User git
    IdentityFile  "C:\Users\itoracle_17068343192\.ssh\id_rsa"

```

    

 
```bash
# 克隆doc仓库
git clone git-server:doc.git

# 克隆aitpf仓库
git clone git-server:aitpf.git

# 克隆73biji仓库
git clone git-server:73biji.git
```

    

 

    
#### 首次提交 ``` git clone https://tanpf@gitee.com/clark211314/zhinengjiancha.git cd zhinengjiancha git add . git commit -m "init" git pull --rebase origin master git push -u origin master #首次提交 ``` 这是一个很好的问题!`--rebase` 是 Git 中一个非常重要但初学者容易困惑的概念。让我用简单的语言来解释: ## 🎯 `--rebase` 的核心含义 **简单来说:`--rebase` 的意思是“把你的提交放在别人提交的后面”。** 当你执行 `git pull --rebase` 时,Git 会做这三件事: 1. **暂存**你本地的提交(临时保存起来) 2. **下载**远程仓库的最新代码 3. **重放**你的提交到最新的远程代码之后 ## 📊 直观对比:`git pull` vs `git pull --rebase` ### 场景假设: - 远程仓库有提交:A → B → C - 你本地有提交:A → B → D(D 是你本地的提交) ### 普通 `git pull`(默认行为): ``` 远程:A → B → C 本地:A → B → D 执行 git pull 后: A → B → C → (合并节点) → D \ / --------------- ``` 会产生一个额外的"合并提交"(merge commit),记录历史会有分叉。 ### `git pull --rebase`: ``` 远程:A → B → C 本地:A → B → D 执行 git pull --rebase 后: A → B → C → D(D 被放在了 C 后面) ``` 历史是一条直线,更加清晰整洁! ## 💡 为什么用 `--rebase`? 1. **保持历史清晰**:避免不必要的"合并提交",让提交历史像一条直线 2. **更容易追踪**:清晰的线性历史更容易理解和回溯 3. **减少冲突复杂度**:解决冲突时,冲突会分散在每个提交中,而不是集中在一个大的合并提交中 ## 🔧 实际使用示例 假设你正在开发一个新功能,期间别人推送了代码: ```bash # 情况:远程已有新提交,你本地也有自己的提交 git status # 显示你的本地提交 git pull --rebase origin master # 如果有冲突,会逐个提交地提示你解决 # 解决完冲突后 git add . git rebase --continue # 继续完成变基 git push # 推送你的代码 ``` ## ⚠️ 重要提醒 - **不要对已经推送到远程的提交执行 rebase**:这会重写历史,导致团队协作问题 - **只在本地未推送的提交上使用 rebase**:这样最安全 - 如果觉得 `--rebase` 太复杂,普通 `git pull` 也完全可以工作,只是会产生一些合并提交 简单来说,`--rebase` 就像是把你的工作"插队"到了别人工作的后面,而不是创建一个分叉再合并回来。
## 只查看 只是查看代码不做修改,那最简单快速的方式是: ## 推荐方案:浅克隆(仅拉取该提交) ```bash # 1. 创建并进入项目目录 mkdir 项目文件夹 && cd 项目文件夹 # 2. 初始化空仓库 git init # 3. 添加远程仓库地址(替换为你的实际仓库地址) git remote add origin <仓库地址> # 4. 拉取指定提交的代码 git fetch --depth 1 origin 389fa6dbfd387714e4894582e5aa6ad228a88f78 # 5. 检出代码 git checkout FETCH_HEAD ``` 完成!现在你就可以在当前目录下查看该版本的代码了。 ## 注意事项 1. **浅克隆的优势**:只下载这个特定提交的文件,不会下载整个项目历史,速度快、省空间 2. **查看代码**:此时 Git 会提示处于"游离 HEAD"状态,但这不影响你正常查看、阅读、浏览代码 3. **无需分支**:既然只看不修改,完全不需要创建分支 ## 替代方案(如果浅克隆失败) 有些旧版 Git 服务器可能不支持 `--depth 1` 拉取特定提交,此时改用: ```bash git clone <仓库地址> cd <进入仓库目录> git checkout 389fa6dbfd387714e4894582e5aa6ad228a88f78 ``` 这个方法会下载完整历史,但更兼容。 ## 操作记录 ``` cd /d/tmp git clone https://gitee.com/clark211314/zhinengjiancha git checkout 389fa6dbfd387714e4894582e5aa6ad228a88f78 ```

 


 


 


 


git·几个项目

 
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 26225 git@144.34.185.72
    
```bash
# 创建/编辑SSH配置文件
cat >> ~/.ssh/config << 'EOF'

Host git-server
    HostName 144.34.185.72
    Port 26225
    User git
EOF
```

首次拉取与提交

 
cd /d/git 
git clone git-server:aitpf.git 
  
git add . 
git commit -m ""

$ git branch
* master

git push -u origin master

bwh首次拉取与提交

 
```
cd
mkdir git
cd git/
git clone git-server:aitpf.git 
```
```
git add .  
git commit -m "1.0.62"
git branch 
git push -u origin master
```
    

 

    

 

    
- 创建新仓库(在服务器上执行) sudo /home/xt/wks/scripts/git_create_repo.sh current 测试服务器状态 sudo /home/xt/wks/scripts/git_test.sh - 使用 ``` 方法1: 使用SSH config(最简单) ---------------------------------------- # 在客户端 ~/.ssh/config 中添加: Host git-server HostName 144.34.185.72 Port 26225 User git # 然后使用: git clone git-server:current.git ```

 


 


 


 


 


 


git·新建项目
- 确保本地配置了SSH访问服务器的别名(如git-server),并且已经测试过连接。 ``` cat >> ~/.ssh/config << 'EOF' Host git-server HostName 144.34.185.72 Port 26225 User git EOF ``` - SSH登录到服务器,使用管理员权限执行创建仓库的脚本。 sudo /home/xt/wks/scripts/git_create_repo.sh chat2sql-develop - 备份原文档,以防止误删 - 初始化git仓库,添加远程origin,提交代码并推送到服务器 ``` cd /d/wks/aisql/ cd chat2sql-develop/ git init git remote add origin git-server:chat2sql-develop.git git add . git commit -m "2026-03-02 before mod duihua" # 现在创建dev分支 git checkout -b dev git push -u origin dev # 第一次 ``` ``` $ git branch * dev master ``` - 导出验证 ``` cd /d/git/ # 拉取所有分支 git clone git-server:chat2sql-develop.git #切换到dev分支 cd chat2sql-develop/ git checkout dev ``` - 忽略说明 - 原项目目录下是有.venv 目录的,但它被.gitignore忽略了,所以没有被提交到Git仓库中。 - 这是默认忽略的目录,即使没有特别指定,也自动忽略 - 这是Python项目的常见做法,因为.venv目录通常包含大量依赖文件,不适合直接提交到版本控制系统中。
- sudo /home/xt/wks/scripts/git_create_repo.sh electron_chat2sql_frontend - .gitignore添加不需要提交的文件和目录 ``` node_modules .DS_Store dist dist.zip .idea .vscode .tar **.tar build build_output logs mysql mysql_init python vendor public ``` - 初始化git仓库,添加远程origin,提交代码并推送到服务器 ``` cd /d/wks/aisql/ cd electron_chat2sql_frontend/ git init git remote add origin git-server:electron_chat2sql_frontend.git git add . git commit -m "2026-03-02 before mod duihua" # 现在创建dev分支 git checkout -b dev git push -u origin dev # 第一次 ``` - 导出验证 ``` cd /d/git/ # 拉取所有分支 git clone git-server:electron_chat2sql_frontend.git #切换到dev分支 cd electron_chat2sql_frontend/ git checkout dev ```

 

    
sudo /home/xt/wks/scripts/git_create_repo.sh chat2sql-develop ``` xt@fine-bump-3:~$ sudo /home/xt/wks/scripts/git_create_repo.sh frontend ========================================== 创建Git裸仓库: frontend.git ========================================== ✓ 1/4. 创建仓库目录: /home/git/frontend.git ✓ 2/4. 初始化为裸仓库 ✓ 3/4. 设置仓库权限 ✓ 4/4. 创建仓库描述文件 ========================================== ✓ 仓库创建成功! ========================================== 仓库信息: 名称: frontend.git 路径: /home/git/frontend.git 所有者: git 客户端使用方法: 1. 克隆新仓库: git clone git@fine-bump-3.localdomain:frontend.git 2. 或添加到现有仓库: git remote add origin git@fine-bump-3.localdomain:frontend.git git push -u origin master 3. 查看仓库远程地址: git remote -v ```

 


 


 


 


 


git·合并
cd /d/tmp git clone git-server:current.git ## 背景 现在有3个git版本,要分析这3个版本之间的源代码差异, 对比 D:\tmp\current目录 D:\git\current目录 H:\git\current目录 下这三个目录之间的差异 elecv2\src fstv2\src skills 然后将之合并到D:\tmp\current这个版本中 以D:\tmp\current版本中的目录为准,不存在于D:\tmp\current的目录,则不需要对比,因为它们不提交git,不用对比 而D:\tmp\current是刚刚从git上拉下来的,它的文件皆存在于git上,所以要对比,.git目录不需要对比 分析差异时,要分析这些差异对应的功能,然后进行合并,同时要确保合并后的代码可以正常运行 按上面的方式,将H:\git\current,D:\git\current合并到D:\tmp\current这个版本中
参考
    Linux SSHFS命令:在本地和远程计算机之间挂载文件系统