|
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 |
|
|
|
|
|
|
|
第一次使用(必须配置)
## 步骤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 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
```
|
|
|
|
|
|
|
|
|
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
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 确保本地配置了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
```
|
|
|
|
|
|
|
|
|
|
|
|
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命令:在本地和远程计算机之间挂载文件系统