文件目录操作命令
# 创建一个目录名为[dirname]的空目录
$ mkdir [dirname]
# 显示当前目录路径
$ pwd
# 查看[filename]文件内容
$ cat [filename]
# 删除名为[filename]的文件
$ git rm [filename]
Git 初始化操作
# 初始化 Git 仓库
$ git init
# 添加远程仓库
$ git remote add origin [url]
# 克隆远程仓库
$ git clone git@[url]/test.git
# 添加文件到暂存区
$ git add [filename]
# 提交文件(附带注释)
$ git commit -m "[message]"
Git 克隆分支
# 克隆仓库(默认分支)
$ git clone [repo].git
# 克隆到指定目录
$ git clone [repo].git [target-dir]
# 克隆并切换分支
$ git clone -b [branch-name] [repo].git
# 查看所有分支(包括远程)
$ git branch -a
# 创建并跟踪远程分支
$ git checkout -t origin/[branch]
# 指定本地分支名(这个名字可以和远程分支名一样,也可以不一样)
# 创建一个本地分支 [branch],基于 origin/[branch] 的当前状态
# 但不会自动设置跟踪关系(默认情况下不会自动关联远程分支,需要后续用 git branch --set-upstream-to=origin/[branch] [branch] 设置)
$ git checkout -b [branch] origin/[branch]
查看命令
# 查看仓库状态
$ git status
# 查看文件改动
$ git diff [file]
# 查看提交历史
$ git log
# 查看历史版本记录(命令记录)
$ git reflog
# 简洁日志格式
$ git log --pretty=oneline
版本回退
# 回退到上一个版本
$ git reset --hard HEAD^
# 回退到第 3 个之前的版本
$ git reset --hard HEAD~3
# 回退到指定版本
$ git reset --hard [commit-id]
撤销修改
# 撤销未提交的修改
$ git checkout [file-name]
# 还原最近一次提交
$ git revert HEAD
# 还原指定版本
$ git revert [commit-id]
分支管理
# 查看本地分支
$ git branch
# 查看所有远程分支
$ git branch -a
# 创建新分支
$ git branch [name]
# 删除本地 dev 分支
$ git branch -d dev
# 删除远程 dev 分支
$ git push origin --delete dev
# 重命名分支
$ git branch -m dev develop
# 创建并切换分支
$ git checkout -b dev
# 合并分支
$ git merge dev
# 推送本地新建分支
$ git push origin yzy-dev
# 撤销所有修改
$ git checkout -- [file]
# 切换到 main 分支
$ git checkout main
# 推送并关联远程分支
$ git push --set-upstream origin dev
Tag 相关操作
# 查看所有 tag
$ git tag
# 创建轻量标签
$ git tag [name]
# 删除本地 tag
$ git tag -d [name]
# 删除远程 tag
$ git push origin --delete tag [name]
# 查看 tag 信息
$ git show [name]
# 推送 tag 到远程
$ git push origin [name]
隐藏文件操作(git stash)
# 暂存当前修改
$ git stash
# 查看 stash 列表
$ git stash list
# 恢复 stash(保留记录)
$ git stash apply
# 删除某个 stash
$ git stash drop
# 恢复并删除 stash
$ git stash pop
查看远程库信息(git remote)
# 查看远程库
$ git remote
# 查看远程详细信息
$ git remote -v
# 添加远程库
$ git remote add [name] [url]
# 重命名远程库
$ git remote rename [oldname] [newname]
# 删除远程库
$ git remote rm [name]
将远程分支拉取到本地
# 方法一:新建本地分支并跟踪远程分支
$ git checkout -b [local] origin/[remote]
# 手动设置上游分支
$ git branch --set-upstream-to=origin/[remote] [local]
# 方法二:fetch 并新建本地分支
$ git fetch origin [remote]:[local]
Git Pull 操作
# 拉取远程分支 origin-xxx 到本地分支 main
$ git pull origin origin-xxx:main
# 当前分支默认合并远程同名分支
$ git pull
Git 设置
# 设置大小写敏感
$ git config core.ignorecase false
# 忽略权限变动
$ git config core.filemode false
# 设置 push 策略为 simple(推荐)
$ git config --global push.default simple
# 设置 push 策略为 matching(旧版)
$ git config --global push.default matching
创建追踪分支
git branch --track main origin/main
Git 命令提示语言切换为英文
$ echo "alias git='LANG=en_GB git'" >> ~/.bashrc
$ source ~/.bashrc
Git 删除未添加到版本中的文件/文件夹
# 删除未追踪的文件
$ git clean -f
# 删除未追踪的文件和目录
$ git clean -fd
# 包括 .gitignore 中忽略的文件
$ git clean -xfd
# 预览将删除哪些文件
$ git clean -nfd
# 预览将删除哪些文件(包括忽略)
$ git clean -nxfd
常见 Git 错误与解决办法
-
本地分支未关联远程分支
解决:git branch –set-upstream-to=origin/[branch] [branch]
-
推送失败 (non-fast-forward)
解决:先 git pull,合并并解决冲突再 push
-
合并冲突
解决:手动解决冲突,commit 后 push
-
Not on a branch
解决:git checkout main
-
提示 behind ‘origin/main’ by 1 commit
解决:git pull
-
push.default 警告
解决:设置 simple 或 matching 策略
-
pull 提示缺少分支
解决:修改 .git/config 添加远程追踪配置
-
权限被拒绝(Permission denied)
解决:检查使用的 SSH key 和 GitHub 用户是否一致
-
SSH 无效
解决:必须在 root 权限下配置 SSH key