简介 Introduction
Git 是一个分布式版本控制系统,最后由 Linus Torvalds 创作。Git 是用于 Linux 内核开发的版本控制工具,与 CVS、Subversion 等版本控制工具不同,它采纳了分布式版本库的做法,不须要服务器端软件,就能够运行版本控制、使得源代码的公布和交换变得极其不便。Git 的速度很快,这对于 Linux 内核这样的大我的项目来说十分重要。Git 最为杰出的是它的合并追踪(Merge Tracing)性能。本来 Git 只实用于 Linux/Unix 平台,但在 Windows 平台下的应用也曾经相当成熟。
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] #下载近程仓库的所有变动