Git工作总结

    git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。

    我们使用分支的方式,把 Git 的分支看作上下文反而更合适。当你检出分支时,你可以在两三个不同的分支之间来回切换。你可以执行 git branch (branchname) 来创建分支,使用 git checkout (branchname) 命令切换到该分支,在该分支的上下文环境中,提交快照等,之后可以很容易地来回切换。当你切换分支的时候,Git会用该分支的最后提交的快照替换你的工作目录的内容,所以多个分支不需要多个目录。

     git在初始化的时候会生成一个.git的文件夹,而git进行版本控制所需要的文件,则都放在这个文件夹中。

    config文件:该文件主要记录针对该项目的一些配置信息,例如是否以bare方式初始化、remote的信息等,通过git remote add命令增加的远程分支的信息就保存在这里;

    objects文件夹:该文件夹主要包含git对象。git中的文件和一些操作都会以git对象来保存,git对象分为BLOB、tree和commit三种类型,例如git commit便是git中的commit对象,而各个版本之间是通过版本树来组织的,比如当前的HEAD会指向某个commit对象,而该commit对象又会指向几个BLOB对象或者tree对象。objects文件夹中会包含很多的子文件夹,其中Git对象保存在以其sha-1值的前两位为子文件夹、后38位位文件名的文件中;除此以外,git为了节省存储对象所占用的磁盘空间,会定期对git对象进行压缩和打包,其中pack文件夹用于存储打包压缩的对象,而info文件夹用于从打包的文件中查找git对象;

    HEAD文件:该文件指明了git branch(即当前分支)的结果,比如当前分支是master,则该文件就会指向master,但是并不是存储一个master字符串,而是分支在refs中的表示,例如ref: refs/heads/master。

    index文件:该文件保存了暂存区域的信息。该文件某种程度就是缓冲区(staging area),内容包括它指向的文件的时间戳、文件名、sha1值等;

    Refs文件夹:该文件夹存储指向数据(分支)的提交对象的指针。其中heads文件夹存储本地每一个分支最近一次commit的sha-1值(也就是commit对象的sha-1值),每个分支一个文件;remotes文件夹则记录你最后一次和每一个远程仓库的通信,Git会把你最后一次推送到这个remote的每个分支的值都记录在这个文件夹中;tag文件夹则是分支的别名,这里不需要对其有过多的了解;

    首先理解这几个概念:暂存区,本地仓库,远程仓库

扫描二维码关注公众号,回复: 5677464 查看本文章

        暂存区这个是我们每一次进行代码修改的地方,例如我们idea的所编译的代码就是暂存区

        本地仓库是我们每一次pull,从远程仓库pull(拉取)到地方,这个地方就是本地仓库,他其实就是远程仓库的一个副本

        远程仓库是存放到服务器上的代码,是每一个人认为自己的代码修改好了,就可以集体上传到一个地方,而你也可以从这个地方下载别人的代码,这个地方就是远程仓库。

 

Master:主分支

wangjing18-dev:    Master分支,这个是存放代码的地方

Stanging:    Master分支,是集体存放测试代码的分支

 

本人主分支master、本人主分支master的分支myRelease(存放和修改代码)、远程仓库的主分支master、远程仓库主分支的分支dev-v0.0.1、远程仓库主分支master的分支HEAD。

分支当前所跟的主分支信息实际是存在config 文件中的,可以用下面的命令来查看myRelease分支的信息,

git config -l | grep 'branch\.myRelease'

比如下面的打印说明本地myRelease分支 track 的是 origin 库的 dev-v0.0.1 分支。


如果没有找到myRelease的分支信息,说明创建分支的时候没有设置他的track信息,所以找不到。可以手动设置

git branch --set-upstream myRelease origin/xxx     就会设置myRelease分支track origin/xxx

或者删掉本地 myRelease,然后重新创建 myRelease 分支,并且指定其 track 信息,比如

git checkout -b temp --track origin/xxx      则此时的myRelease 分支track origin/xxx

当没有设定track信息时不会跟踪任何分支


git init 以创建新的git仓库

git config user.name "someone"

git config user.email "[email protected]"

git status 查看当前项目状态(比如:位于分支master)

git add </路径/文件> 添加到缓存区

git commit -m "你的注释"   将改动过得项目提交到当前分支(HEAD),这个过程也叫快照,但是还没到你的远端仓库

git clone /path/to/repository 创建一个本地仓库的克隆版本

git clone username@host:/path/to/repository 获取远程仓库中的文件

git branch (branchname) 来创建分支

git branch -a 查看分支

git checkout (branchname) 切换分支

git checkout -b 创建并切换分支

git checkout -b myRelease origin/dev-v0.0.1 取远程分支并化一个新分支

checkout -- <file>..." 丢弃工作区的改动

git merge 合并分支

 

git修改远程仓库先删后加
git remote rm origin
git remote add origin [url]

 

要取回origin主机的next分支,与本地的master分支合并,需要写成下面这样 -

 git pull origin next:master

如果远程分支(next)要与当前分支合并,则冒号后面的部分可以省略。上面命令可以简写为:

 git pull origin next

上面命令表示,取回origin/next分支,再与当前分支合并。实质上,这等同于先做git fetch,再执行git merge。

 git fetch origin

 git merge origin/next

 

git push origin master

上面命令表示,将本地的master分支推送到origin主机的master分支。如果master不存在,则会被新建。如果省略本地分支名,则表示删除指定的远程分支

 

git fetch 获取数据

git branch -a 查看分支

git checkout -b myRelease origin/dev-v0.0.1 将本地分支切换至远程分支的v0.0.1版本


    

猜你喜欢

转载自blog.csdn.net/solike8/article/details/80494050
今日推荐