Git 命令清单
Git 是一个分布式版本控制系统,最初由 Linus Torvalds 创作。Git 是用于 Linux 内核开发的版本控制工具,与 CVS、Subversion
Git 的三种状态和四个区域
三种状态:
-
已提交(committed)
-
已修改(modified)
-
已暂存(staged)
刚开始编辑文件时,文件处于已修改(modified)状态,文件在工作目录。
修改完了文件,执行git add
,这个时候文件就变为已暂存(staged)状态,文件进入暂存区,内容被保存到 Git 数据库中。
然后执行git commit
,文件就变为已提交(committed)状态,创建了一个提交记录保存到了Git仓库。
四个区域:
-
工作区:工作区是当克隆项目到本地后,项目所在的文件夹
-
暂存区:用于存储工作区中添加上来的变更(新增、修改、删除)文件的地方
-
本地仓库:用于存储本地工作区和暂存区提交上来的变更过的文件的地方
-
远程仓库:把项目存储在一个地方而不是某个人的电脑上,以便多人协同工作。
Git 常用命令
配置相关
git config --list #显示git配置
git config -e [--global] #编辑配置文件
git config [--global] user.name "[name]" #设置代码提交时的用户名
git config [--global] user.email "[email address]" #设置代码提交时的邮箱
代码库相关
git init #在当前目录下新建一个代码库
git clone [url] #从目标地址下载一个项目
增删文件相关
git add [file] #把指定文件添加到暂存区
git add [dir] #把指定目录添加到暂存区
git add * #把当前目录的所有文件添加到暂存区
git rm [file] #删除工作区文件,并将这次删除放入暂存区
git mv [file-original] [file-renamed] #改名文件,并将其放入暂存区
提交相关
git commit [file] -m [message] #提交暂存区指定文件到仓库
git commit -m [message] #提交暂存区到仓库
git commit -v #提交时显示所有信息差异
git commit -a #提交工作区自上次提交之后的变化,直接到仓库区
git commit -amend [file] #重做上一次提交,并包括指定文件的新变化
标签相关
git tag #列出所有标签
git tag [tag] #在当前提交新建一个标签
git tag [tag] [commit] #在指定提交新建一个标签
git show [tag] #查看标签信息
git push [remote] [tag] #提交指定标签
git push [remote] --tags #提交所有标签
git tag -d [tag] #删除本地标签
查看信息相关
git log #显示当前分支的版本历史
git status #显示有变更的文件
git log --stat #显示提交历史,以及每次提交发生变更的文件
git log -S [keyword] #根据关键词搜索提交历史
git log -p [file] #显示指定文件的每一次差异
git shortlog -sn #显示所有提交过的用户
git diff #显示工作区和暂存区的差异
git diff --cached [file] #显示暂存区和上一次提交的差异
git diff [first-branch]...[second-branch] #显示两次提交之间的差异
git show [commit]:[filename] #显示某次提交时,某个文件的内容
git reflog #显示当前分支的最近几次提交
分支相关
git branch #列出所有本地分支
git branch -r #列出所有远程分支
git branch -a #列出所有本地分支和远程分支
git branch [branch-name] #新建一个分支,但停留在当前分支
git checkout -b [branch] #新建并切换到该分支
git checkout - #切换到上一个分支
git merge [branch] #合并指定分支到当前分支
git branch -d [branch-name] #删除指定分支
git push origin --delete [branch-name] #删除远程分支
远程仓库相关
git remote -v #显示所有远程仓库
git remote show [remote] #显示指定远程仓库的信息
git remote add [shortname] [url] #增加并命名一个新的远程仓库
git push [remote] [branch] #上传本地指定分支到远程仓库
git remote add [remote] [url] #把本地仓库和远程仓库关联
git pull [remote] [branch] #取远程仓库的内容更新本地仓库
git pull [remote] [branch] --allow-unrelated-histories #强行合并仓库
git fetch [remote] #下载远程仓库的所有变动