https://git-scm.com/book/zh/v2
https://www.runoob.com/git/git-tutorial.html
git(分布式版本控制系统)
客户端并不只提取最新版本的文件快照, 而是把代码仓库完整地镜像下来,包括完整的历史记录。 这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。 因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。
对待数据方式— 快照流(区别于基于差异(delta-based) 的版本控制)
Git 更像是把数据看作是对小型文件系统的一系列快照。 在 Git 中,每当你提交更新或保存项目状态时,它基本上就会对当时的全部文件创建一个快照并保存这个快照的索引。 为了效率,如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。 Git 对待数据更像是一个 快照流。
git 工作流程
Git 项目拥有三个阶段:工作区、暂存区以及 Git 目录
- 工作区:就是你在电脑里能看到的目录。
- 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
- 版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。
git工作区的文件状态:
- untracked 未跟踪 (未被纳入版本控制) 既不存在于上次快照的记录中,也没有被放入暂存区。
- tracked 已跟踪 (被纳入版本控制)
- Unmodified 未被修改状态
- Modified 已修改状态
- Stage 暂存状态
git 命令
git help
start a working area (see also: git help tutorial)
clone Clone a repository into a new directory
init Create an empty Git repository or reinitialize an existing one
work on the current change (see also: git help everyday)
add Add file contents to the index
mv Move or rename a file, a directory, or a symlink
restore Restore working tree files
rm Remove files from the working tree and from the index
examine the history and state (see also: git help revisions)
bisect Use binary search to find the commit that introduced a bug
diff Show changes between commits, commit and working tree, etc
grep Print lines matching a pattern
log Show commit logs
show Show various types of objects
status Show the working tree status
grow, mark and tweak your common history
branch List, create, or delete branches
commit Record changes to the repository
merge Join two or more development histories together
rebase Reapply commits on top of another base tip
reset Reset current HEAD to the specified state
switch Switch branches
tag Create, list, delete or verify a tag object signed with GPG
collaborate (see also: git help workflows)
fetch Download objects and refs from another repository
pull Fetch from and integrate with another repository or a local branch
push Update remote refs along with associated objects
获取命令具体使用(选项信息)
git [command] -h
获取gitconfig配置文件位置
git config --list --show-origin
git 全局设置
本地设置用户名和邮件地址
右键选择Git Bash
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
查看配置信息
git config --list
获取git 仓库
- 本地初始化仓库
选择一个空目录,右键git bash
git init
- 从远程仓库克隆
选择一个空目录,右键git bash
git clone [远程Git仓库地址]
查看文件状态
git status
跟踪新文件(文件添加到暂存区)
git add user.xml
将文件提交到仓库
git commit -m "备注信息" user.xml
回顾git commit提交历史
git log
-<n> 仅显示最近的 n 条提交。
--since, --after 仅显示指定时间之后的提交。
--until, --before 仅显示指定时间之前的提交。
--author 仅显示作者匹配指定字符串的提交。
--committer 仅显示提交者匹配指定字符串的提交。
--grep 仅显示提交说明中包含指定字符串的提交。
-S 仅显示添加或删除内容匹配指定字符串的提交。
取消暂存的文件
git reset user.xml
撤消对文件的修改
git checkout -- user.xml
切换到指定版本
git reset --hard commit编号(git log 获得)
远程仓库操作命令
git remote 查看远程仓库
git remote add 添加远程仓库
git clone 从远程仓库克隆
git pull 从远程仓库拉取
git push 推送到远程仓库
查看远程仓库
git remote
git remote -v (显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL)
添加远程仓库
git remote add pb(简写) https://github.com/paulboone/ticgit
从远程仓库中抓取与拉取
git pull pb(远程仓库别名) 分支名称(master 主分支)
git pull pb(远程仓库别名) 分支名称(master 主分支) --allow-unrelated-histories)
允许无关的历史
推送到远程仓库
git push origin master
查看某个远程仓库
git remote show 别名
远程仓库的重命名与移除
git remote rename pb paul
git remote remove paul
分支管理命令
查看分支
git branch
-r 远程仓库的分支
-a 本地仓库的分支
--merged 已经合并当前分支的分支
--no-merged 尚未合并到当前分支
切换创建分支命令:
git checkout -b (branchname)
创建分支命令:
git branch (branchname)
切换分支命令:
git checkout (branchname)
当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录。
合并分支命令:
git merge
删除分支命令:
git branch -d (branchname)
合并分支
git merge (branchname)
Git 查看提交历史
git log
--oneline 选项来查看历史记录的简洁的版本
--graph 选项,查看历史中什么时候出现了分支、合并
--reverse 参数来逆向显示所有日志
git blame <file> 查看指定文件的修改记录
Git 标签
查看已有标签
git tag
git tag-a [name] 选项意为"创建一个带注解的标签"
git push [shortName] [标签name] 将标签推送到远程仓库
git checkout -b [branch] [标签name] 创建该标签内容一个分支
git show [标签name]命令可以看到标签信息和与之对应的提交信息