Git是一个分布式版本控制系统,广泛应用于软件开发项目中来追踪和控制代码的修改历史。
Git常用命令如下:
配置用户信息:
# 设置全局用户名和邮箱
git config --global user.name "Your Name"
git config --global user.email "youremail@example.com"
初始化仓库:
# 在当前目录创建一个新的Git仓库
git init
克隆仓库:
# 克隆远程仓库至本地
git clone https://github.com/user/repo.git
添加文件到暂存区:
# 将某个文件添加到暂存区以准备提交
git add <file_path>
# 或者添加所有改动
git add .
提交更改:
# 提交暂存区的内容到本地仓库,附带提交信息
git commit -m "Initial commit or describe your changes here"
查看状态:
# 检查工作区和暂存区的状态
git status
拉取远程更新:
# 获取远程仓库的最新改动并尝试自动合并到当前分支
git pull origin <branch_name>
推送更改:
# 将本地分支的更改推送到远程仓库的对应分支
git push origin <branch_name>
创建与切换分支:
# 创建并立即切换到新的分支
git checkout -b new_branch
# 切换回已有分支
git checkout <existing_branch>
#### **查看分支**:
# 显示所有本地分支
git branch
# 显示所有本地和远程分支
git branch -a
#### **解决冲突与合并分支**:
# 合并指定分支到当前分支
git merge other_branch
#### **stash暂存未提交的更改**:
# 暂存所有未提交的更改
git stash
# 恢复最近暂存的更改
git stash pop
#### **查看提交历史**:
# 显示提交历史记录
git log
#### **Cherry-pick**:
# 将指定提交应用到当前分支
git cherry-pick <commit_hash>
#### **撤销更改**:
*
##### 取消暂存区的更改:
git reset <file_path> # 将指定文件从暂存区移除,但保留工作区的更改
git reset HEAD <file_path> # 类似于上述命令,取消暂存的同时恢复到HEAD版本
*
##### 回滚工作区的更改:
git checkout -- <file_path> # 抛弃工作区对指定文件的更改
#### **删除文件**:
*
##### 从版本库和工作区一起删除:
git rm <file_path>
git commit -m "Remove file"
*
##### 仅从版本库中删除(保留工作区文件):
git rm --cached <file_path>
git commit -m "Remove file from repository"
#### **重命名/移动文件**:
git mv <old_file_path> <new_file_path>
git commit -m "Rename/move file"
#### **查看不同版本间的差异**:
git diff # 查看尚未暂存的改动
git diff --staged # 查看已暂存但未提交的改动
git diff <commit1> <commit2> # 查看两个提交之间的差异
#### **回退到以前的提交**:
# 回退到某一提交,并且丢弃之后的所有更改(谨慎操作)
git reset --hard <commit_hash>
#### **标签管理**:
*
##### 创建标签:
git tag <tag_name> <commit_hash> # 标记特定提交
git tag <tag_name> # 标记当前HEAD指向的提交
*
##### 推送标签到远程仓库:
git push origin <tag_name>
*
##### 删除标签:
git tag -d <tag_name>
git push origin :refs/tags/<tag_name> # 删除远程标签
#### **stash栈操作**:
*
##### 存储未提交的更改并清理工作区(保存现场):
git stash
*
##### 列出stash列表:
git stash list
*
##### 应用stash中的某个更改:
git stash apply <stash@{index}>
*
##### 永久应用并删除stash:
git stash pop
#### **子模块操作**:
*
##### 添加子模块:
git submodule add <repository_url> <path_to_submodule>
*
##### 更新子模块:
git submodule update --remote
#### **交互式暂存(添加部分更改)**:
git add -p
#### **Rebase(变基)**:
# 将feature分支的更改重新应用到master分支上,保持线性历史
git checkout feature
git rebase master
git checkout master
git merge feature