Git做为一款优秀的绘线工具,是每一个当代程序猿都应该好好学习的(逃
基础知识
* Git采用快照流机制。可以视git数据为一个小型的文件系统的若干快照
* Git中几乎所有操作都是本地执行,绝大多数指令可以离线操作
* Git有三种状态,已提交(committed)数据已经安全的保存到本地数据库。已修改(modified)已经修改文件但是还没存入数据库。已暂存(staged)对一个已修改文件的当前版本做标记,使之包含在下次提交的快照中
git status 检测文件状态
* Untracked files :新的未追踪文件(之前的快照库中不存在)可以通过git add 来进行文件追踪
* Changes to be committed : 暂存状态,如果进行提交这些文件此时此刻的版本就讲被留存到历史记录中
* Changes not staged for commit : 追踪的文件已经被改变,但是还没放入缓存区。如果要暂存这次更新可以运行git add 在这种情况下git add功能为把以追踪的文件放入缓存区,此外add命令还有把有冲突的文件标记为已解决状态等功能
* 可以添加参数 - -short来获取紧凑格式输出,紧凑格式时的标记含义如下
? ?新添加还未进行追踪
A 新添加到缓存区的文件
M 文件被修改了并放入了暂存区
M 文件被修改了但是还未被放入暂存区
MM 文件被修改了一部分放入了缓存区,一部分没放入
.gitignore (用于进行文件忽略)
* 所有空行或者以 # 开头的行都会被Git忽略
* 可以使用标准的glob模式进行匹配。
> glob模式
> 星号(*)匹配零个或多个任意字符;[abc]匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。
* 匹配模式可以以 / 开头防止递归 。 以 \ 结尾指定目录
* [主流语言的gitignore](https://github.com/github/gitignore)
git commit 提交更新
* 添加参数 -m ‘一些描述’ 来进行提交描述
* 提交记录的是放在暂存区域的快照,没有放入暂存区的更改不会被提交
* 添加参数 -a 跳过使用暂存区,Git会自动把所有已经跟踪过的文件暂存起来一并提交,可以跳过git add
* git commit - -amend 可以在未push前 取消上一次commit
git rm 移除文件
* 从版本管理中移除一个已经添加的文件,如果文件在删除之前已经修改了并且还放入的暂存区则需要添加 -f 命令进行强制删除
* 如果你只是想把文件在git仓库中删除(停止追踪)但是在本地磁盘中保留,也需要添加 - - cached 选项
git reset
* 取消一个已经暂存的文件
git checkout - - __filename
* 取消对一个文件的修改
git fetch [remote - name]
* 访问远端仓库,拉取所有还没在本地的数据,执行之后,将拥有远端仓库的所有分支引用。
git brach
* git brach -d 可以删除一个分支
git merge
* 当子分支在分离提交后,主分支未进行改动,可以通过切换回主分支 git merge [sonbarch] 的方式进行合并,即在合并两个分支时如果顺着一个分支走下去能到达另一个分支,那么Git在合并两者时,只会简单的进行前推
* 当子分支在分离提交后,主分支也改动了,这时候再进行git merge操作则会把两个分支的末端快照进行合并,解决冲突后生成新的快照节点作为两个分支的共同后续
git rebase
* rebase命令可以将提交到某一分支上的所有修改转移到另一分支上,类似“重新播放” ,操作为在要被重新播放的分支上执行 git rebase master
* - - onto master server client 取出client分支上找出处于client分支和server分支的共同先祖之后的修改,把他们在master分支上进行重演
网友评论