Git 常用命令
git diff示意图
git各种操作关系图
概念:
Workspace:工作区
Index / Stage:暂存区
Repository:仓库区(或本地仓库)
Remote:远程仓库
初始化:
# 在当前目录新建一个Git代码库$ git init
# 下载一个项目和它的整个代码历史$ git clone[url]
配置:
# 显示当前的Git配置$ git config--list
# 编辑Git配置文件$ git config-e[--global]
# 设置提交代码时的用户信息
$ git config[--global]user.name"[name]"
$ git config[--global]user.email"[email address]"
增加/删除/重命名:
# 添加指定文件到暂存区$ git add [file1] [file2]...
# 添加指定目录到暂存区,包括子目录$ git add [dir]
# 添加当前目录的所有文件到暂存区$ git add .
# 删除工作区文件,并且将这次删除放入暂存区$ git rm [file1] [file2]...
# 停止追踪指定文件,但该文件会保留在工作区$ git rm --cached [file]
# 改名文件,并且将这个改名放入暂存区$ git mv [file-original] [file-renamed]
!!
git checkout .#本地所有修改的。没有的提交的,都返回到原来的状态;
git stash#把所有没有提交的修改暂存到stash里面。可用git stashpop回复;
git reset --hard HASH#返回到某个节点,不保留修改。
提交:
# 提交暂存区到仓库区$ git commit -m [message]
# 提交暂存区的指定文件到仓库区$ git commit [file1] [file2]... -m [message]
# 提交工作区自上次commit之后的变化,直接到仓库区$ git commit -a
分支:
# 列出所有本地分支$ git branch
# 列出所有远程分支$ git branch -r
# 列出所有本地分支和远程分支$ git branch -a
# 新建一个分支,但依然停留在当前分支$ git branch [branch-name]
# 新建一个分支,并切换到该分支$ git checkout -b [branch]
# 新建一个分支,与指定的远程分支建立追踪关系$ git branch --track [branch] [remote-branch]
# 切换到指定分支,并更新工作区$ git checkout [branch-name]
# 切换到上一个分支$ git checkout -
# 合并指定分支到当前分支$ git merge [branch]
# 删除分支$ git branch -d [branch-name]
查看:
# 显示有变更的文件$ git status
# 显示当前分支的版本历史$ git log
#可以在log中查找制定关键字对应的commit $log [--grep "xxx"]
# 显示commit历史,以及每次commit发生变更的文件$ git log--stat
# 显示指定文件是什么人在什么时间修改过$ git blame[file]
# 显示暂存区和工作区的差异$ git diff
# 显示暂存区和上一个commit的差异$ git diff--cached[file]
# 显示工作区与当前分支最新commit之间的差异$ git diff HEAD
# 显示两次提交之间的差异$ git diff[first-branch]...[second-branch]
远程同步:
# 下载远程仓库的所有变动$ git fetch[remote]
# 显示所有远程仓库$ git remote-v
# 显示某个远程仓库的信息$ git remote show[remote]
# 增加一个新的远程仓库,并命名$ git remote add[shortname][url]
# 取回远程仓库的变化,并与本地分支合并$ git pull[remote][branch]
# 上传本地指定分支到远程仓库$ git push[remote][branch]
# 强行推送当前分支到远程仓库,即使有冲突$ git push[remote]--force
# 推送所有分支到远程仓库$ git push[remote]--all