1454 字
7 分钟
Git基本使用方法

1. 安装Git
Windows
- 下载安装程序:https://git-scm.com/download/win
- 运行安装程序,按默认选项安装
macOS
# 使用Homebrew安装brew install gitLinux (以Ubuntu为例)
sudo apt-get updatesudo apt-get install git2. 配置Git
首次使用Git前需要配置用户信息:
# 自动创建.ssh到C盘用户目录,之后自行到GitHub或者Gitee上关联keygenssh-keygen -t rsagit config --global user.name "Your Name"git config --global user.email "youremail@example.com"可选配置:
# 设置默认编辑器为VSCodegit config --global core.editor "code --wait"# 彩色输出git config --global color.ui true3. 创建仓库
初始化新仓库
mkdir project-namecd project-namegit init克隆现有仓库
git clone https://github.com/username/repository.git4. 基本工作流程
查看状态
git status添加文件到暂存区
# 添加特定文件git add filename# 添加所有修改的文件git add .提交更改
git commit -m "提交信息"查看提交历史
git log5. 分支管理
创建分支
git branch branch-name切换分支
git checkout branch-name创建并切换分支
git checkout -b branch-name合并分支
git checkout maingit merge branch-name删除分支
git branch -d branch-name6. 远程仓库
添加远程仓库
git remote add origin https://github.com/username/repository.git推送到远程仓库
git push -u origin main从远程仓库拉取更新
git pull获取远程更新
git fetch6. 撤销更改
工作区的修改撤销
当你修改了文件但还没有执行git add时:
# 撤销对单个文件的修改git checkout -- filename# 撤销对所有已修改文件的修改git checkout -- .这条命令会用暂存区(或最后一次提交)的版本替换工作区的版本
注意:这个操作是不可逆的,被撤销的更改无法恢复
暂存区的修改撤销
当你已经执行了git add但还没有提交:
# 将单个文件从暂存区移回工作区(取消暂存)git reset HEAD filename# 将所有文件从暂存区移回工作区git reset HEAD .
reset命令将文件从暂存区移出,但保留工作区的修改文件状态变为已修改但未暂存
撤销最近的提交
修改最后一次提交(内容或消息)
# 将暂存区的修改合并到最后一次提交中git commit --amend# 仅修改提交信息而不改变内容git commit --amend -m "新的提交信息"如果已经推送到远程仓库,谨慎使用amend操作
需要使用
git push --force强制推送修改后的提交
彻底撤销最后一次提交
# 保留工作区和暂存区的修改git reset HEAD^# 保留工作区修改,但清空暂存区git reset --mixed HEAD^# 彻底丢弃最后一次提交的所有修改git reset --hard HEAD^HEAD^`表示前一次提交
--mixed(默认):保留工作目录的修改,重置暂存区
--soft:保留工作目录和暂存区的修改
--hard:丢弃所有修改
撤销指定提交
# 创建一个新提交来撤销指定提交的更改git revert <commit-hash>
revert是通过创建一个新的提交来抵消之前的提交适合已经推送到远程仓库的提交
保留了撤销的历史记录
重置到任意提交点
# 移动到指定提交,保留工作目录修改git reset <commit-hash># 移动到指定提交,丢弃所有修改git reset --hard <commit-hash>
--hard重置会永久丢弃所有未提交的更改如果已经推送到远程仓库,需要谨慎使用
找回被删除的提交
如果你误删了提交,可以使用reflog找回:
# 查看操作历史git reflog# 使用找到的commit hash重置回去git reset --hard <commit-hash>实用场景示例
场景1:撤销未暂存的修改
# 不小心修改了文件但想恢复git checkout -- file.txt场景2:撤销已暂存但未提交的修改
git add file1.txt file2.txt# 突然发现不应该add file1.txtgit reset HEAD file1.txt场景3:撤销最近的本地提交
git commit -m "错误的提交"git reset HEAD^场景4:撤销已推送到远程的提交
git revert HEADgit push场景5:彻底回滚到某个历史版本
git log # 查看要回滚到的commit hashgit reset --hard abc123git push --force # 谨慎使用!
- 对已推送到远程仓库的提交,优先使用
git revert而非reset- 执行
--hard重置前,确保工作区没有重要未提交的修改- 强制推送(
--force)会覆盖远程历史,团队协作时应谨慎使用- 关键操作前可以先创建临时分支备份当前状态
7. 忽略文件
创建.gitignore文件,添加需要忽略的文件或目录:
# 忽略编译生成的文件*.class*.exe*.dll*.o
# 忽略日志文件*.log
# 忽略IDE特定文件.idea/.vscode/
# 忽略Node.js依赖node_modules/
# 忽略Python虚拟环境venv/.env重置.gitignore规则后的清理
git rm -r --cached . # 从索引删除所有文件git add . # 重新添加,此时会遵守新的.gitignore规则git commit -m "fixed gitignore"8. 标签管理
创建标签
git tag v1.0.0查看标签
git tag推送标签到远程
git push origin v1.0.0删除本地标签
git tag -d v1.0.09. 常用别名设置
添加以下内容到~/.gitconfig文件的[alias]部分:
[alias] co = checkout ci = commit st = status br = branch hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short type = cat-file -t dump = cat-file -p10. 最佳实践建议
- 提交时使用清晰、有意义的提交信息
- 保持提交的原子性(每次提交只做一件事)
- 定期从上游仓库获取更新
- 在专用分支上开发新功能
- 使用
.gitignore忽略不需要版本控制的文件 - 推送前先拉取最新代码,避免冲突
11. 获取帮助
git help <command>git <command> --helpman git-<command>