Git

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 的数字)。

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 checkout -b __brachname

  • 创建新的分支

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分支上进行重演

最后更新于