鏇存柊鏂囨。
This commit is contained in:
321
docs/git/Git add . 后如何撤销.md
Normal file
321
docs/git/Git add . 后如何撤销.md
Normal file
@@ -0,0 +1,321 @@
|
||||
# Git add . 后如何撤销
|
||||
|
||||
在Git中撤销git add .操作有以下几种常用方法:
|
||||
|
||||
|
||||
|
||||
撤销所有暂存文件:
|
||||
|
||||
|
||||
|
||||
使用git reset命令:git reset会将所有暂存文件移回工作区
|
||||
|
||||
使用git restore命令(Git 2.23+):git restore --staged .效果相同
|
||||
|
||||
|
||||
|
||||
撤销特定文件的暂存:
|
||||
|
||||
|
||||
|
||||
对单个文件:git reset HEAD <文件名> 或 git restore --staged <文件名>
|
||||
|
||||
对多个文件:可以指定多个文件名或用通配符
|
||||
|
||||
|
||||
|
||||
完全撤销修改(慎用):
|
||||
|
||||
|
||||
|
||||
git checkout -- <文件名>会丢弃工作区修改
|
||||
|
||||
git reset --hard会丢弃所有未提交的修改
|
||||
|
||||
|
||||
|
||||
已commit的撤销:
|
||||
|
||||
|
||||
|
||||
使用git revert创建反向提交
|
||||
|
||||
使用git reset --hard <commit-hash>回退到指定提交
|
||||
|
||||
|
||||
|
||||
注意事项:
|
||||
|
||||
|
||||
|
||||
这些操作只会影响暂存区,不会删除文件本身
|
||||
|
||||
执行前建议先用git status确认文件状态
|
||||
|
||||
对已push的commit进行撤销需谨慎,可能影响协作
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# 如何回退git commit .
|
||||
|
||||
在Git中回退git commit .操作有以下几种常用方法,具体选择取决于是否需要保留修改或是否已推送到远程仓库:
|
||||
|
||||
|
||||
|
||||
撤销最近一次commit但保留修改:
|
||||
|
||||
|
||||
|
||||
git reset --soft HEAD~1:撤销commit但保留所有更改在暂存区
|
||||
|
||||
git reset HEAD~1(默认--mixed模式):撤销commit并将更改移回工作区
|
||||
|
||||
|
||||
|
||||
完全撤销commit及修改:
|
||||
|
||||
|
||||
|
||||
git reset --hard HEAD~1:彻底删除最后一次提交及其所有更改(不可逆操作)
|
||||
|
||||
|
||||
|
||||
针对已push的commit:
|
||||
|
||||
|
||||
|
||||
先本地执行git reset回退
|
||||
|
||||
再使用git push -f强制覆盖远程分支(慎用,会影响协作)
|
||||
|
||||
|
||||
|
||||
安全撤销方式(保留历史):
|
||||
|
||||
|
||||
|
||||
git revert HEAD:创建新提交来撤销前一次提交的更改
|
||||
|
||||
可指定具体commit哈希:git revert <commit-hash>
|
||||
|
||||
|
||||
|
||||
交互式修改历史:
|
||||
|
||||
|
||||
|
||||
git rebase -i HEAD~n:可编辑最近n次提交记录
|
||||
|
||||
在交互界面中将目标commit前的"pick"改为"drop"即可删除
|
||||
|
||||
|
||||
|
||||
操作建议:
|
||||
|
||||
|
||||
|
||||
先用git log查看提交历史确认要回退的commit
|
||||
|
||||
未push的commit优先使用git reset
|
||||
|
||||
已push的commit建议使用git revert避免历史冲突
|
||||
|
||||
重要修改前建议创建备份分支
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# 要删除git分支
|
||||
|
||||
|
||||
|
||||
在Git中删除分支分为本地分支和远程分支两种情况,以下是具体操作方法:
|
||||
|
||||
|
||||
|
||||
删除本地分支:
|
||||
|
||||
|
||||
|
||||
安全删除(已合并的分支):git branch -d <branch_name>
|
||||
|
||||
强制删除(未合并的分支):git branch -D <branch_name>
|
||||
|
||||
删除前需确保不在目标分支上,可通过git checkout <other_branch>切换分支
|
||||
|
||||
|
||||
|
||||
删除远程分支:
|
||||
|
||||
|
||||
|
||||
现代Git版本:git push <remote_name> --delete <branch_name>(推荐)
|
||||
|
||||
兼容旧版本:git push <remote_name> :<branch_name>
|
||||
|
||||
远程仓库名通常为origin
|
||||
|
||||
|
||||
|
||||
同步操作:
|
||||
|
||||
|
||||
|
||||
删除远程分支后,其他机器需执行git fetch --all --prune清除过时的远程跟踪分支
|
||||
|
||||
可通过git branch -a验证删除结果
|
||||
|
||||
|
||||
|
||||
注意事项:
|
||||
|
||||
|
||||
|
||||
删除分支前建议确认分支内容已合并或备份
|
||||
|
||||
强制删除(-D)会丢失未合并的修改,需谨慎使用
|
||||
|
||||
当前所在分支无法被删除
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# 如何放弃本分支中未提交的所有修改
|
||||
|
||||
|
||||
|
||||
以下是放弃当前分支所有未提交修改的完整方法,根据修改状态分类处理:
|
||||
|
||||
|
||||
|
||||
一、未暂存的修改(未执行git add)
|
||||
|
||||
|
||||
|
||||
放弃单个文件修改:
|
||||
|
||||
bash
|
||||
|
||||
Copy Code
|
||||
|
||||
git checkout -- <文件名>
|
||||
|
||||
|
||||
|
||||
放弃所有文件修改:
|
||||
|
||||
bash
|
||||
|
||||
Copy Code
|
||||
|
||||
git checkout .
|
||||
|
||||
|
||||
|
||||
此操作会永久丢弃工作区所有未暂存的修改
|
||||
|
||||
|
||||
|
||||
二、已暂存未提交的修改(执行过git add)
|
||||
|
||||
|
||||
|
||||
撤销单个文件暂存(保留工作区修改):
|
||||
|
||||
bash
|
||||
|
||||
Copy Code
|
||||
|
||||
git reset HEAD <文件名>
|
||||
|
||||
|
||||
|
||||
撤销所有暂存(保留工作区修改):
|
||||
|
||||
bash
|
||||
|
||||
Copy Code
|
||||
|
||||
git reset HEAD
|
||||
|
||||
|
||||
|
||||
彻底丢弃暂存区和工作区修改:
|
||||
|
||||
bash
|
||||
|
||||
Copy Code
|
||||
|
||||
git reset --hard HEAD
|
||||
|
||||
|
||||
|
||||
该操作会同步清除暂存区和工作区
|
||||
|
||||
|
||||
|
||||
三、包含未跟踪文件的情况
|
||||
|
||||
|
||||
|
||||
清除所有未跟踪文件(需配合git reset使用):
|
||||
|
||||
bash
|
||||
|
||||
Copy Code
|
||||
|
||||
git clean -df
|
||||
|
||||
|
||||
|
||||
-d 同时删除未跟踪目录
|
||||
|
||||
-f 强制执行
|
||||
|
||||
|
||||
|
||||
四、临时保存修改(可恢复)
|
||||
|
||||
|
||||
|
||||
存储当前修改到堆栈:
|
||||
|
||||
bash
|
||||
|
||||
Copy Code
|
||||
|
||||
git stash
|
||||
|
||||
|
||||
|
||||
彻底丢弃最近一次存储:
|
||||
|
||||
bash
|
||||
|
||||
Copy Code
|
||||
|
||||
git stash drop
|
||||
|
||||
|
||||
|
||||
查看所有存储记录:
|
||||
|
||||
bash
|
||||
|
||||
Copy Code
|
||||
|
||||
git stash list
|
||||
|
||||
```Plain
|
||||
|
||||
|
||||
注意事项:
|
||||
|
||||
所有--hard和clean操作不可逆,建议先执行git status确认修改内容
|
||||
若需保留修改但切换分支,优先使用git stash方案
|
||||
已提交的修改需使用git reset --hard <commit>回退到指定版本
|
||||
```
|
||||
276
docs/git/git同步远程分支总结.md
Normal file
276
docs/git/git同步远程分支总结.md
Normal file
@@ -0,0 +1,276 @@
|
||||
非常全面的同步远程分支指南!我来帮你整理几个最实用的方案,并提供更清晰的分类:
|
||||
|
||||
## 📋 **最常用的分支同步方案**
|
||||
|
||||
### **方案一:基础同步(最常用)**
|
||||
```bash
|
||||
# 1. 获取所有远程更新并清理已删除分支
|
||||
git fetch --all --prune
|
||||
|
||||
# 2. 查看所有分支
|
||||
git branch -a
|
||||
|
||||
# 3. 切换到特定分支并同步
|
||||
git checkout 分支名
|
||||
git pull origin 分支名
|
||||
```
|
||||
|
||||
### **方案二:一键同步所有分支到本地**
|
||||
```bash
|
||||
# 推荐的安全版本
|
||||
git fetch --all --prune
|
||||
for branch in $(git branch -r | grep -v '\->' | grep -v 'HEAD'); do
|
||||
local_branch=${branch#origin/}
|
||||
if ! git show-ref --quiet refs/heads/"$local_branch"; then
|
||||
echo "📦 创建分支: $local_branch"
|
||||
git branch --track "$local_branch" "$branch"
|
||||
fi
|
||||
done
|
||||
```
|
||||
|
||||
## 🔧 **实用脚本整理**
|
||||
|
||||
### **脚本1:智能同步脚本 (sync-branches.sh)**
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# 智能同步所有远程分支
|
||||
|
||||
echo "🔄 开始同步分支..."
|
||||
|
||||
# 1. 获取所有远程更新
|
||||
git fetch --all --prune
|
||||
|
||||
# 2. 同步主要分支
|
||||
main_branch=""
|
||||
if git show-ref --verify --quiet refs/remotes/origin/main; then
|
||||
main_branch="main"
|
||||
elif git show-ref --verify --quiet refs/remotes/origin/master; then
|
||||
main_branch="master"
|
||||
fi
|
||||
|
||||
if [ -n "$main_branch" ]; then
|
||||
echo "📌 更新主分支: $main_branch"
|
||||
git checkout $main_branch 2>/dev/null || git checkout -b $main_branch origin/$main_branch
|
||||
git pull origin $main_branch
|
||||
fi
|
||||
|
||||
# 3. 创建本地不存在的远程分支
|
||||
echo "📦 同步其他分支..."
|
||||
git branch -r | grep -v '\->' | grep -v 'HEAD' | while read remote; do
|
||||
local_branch=${remote#origin/}
|
||||
|
||||
# 跳过已经存在的分支
|
||||
if git show-ref --verify --quiet refs/heads/"$local_branch"; then
|
||||
echo " ✓ 已存在: $local_branch"
|
||||
continue
|
||||
fi
|
||||
|
||||
# 创建跟踪分支
|
||||
echo " ➕ 创建: $local_branch"
|
||||
git branch --track "$local_branch" "$remote" 2>/dev/null
|
||||
done
|
||||
|
||||
# 4. 检查是否需要更新现有分支
|
||||
echo "🔄 检查本地分支更新..."
|
||||
current_branch=$(git branch --show-current)
|
||||
git branch --format='%(refname:short)' | while read branch; do
|
||||
if [ "$branch" != "$current_branch" ]; then
|
||||
git checkout "$branch" >/dev/null 2>&1
|
||||
if [ $? -eq 0 ]; then
|
||||
git pull origin "$branch" --ff-only >/dev/null 2>&1
|
||||
echo " ⬆️ 已更新: $branch"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
# 5. 返回原分支
|
||||
git checkout "$current_branch" >/dev/null 2>&1
|
||||
|
||||
echo "✅ 同步完成!"
|
||||
echo "📊 分支统计:"
|
||||
git branch -a | grep -c "remotes/origin" | xargs echo "远程分支数: "
|
||||
git branch | wc -l | xargs echo "本地分支数: "
|
||||
```
|
||||
|
||||
### **脚本2:快速切换和同步 (git-sync)**
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# 快速切换到指定分支并同步
|
||||
if [ $# -eq 0 ]; then
|
||||
echo "用法: git-sync 分支名"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
BRANCH=$1
|
||||
|
||||
echo "🔄 切换到分支: $BRANCH"
|
||||
|
||||
# 检查分支是否存在
|
||||
if git show-ref --verify --quiet refs/heads/"$BRANCH"; then
|
||||
# 本地分支存在
|
||||
git checkout "$BRANCH"
|
||||
git pull origin "$BRANCH"
|
||||
elif git show-ref --verify --quiet refs/remotes/origin/"$BRANCH"; then
|
||||
# 远程分支存在,创建本地跟踪分支
|
||||
git checkout -b "$BRANCH" origin/"$BRANCH"
|
||||
else
|
||||
echo "❌ 错误: 分支 $BRANCH 不存在"
|
||||
echo "可用的远程分支:"
|
||||
git branch -r | grep -v '\->' | sed 's/origin\///' | sort | uniq
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✅ 完成!当前分支: $(git branch --show-current)"
|
||||
```
|
||||
|
||||
## ⚙️ **Git 配置别名(推荐)**
|
||||
|
||||
添加到 `~/.gitconfig` 的 `[alias]` 部分:
|
||||
|
||||
```ini
|
||||
[alias]
|
||||
# 同步所有分支
|
||||
sync-all = "!f() { \
|
||||
echo '🔄 获取远程更新...'; \
|
||||
git fetch --all --prune; \
|
||||
echo '📦 创建本地分支...'; \
|
||||
git branch -r | grep -v '\\->' | grep -v 'HEAD' | while read remote; do \
|
||||
local=${remote#origin/}; \
|
||||
if ! git show-ref --quiet refs/heads/\"$local\"; then \
|
||||
echo \" ➕ $local\"; \
|
||||
git branch --track \"$local\" \"$remote\" 2>/dev/null; \
|
||||
fi; \
|
||||
done; \
|
||||
echo '✅ 同步完成!'; \
|
||||
}; f"
|
||||
|
||||
# 更新当前仓库所有分支
|
||||
update-all = "!f() { \
|
||||
current=$(git branch --show-current); \
|
||||
for branch in $(git branch --format='%(refname:short)'); do \
|
||||
if [ \"$branch\" != \"$current\" ]; then \
|
||||
git checkout \"$branch\" 2>/dev/null && git pull origin \"$branch\" 2>/dev/null; \
|
||||
fi; \
|
||||
done; \
|
||||
git checkout \"$current\"; \
|
||||
echo '✅ 所有分支已更新!'; \
|
||||
}; f"
|
||||
|
||||
# 查看分支树状图
|
||||
tree = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all
|
||||
|
||||
# 清理已合并的分支
|
||||
clean-branches = "!f() { \
|
||||
git fetch --all --prune; \
|
||||
git branch --merged main | grep -v '^\\* main$' | xargs -n 1 git branch -d; \
|
||||
echo '🧹 已清理合并到main的分支'; \
|
||||
}; f"
|
||||
```
|
||||
|
||||
使用别名:
|
||||
```bash
|
||||
git sync-all # 同步所有远程分支到本地
|
||||
git update-all # 更新所有本地分支
|
||||
git tree # 查看分支树状图
|
||||
git clean-branches # 清理已合并的分支
|
||||
```
|
||||
|
||||
## 🎯 **针对不同场景的推荐方案**
|
||||
|
||||
### **场景1:新电脑初次同步**
|
||||
```bash
|
||||
# 1. 克隆仓库
|
||||
git clone ssh://renjianbo@101.43.95.130:29418/zhini_im
|
||||
|
||||
# 2. 进入目录并同步所有分支
|
||||
cd zhini_im
|
||||
git sync-all # 使用上面配置的别名
|
||||
```
|
||||
|
||||
### **场景2:日常更新**
|
||||
```bash
|
||||
# 推荐的工作流程
|
||||
git status # 1. 查看状态
|
||||
git stash # 2. 暂存未提交的修改(可选)
|
||||
git fetch --all --prune # 3. 获取最新状态
|
||||
git checkout main # 4. 切换到主分支
|
||||
git pull --rebase origin main # 5. 更新主分支
|
||||
git checkout 你的分支 # 6. 切回你的分支
|
||||
git rebase main # 7. 基于最新main重定基
|
||||
git stash pop # 8. 恢复暂存的修改
|
||||
```
|
||||
|
||||
### **场景3:清理分支**
|
||||
```bash
|
||||
# 查看哪些分支已经合并到main
|
||||
git branch --merged main
|
||||
|
||||
# 删除已合并的分支(除了当前分支和main)
|
||||
git branch --merged main | grep -v "main" | xargs git branch -d
|
||||
|
||||
# 强制删除未合并的分支
|
||||
git branch -D 分支名
|
||||
|
||||
# 删除远程分支(谨慎操作)
|
||||
git push origin --delete 分支名
|
||||
```
|
||||
|
||||
## 📊 **分支管理最佳实践**
|
||||
|
||||
### **分支命名规范**
|
||||
```
|
||||
feature/ # 新功能
|
||||
bugfix/ # 修复bug
|
||||
hotfix/ # 紧急修复
|
||||
release/ # 发布分支
|
||||
```
|
||||
|
||||
### **常用命令速查**
|
||||
```bash
|
||||
# 查看分支关系
|
||||
git log --graph --oneline --all
|
||||
|
||||
# 查看远程分支的最后提交
|
||||
git for-each-ref --sort=-committerdate refs/remotes/origin/ --format='%(refname:short) - %(committerdate:short)'
|
||||
|
||||
# 查看分支差异
|
||||
git diff main..你的分支 # 比较差异
|
||||
git log main..你的分支 # 查看提交记录差异
|
||||
|
||||
# 重命名分支
|
||||
git branch -m 旧名字 新名字 # 本地重命名
|
||||
git push origin :旧名字 # 删除远程旧分支
|
||||
git push origin 新名字 # 推送新分支
|
||||
git push origin -u 新名字 # 设置上游分支
|
||||
```
|
||||
|
||||
## 🚨 **注意事项**
|
||||
|
||||
1. **备份重要修改**:同步前先提交或暂存工作
|
||||
2. **小心 force push**:避免使用 `--force`,用 `--force-with-lease` 更安全
|
||||
3. **定期清理**:删除已合并的本地分支,保持仓库整洁
|
||||
4. **沟通协调**:多人协作时,删除远程分支前要确认
|
||||
|
||||
## 🎪 **一个命令完成所有同步**
|
||||
|
||||
终极简化版:
|
||||
```bash
|
||||
# 创建 ~/bin/git-full-sync 文件
|
||||
#!/bin/bash
|
||||
cd /path/to/your/project
|
||||
git stash
|
||||
git fetch --all --prune
|
||||
git checkout main && git pull origin main
|
||||
git sync-all # 使用别名
|
||||
git stash pop
|
||||
echo "✅ 全量同步完成!"
|
||||
|
||||
# 添加执行权限
|
||||
chmod +x ~/bin/git-full-sync
|
||||
|
||||
# 使用
|
||||
cd 你的项目
|
||||
git-full-sync
|
||||
```
|
||||
|
||||
这些方案覆盖了大部分使用场景,根据你的具体需求选择合适的方法即可。最常用的是方案一的基础同步,配合别名可以极大提高效率。
|
||||
230
docs/git/git常用命令.md
Normal file
230
docs/git/git常用命令.md
Normal file
@@ -0,0 +1,230 @@
|
||||
我来为你详细介绍 Git 的使用方法和常用命令。
|
||||
|
||||
## **Git 基础概念**
|
||||
- **仓库 (Repository)**:存储项目代码和历史记录的地方
|
||||
- **工作区 (Working Directory)**:你正在编辑的文件
|
||||
- **暂存区 (Staging Area)**:准备提交的文件
|
||||
- **本地仓库 (Local Repository)**:本地保存的版本历史
|
||||
- **远程仓库 (Remote Repository)**:GitHub/GitLab 等平台的仓库
|
||||
|
||||
## **Git 工作流程**
|
||||
```
|
||||
工作区 → `git add` → 暂存区 → `git commit` → 本地仓库 → `git push` → 远程仓库
|
||||
```
|
||||
|
||||
## **常用命令分类**
|
||||
|
||||
### **1. 配置相关**
|
||||
```bash
|
||||
# 设置用户信息
|
||||
git config --global user.name "你的名字"
|
||||
git config --global user.email "你的邮箱"
|
||||
|
||||
# 查看配置
|
||||
git config --list
|
||||
|
||||
# 设置默认编辑器(如 VS Code)
|
||||
git config --global core.editor "code --wait"
|
||||
```
|
||||
|
||||
### **2. 仓库操作**
|
||||
```bash
|
||||
# 初始化新仓库
|
||||
git init
|
||||
|
||||
# 克隆远程仓库
|
||||
git clone <仓库URL>
|
||||
git clone https://github.com/username/repo.git
|
||||
|
||||
# 查看仓库状态
|
||||
git status
|
||||
|
||||
# 查看远程仓库
|
||||
git remote -v
|
||||
|
||||
# 添加远程仓库
|
||||
git remote add origin <仓库URL>
|
||||
```
|
||||
|
||||
### **3. 基础操作**
|
||||
```bash
|
||||
# 添加文件到暂存区
|
||||
git add 文件名 # 添加特定文件
|
||||
git add . # 添加所有修改
|
||||
git add *.js # 添加所有js文件
|
||||
|
||||
# 提交到本地仓库
|
||||
git commit -m "提交说明"
|
||||
|
||||
# 添加并提交(两步合并)
|
||||
git commit -am "提交说明" # 只能提交已跟踪的文件
|
||||
|
||||
# 查看提交历史
|
||||
git log
|
||||
git log --oneline # 简洁显示
|
||||
git log --graph # 图形化显示分支
|
||||
git log -p # 显示具体修改内容
|
||||
```
|
||||
|
||||
### **4. 分支管理**
|
||||
```bash
|
||||
# 查看分支
|
||||
git branch # 查看本地分支
|
||||
git branch -a # 查看所有分支(包括远程)
|
||||
git branch -r # 查看远程分支
|
||||
|
||||
# 创建分支
|
||||
git branch 分支名 # 创建分支
|
||||
git checkout -b 分支名 # 创建并切换到该分支
|
||||
git switch -c 分支名 # 新版本推荐(Git 2.23+)
|
||||
|
||||
# 切换分支
|
||||
git checkout 分支名
|
||||
git switch 分支名 # 新版本推荐
|
||||
|
||||
# 合并分支
|
||||
git merge 分支名 # 将指定分支合并到当前分支
|
||||
|
||||
# 删除分支
|
||||
git branch -d 分支名 # 删除已合并的分支
|
||||
git branch -D 分支名 # 强制删除分支
|
||||
```
|
||||
|
||||
### **5. 远程操作**
|
||||
```bash
|
||||
# 推送代码
|
||||
git push origin 分支名
|
||||
git push -u origin main # 首次推送并建立关联
|
||||
|
||||
# 拉取代码
|
||||
git pull origin 分支名 # 拉取并合并
|
||||
git fetch origin # 只拉取不合并
|
||||
|
||||
# 同步远程分支
|
||||
git fetch --prune # 删除本地不存在的远程分支引用
|
||||
```
|
||||
|
||||
### **6. 撤销操作**
|
||||
```bash
|
||||
# 撤销工作区修改
|
||||
git checkout -- 文件名 # 丢弃工作区修改
|
||||
git restore 文件名 # 新版本推荐
|
||||
|
||||
# 撤销暂存区文件
|
||||
git reset HEAD 文件名 # 从暂存区移除
|
||||
git restore --staged 文件名 # 新版本推荐
|
||||
|
||||
# 修改上次提交
|
||||
git commit --amend # 修改提交信息或内容
|
||||
|
||||
# 回退到指定版本
|
||||
git reset --soft HEAD^ # 撤销commit,保留修改到暂存区
|
||||
git reset --mixed HEAD^ # 撤销commit,保留修改到工作区(默认)
|
||||
git reset --hard HEAD^ # 彻底删除commit和修改
|
||||
git reset --hard commit_id # 回退到指定commit
|
||||
```
|
||||
|
||||
### **7. 暂存修改**
|
||||
```bash
|
||||
# 临时保存修改
|
||||
git stash # 保存当前修改
|
||||
git stash save "说明" # 保存并添加说明
|
||||
git stash list # 查看暂存列表
|
||||
git stash apply # 恢复最近暂存的修改
|
||||
git stash pop # 恢复并删除暂存记录
|
||||
git stash drop # 删除暂存记录
|
||||
```
|
||||
|
||||
### **8. 标签管理**
|
||||
```bash
|
||||
# 创建标签
|
||||
git tag v1.0 # 创建轻量标签
|
||||
git tag -a v1.0 -m "版本说明" # 创建附注标签
|
||||
|
||||
# 查看标签
|
||||
git tag # 列出所有标签
|
||||
git show v1.0 # 查看标签详情
|
||||
|
||||
# 推送标签
|
||||
git push origin v1.0 # 推送单个标签
|
||||
git push origin --tags # 推送所有标签
|
||||
```
|
||||
|
||||
### **9. 比较差异**
|
||||
```bash
|
||||
git diff # 比较工作区和暂存区
|
||||
git diff --staged # 比较暂存区和最新提交
|
||||
git diff HEAD # 比较工作区和最新提交
|
||||
git diff 分支1 分支2 # 比较两个分支
|
||||
git diff commit1 commit2 # 比较两次提交
|
||||
```
|
||||
|
||||
## **实用工作流程示例**
|
||||
|
||||
### **场景1:日常开发流程**
|
||||
```bash
|
||||
# 1. 开始新功能
|
||||
git checkout main
|
||||
git pull origin main
|
||||
git checkout -b feature/new-feature
|
||||
|
||||
# 2. 开发
|
||||
git add .
|
||||
git commit -m "添加新功能"
|
||||
|
||||
# 3. 推送
|
||||
git push origin feature/new-feature
|
||||
|
||||
# 4. 合并到主分支
|
||||
git checkout main
|
||||
git merge feature/new-feature
|
||||
git push origin main
|
||||
```
|
||||
|
||||
### **场景2:处理紧急bug**
|
||||
```bash
|
||||
# 1. 暂存当前工作
|
||||
git stash
|
||||
|
||||
# 2. 创建修复分支
|
||||
git checkout -b hotfix/bug-fix
|
||||
|
||||
# 3. 修复并提交
|
||||
# ... 修复代码 ...
|
||||
git add .
|
||||
git commit -m "修复紧急bug"
|
||||
|
||||
# 4. 合并修复
|
||||
git checkout main
|
||||
git merge hotfix/bug-fix
|
||||
git push origin main
|
||||
|
||||
# 5. 恢复之前的工作
|
||||
git checkout feature/your-branch
|
||||
git stash pop
|
||||
```
|
||||
|
||||
## **实用技巧**
|
||||
1. **设置别名**:
|
||||
```bash
|
||||
git config --global alias.co checkout
|
||||
git config --global alias.br branch
|
||||
git config --global alias.ci commit
|
||||
git config --global alias.st status
|
||||
```
|
||||
|
||||
2. **查看帮助**:
|
||||
```bash
|
||||
git help <命令>
|
||||
git <命令> --help
|
||||
```
|
||||
|
||||
3. **忽略文件**:创建 `.gitignore` 文件
|
||||
|
||||
## **注意事项**
|
||||
- 重要操作前先备份或确认
|
||||
- 频繁提交小改动,保持提交信息清晰
|
||||
- 推送前先拉取最新代码
|
||||
- 使用分支进行功能开发
|
||||
|
||||
这些是 Git 最常用的命令,掌握了这些就能应对大部分日常开发需求。
|
||||
18
docs/git/git设置用户名和邮箱.md
Normal file
18
docs/git/git设置用户名和邮箱.md
Normal file
@@ -0,0 +1,18 @@
|
||||
配置用户名和邮箱(如果还没配置)
|
||||
git config --global user.name "Your Name" git config --global user.email "your.email@example.com"
|
||||
|
||||
查看用户名
|
||||
git config user.name
|
||||
|
||||
查看邮箱
|
||||
git config user.email
|
||||
|
||||
查看远程仓库地址
|
||||
git config remote.origin.url
|
||||
|
||||
设置远程仓库地址
|
||||
git remote set-url origin ssh://renjianbo@101.43.95.130:29419/zhini_im_android
|
||||
|
||||
|
||||
git remote set-url origin ssh://renjianbo@101.43.95.130:29419/zhini_im_android
|
||||
git remote set-url origin http://101.43.95.130:3001/admin/fuzhu.git
|
||||
1
docs/git/hello.md
Normal file
1
docs/git/hello.md
Normal file
@@ -0,0 +1 @@
|
||||
hello
|
||||
Reference in New Issue
Block a user