最常用的命令及解释
$ git add
# 将工作区的修改提交到暂存区
$ git commit
# 将暂存区的修改提交到当前分支
$ git reset
# 回退到某一个版本
$ git stash
# 保存某次修改
$ git pull
# 从远程更新代码
$ git push
# 将本地代码更新到远程分支上
$ git reflog
# 查看历史命令
$ git status
# 查看当前仓库的状态
$ git diff
# 查看修改
$ git log
# 查看提交历史
$ git revert
# 回退某个修改
一次完整的代码提交
// 适用于多人协同工作时,可能会操作同一文件夹,出现冲突的情况
$ git add -A
$ git commit -m "message"
$ git pull --rebase (或者git fetch + git rebase)
# 解决冲突
$ git add 冲突文件
$ git rebase –continue
$ git push
// 其中,3、4、5点,如果没遇到冲突就不用进行,直接push上去。
// 当遇到冲突时,git会提示patch failed,并要我们解决问题了再执行git rebase --continue
命令详解
git init
本地初始化一个git仓库
# 初始化一个git仓库,在当前目录下生存一个 **.git** 的目录
$ git init
git clone
从远程克隆一个仓库到本地
# 从远程仓库克隆一个项目
$ git clone <远程仓库地址>
# 从远程仓库克隆一个项目,并重新命名为MyProject
$ git clone <远程仓库地址> MyProject
# 从远程仓库克隆一个项目到指定目录
$ git clone <远程仓库地址> <目标目录>
git status
查看本地仓库的状态
# 查看当前仓库的状态
$ git status
git add
将要提交的文件添加到暂存区中
# 添加指定的文件
$ git add <文件路径>
#添加多个指定文件
$ git add <文件路径> <文件路径> <文件路径>...
# 添加所有已修改过的文件(包括修改、删除、新增的文件)
$ git add -A
$ git add --all
$ git add .
git commit
将暂存区中的文件提交到本地仓库中
# 将暂存区中的文件提交到本地仓库并添加提交说明
$ git commit -m '提交说明'
# 修改上次提交的提交说明
$ git commit --amend
git push
将本地仓库的更新推送到远程仓库
# 把本地分支推送到远程指定分支
$ git push <远程仓库别名> <本地分支名>:<远程分支名>
eg:git push origin master 将本地的master分支推送到origin主机的master分支。如果master不存在,则会被新建。
# 删除远程分支
$ git push <远程仓库别名> :<远程分支名>
// 相当于推送了一个空的本地分支到远程,等同于:
$ git push <远程仓库别名> --delete <远程分支名>
git pull
从远程拉取最新的代码并合并到本地分支
# 从远程拉取最新的代码
$ git pull
# 拉取远程某个分支的更新,再与本地的指定分支合并
$ git pull <远程仓库别名> <远程分支名>:<本地分支名>
# 如果远程分支要与当前分支合并,则冒号后面的部分可以省略
$ git pull <远程仓库别名> <远程分支名>
// git pull =git fetch+git merge
// git pull --rebase = git fetch + git rebase
// git pull 命令相当于是从远程拉取了代码(git fetch),并且合并到了一个本地的分支(git merge
// 如果使用--rebase 则代表使用git rebase代替git merge
git fetch
从远程仓库获取最新的版本到本地分支上
# 将远程仓库所有分支的最新版本全部取回到本地
$ git fetch <远程仓库的别名>
# 将远程仓库指定分支的最新版本取回到本地
$ git fetch <远程主机名> <分支名>
git merge
合并分支
# 把指定的分支合并到当前所在的分支下
$ git merge <分支名称>
git log
查看提交记录
# 查看所有的提交记录
$ git log
# 查看最新的指定数量的提交记录
$ git log -<数量>
git stash
将当前未提交的所有操作保存起来
# 将当前未提交的所有操作保存
$ git stash
# 将最新的一个缓存恢复到工作目录
$ git stash pop
# 查看所有的缓存列表
$ git stash list
git checkout
git checkout 可以用于操作分支也可用于操作文件
// git checkout 操作分支
# 切换到已存在的指定分支
$ git checkout <分支名>
# 创建并切换到指定的分支,保留所有的提交记录
$ git checkout -b <分支名>
// git checkout 操作文件
# 放弃本地文件的修改,新增的文件和已经添加到暂存区的内容不受影响
$ git checkout <文件路径>
# 放弃本地所有的文件修改
$ git checkout --hard HEAD
git branch
对分支的操作命令
# 查看本地的所有分支,当前所在分支以 "*" 标出
$ git branch
# 创建新分支,新的分支基于上一次提交建立
$ git branch <分支名>
# 查看所有本地、远程分支,当前所在分支以 "*" 标出
$ git branc -r
// 修改分支名称
# 如果不指定原分支名称则为当前所在分支
$ git branch -m [<原分支名称>] <新的分支名称>
# 强制修改分支名称
$ git branch -M [<原分支名称>] <新的分支名称>
// 删除指定的分支
# 删除指定的本地分支
$ git branch -d <分支名称>
# 强制删除指定的本地分支
$ git branch -D <分支名称>
git diff
比较版本间的差异
# 比较当前文件与暂存区文件的区别,显示没有暂存的修改
$ git diff
# 比较暂存区中文件和上次提交的文件的区别
$ git diff --cached
$ git diff --staged
# 比较当前文件和上次提交文件的区别
$ git diff HEAD
# 查看从指定版本之后改动的内容
$ git diff <版本号>
# 比较两个分支之间的差异
$ git diff <分支名称> <分支名称>
git reset
版本回退
# 回退版本,一个^代表一个版本,可以有多个,
$ git reset HEAD^
$ git reset HEAD~n
# 回退到指定的版本
$ git reset <版本号>
# 将 HEAD 的指向改变,撤销到指定的提交记录,文件也修改了
$ git reset --hard <版本号>
# 将 HEAD 的指向改变,撤销到指定的提交记录,文件未修改
$ git reset --soft <commit ID>
git tag
操作标签
# 查看所有的标签
$ git tag
# 切换到指定标签
$ git checkout <标签名>
# 查看标签的信息
$ git show <标签名称>
# 删除指定的标签
$ git tag -d <标签名称>
# 将指定的标签提交到远程仓库
$ git push <远程仓库的别名> <标签名称>
# 将本地所有的标签全部提交到远程仓库
$ git push <远程仓库的别名> -tags
git rm
删除操作
# 删除指定文件,并从本地仓库的文件夹中删除
$ git rm <文件路径>
# 移除跟踪指定的文件,在本地仓库的文件夹中保留该文件
$ git rm --cached
git mv
重命名操作
# 重命名指定的文件或者文件夹
$ git mv <源文件/文件夹> <目标文件/文件夹>
git reflog
查看所有分支的所有操作记录
# 如果回退到某个版本后又要再次回到之前的版本,就可以使用git reflog,查看所有的提交记录
# 包括已经删除的commit记录(git log不能查看已经删除的commit记录)
$ git reflog
git revert
生成一个新的提交来撤销某次提交,此次提交之前的所有提交都会被保留。
# 生成一个新的提交来撤销某次提交
$ git revert <版本号>
git remote
操作远程仓库。
# 列出已经存在的远程仓库
$ git remote
# 添加远程仓库
$ git remote add <远程仓库的别名> <远程仓库的URL地址>
# 修改远程仓库的别名
$ git remote rename <原远程仓库的别名> <新的别名>
# 删除指定名称的远程仓库
$ git remote remove <远程仓库的别名>
# 修改远程仓库的 URL 地址
$ git remote set-url <远程仓库的别名> <新的远程仓库URL地址>