标签:思维导图 自己 oba 修改 文件 mamicode zhang git分支 建立连接
分布式的代码管理系统,区别于svn等中央式代码管理系统。每个开发者的git客户端本地就是一个git 仓库,然后再通过gitlab/github的远程仓库与其他团队成员同步信息。
推荐使用2.7
yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker wget https://github.com/git/git/archive/v2.7.4.zip unzip v2.7.4 cd git-2.7.4/ make prefix=/opt/git all make prefix=/opt/git install ls /usr/bin/git rm -rf /usr/bin/git #删除默认自带版本 ln -s /opt/git/bin/git /usr/bin/git git version
本地目录
git 仓库所在目录,实际存在的目录,所有代码文件存放的目录
暂存区域
不可见的空间,代码开发完毕需要提交到暂存区域t,以便从暂存区提交到本地仓库
本地仓库
存放管理本地代码的仓库,就是git 初始化配置的目录。代码从暂存区提交到本地仓库
远程仓库
指的是gitlab或者github这些远程仓库。本地仓库与远程仓库建立连接后,本地仓库代码可以推送到远程仓库保管,远程仓库最新代码可以下载后本地。通过远程仓库实现团队成员合作开发,大家把自己的开发成果推送到远程库,其他同事同步远程数据到本地仓库再次基础上继续开发,本地完成后再次推送到远程实现了协同开发目的。
git 是通过文件状态的标识来管理的,新建的文件放在工作目录里面状态为untracked,此时文件还未被仓库管理,需要提交到暂存区以及仓库才会被仓库管理。
mkdir /opt/git-dir #创建一个git 工作目录 cd /opt/git-dir/ #进入目录 git init #把此目录初始化为git 仓库 git config --global user.name "zhangsan" git config --global user.email "zhangsan@163.com"
git status #查看当前工作目录的文件状态,例如未被追踪状态,暂存区状态,根据状态提示下一步操 作。 git add file-name/. #添加工作目录文件到暂存区。file-name 指定文件,"."全部文件 git commit -m "comment" #提交暂存区的文件到本地仓库,每一次提交到仓库都会生成一个镜像来保存当前仓库文 件状态,通过id 标识,之前的镜像状态可以通过id去回退。 git rm --cached file-name #删除暂存区或分支上的文件, 本地保留, 只是不希望这个文件被版本控制,文件恢复为 未被追踪状态,如果文件从本地仓库被删除那么需要commit 提交一下。 git rm file-name #删除暂存区或分支上的文件, 同时工作区也要删除。如果文件从仓库被删除需要 commit提交一下。 git log #查看当前分支的提交记录以及各个记录的id号
git 本质通过记录文件状态管理仓库的,每次commit后都会产生一个新的文件状态并保存记录此时状态,git之所以能够高效管理仓库,实际上使用的是指针的机制,每一次提交指针都会移动到提交的状态,回退也是切换指针到之前commit而文件并未被改变。
而分支实际上就是指针。git 最开始只有一个分支master,新建一个分支实际就是新建一个指针,新建指针最开始与当前分支指向位置相同。
当前切换分支实际上通过一个HEAD的指针来指向要切换的分支。
分支思维导图
git status 查看当前所在分支,以及分支内文件状态
git branch 查看当前存在的分支
git branch about 在当前所在的分支,创建一个about 的新分支,新分支会和当前所在分支指针指向同一位置。
git checkout about 切换到about 分支
git branch -d about 删除分支
ls git 工作目录 查看的是未被提交到缓存区的文件,和该分支中本地仓库文件。只能看到自己分支仓库文件,不能看到其他分支仓库文件。
git merge test 把test 分支合并到当前分支
git branch --merged #查看哪些分支已经被merge 到当前分支了
git checkout file-name #对于已经提交到本地仓库的文件再次修改后,如果要撤销修改此命令会把仓库文件覆盖到本地工作目录文件。如果新建本地工作目录文件则无办法撤销。
git relog #查看之前的回滚id ,可以通过 git checkout id 把回滚后的状态再返回到之前的状态
git reset --hard/--soft/--mixed
练习merge
merge与rebase 区别
merge 后原来的分支还在,merge 操作会产生一个新的commit记录此次的merge 操作,会把分支的commit 操作按时间顺序合并过来
rebse 会把分支的commit按时间顺序合并过来,但不会产生一个新的提交,就好像没发生一样不记录,原来分支
标签:思维导图 自己 oba 修改 文件 mamicode zhang git分支 建立连接
原文地址:https://www.cnblogs.com/fanggege/p/11507374.html