git 配置
git config --global user.name "用户名" #设置用户名
git config --global user.email "邮箱地址" #设置邮箱地址
常用参数
-a 或 --all # 代表所有
-f 或 --force # 强制操作
-r 或 --remote # 远程
-d 或 --delete # 删除
-D 或 --delete -- force # 强制删除
-m 或 --move # 重命名
-M 或 --move --force # 强制重命名
基础操作
初始化
git init # 初始化 git 文件夹
git remote add origin http://xxx.git # 关联远程仓库地址
git clone http://xxx.git # 克隆远程分支到本地
提交
git add . # 添加所有文件到暂存区
git commit -m "备注内容" # 提交并写备注
推送
git push origin master # 推送到 master
git push -f origin master # 强制推送到 master
拉取代码
git pull origin master # 拉取最新 master 分支
本地分支
git branch # 查看本地所有分支
git checkout dev # 本地切换到 dev 分支
git checkout -b dev origin/dev # 检出远程 dev 分支到本地
git checkout -b dev # 本地创建新的 dev 分支,并切换到 dev 分支
git branch dev # 本地只创建一个新的 dev 分支
git branch -d dev # 删除本地的 dev 分支
git branch -D dev # 强制删除本地的 dev 分支
git branch -m dev dev1 # 重命名本地 dev 分支为 dev1 分支
git push origin dev:dev # 推送本地新建的 dev 分支到远程仓库
git branch --track dev origin/dev # 新建本地 dev 分支,并关联到远程的 dev 分支
git branch --set-upstream dev origin/dev # 将本地已经存在的 dev 分支关联到远程的 dev 分支
远程分支
git branch -r # 查看远程所有分支
git branch -a # 查看本地和远程所有分支
git push -f origin dev # 推送本地分支到远程仓库的 dev 分支,可以加 -f 参数,强制推送
git push origin dev:dev # 推送本地的 dev 分支到远程指定的 dev 分支
git pull origin dev # 从远程仓库的 dev 分支拉取最新的代码,拉取后是会合并到当前分支,相当于执行:git fetch origin 和 dev git merge FETCH_HEAD 两条命令
git fetch --all # 获取远程仓库的所有分支
git fetch origin master # 从远程拉取 master 分支最新内容到本地
git fetch origin master:feature_log # 从远程 master 分支拉取代码到本地,并新建为 feature_log 分支
git push origin -d dev # 删除远程的 dev 分支
git branch -D -r dev # 强制删除远程的 dev 分支
合并
git merge dev # 将本地 dev 分支合并到当前分支
git rebase dev # 将本地 dev 分支合并到当前分支
提交
git add file1.txt file2.txt # 添加指定文件到暂存区,可以单个或者多个文件
git add . # 添加所有文件到暂存区
git commit -m "注释" # 提交所有暂存区内容到远程仓库
git commit file1.txt file2.txt -m "注释" # 提交暂存区指定文件到远程仓库
git commit --amend -m "更改新的注释" # 修改最后一次提交的注释内容
修改和删除
git rm file1.txt # 删除本地指定的文件
git rm -r --cached --force node_modules/ # 删除远程指定的文件夹
git mv file1.txt file2.txt # 修改文件名 file1.txt 为 file2.txt
git rm --cached file1.txt # 停止追踪文件,但不会真正删除
撤销
撤销本次提交到暂存区
git reset --soft HEAD^ # 撤销本次修改的内容,会撤回到暂存区并保留之前的代码
回退指定版本
git reset --hard [commit_id] # 根据提交的 hash 值回退到某个提交的版本,可以 git log 来查看提交所有记录的 hash 值
git push origin HEAD --force # 回退版本后,需要强制推送到远程分支
强制覆盖本地
git reset --hard origin/master # 强制用远程的master分支覆盖本地代码
其他
git checkout -- file1.txt # 第一种作用:本地误删文件,可以用远程来替换到本地
git checkout -- file1.txt # 第二种作用:未用 git add 缓存代码时候,该命令可以撤销本地的修改
git checkout . # 撤销本地所有文件的修改
git reset HEAD file1.txt # 移除暂存区中指定的文件
git reset HEAD . # 移除暂存区中所有文件
git reset . # 移除暂存区中所有文件
git revert HEAD # 放弃最后一次提交
远程操作
git remote -v # 查看远程仓库连接地址
git remote show origin # 查看远程和本地仓库的信息
git remote add origin http://xxx.git # 关联到远程仓库地址
标签
git tag # 查看所有标签
git tag [tagname] # 创建标签
git tag -a [tagname] -m "v0.2" # 修改标签信息
git tag -d [tagname] # 删除标签
查看
git status # 查看仓库状态
git rev-parse HEAD # 查看当前分支最新提交的 hash 值
git log # 查看所有提交信息,包含 hash 值等,可以作为回退版本用
git log -p file.txt # 查看指定文件的提交历史
git log --grapy # 以图表分类形式查看提交日志,等同于 git blam
git blam # 以图表分类方式查看提交日志
git commit -v # 提交时显示所有的 diff 信息
git diff # 显示暂存区和本地区的差异
git diff HEAD # 显示本地和当前分支最新提交的代码之间的差异
git diff --cached # 显示缓存区文件和上次提交之前的差异
git diff [commit-hash-1] [commit-hash-2] # 通过 commit 的 hash 值比较这两个版本间的差异