git

GIT


| -- git由来
| -- git简图
| -- github远程仓库与本地仓库的创建和关联
| -- 本地代码管理
| -- git分支管理工具
| -- git扩展功能git lfs

  • git由来
    • linux系统创建了后,作为开源系统,其创始人收到世界各地志愿者的代码,为了便于管理代码,linus创建了git,并把linux的源码放在git上管理,从此,git成为最流行的分布式版本管理系统。

    • 当多人一起做一个项目的时候,项目代码原先都是放在一台服务器上,然后大家要工作了再通过互联网把代码下载到自己电脑里工作,每天工作完了再提交回服务器,这种就是集中式的版本管理控制系统;这种管理方式必须联网才能工作,一旦网不好,能把人急死,而且,服务器出问题的话,所有人无法工作;而分布式管理系统,每个人的电脑上都是一个完整的版本库,都有完整的代码,不需要联网,即使某人的电脑坏了,从其他人那边拷贝一份代码就可以了。当然,现在的分布式管理系统也会有一台服务器,这台服务器用来方便大家交换各自的“修改”,没有它大家也一样工作,就是交换修改不方便而已。

    • git属于分布式版本管理系统,除了无需联网等优点外还拥有强大的分支管理工具。

  • git简图

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TRHAyW42-1584430599766)(/home/jiangkaifeng/personal_file/git.jpg)]

    • Remote:远程仓库

    • Repository:本地仓库

    • Index:暂存区

    • worrkspace:工作区

  • github远程仓库与本地仓库的创建与关联
    • github:一个提供git仓库托管服务的网站,只需注册一个github账号,就可以免费获得git远程仓库,这是一个国外的网站,国内也有提供类似服务的网站,码云。

    • github远程仓库的创建

      1. 注册好github账号后,建立新的仓库repository
      2. 选择公开仓库public,大家都能看到,而private只能自己看,但要交钱
      3. readme可要可不要
    • 本地仓库的创建

      1. 本地仓库文件夹下git init,初始化,生成了一个.git目录,用来跟踪管理版本库的,被隐藏了,ls -ah查看
    • 远程仓库与本地仓库建立关联:git支持SSH和HTTP(S)协议

      1. 在自己电脑主目录里找到.ssh目录,把里面的id_rsa.pub的内容添加到github上的“SSH Keys”上;
      2. 关联远程库与本地库,在本地仓库下执行git remote add origin 远程库链接地址
      3. 这样我们在本地管理的项目就可以同步管理在远程仓库了
    • 从本地拉取远程仓库的代码:git pull origin master

    • 把本地仓库的代码推送到远程仓库:git push -u origin master,第一次推送要用-u,是把本地的master和远程的master关联起来

    • 删除关联的远程库git remote rm origin,origin是远程仓库名称,可以取其他的,如mars等

    • 查看远程库git remote,查看详细信息,git remote -v

    • 假如没有建立本地仓库,只在github下建好了远程仓库。可以直接在你自己选择的目录下 git clone 远程库网址,这样就把远程库下载到目录下了

  • 本地代码管理
    • 当你改了一点代码后,想要提交到版本库,首先添加要上传的文件,git add . ,把修改的文件放到一个暂存区,然后把文件提交并添加说明git commit -m “你对修改的描述”,这时候你的修改就提交到本地的版本库里了;
    • 当然,这里面还有许多方便的工具
      • 当你修改了文件后,git diff 文件名,查看自己做的修改再提交,绿色的是新增,红色的是改动
      • git status查看分支信息,查看暂存区状态,git checkout – 文件名,丢弃工作区某文件的改动;git checkout .丢弃工作区的修改
      • git reset HEAD ,可以把暂存区的修改撤销掉,重新放回工作区
      • git reset --hard,会把暂存区和工作区的状态恢复为原始状态
      • 文件从暂存区提交后,git log查看版本信息,git log --stat 查看提交详细信息
      • 回退版本,git reset --hard HEAD^,会显示回退到上一个版本的版本信息,或者git reset --hard 版本号
      • 版本回退错了想改回去怎么办,又记不到之前的版本号了,git reflog,记载了所有的git版本以及操作
      • 删除文件,git rm 文件名,然后提交,把版本库里对应文件也删除了
  • git分支管理工具
    • 正常情况下版本库里只有一条主分支master,有一个默认指向它的指针HEAD,创建一个分支,就是新建一个指针,例如dev,dev上的工作完成了,需要合并分支,则只需把master指向dev的当前提交,就完成了合并

    • 查看分支git branch, *所在的分支即为当前所在的分支

    • 创建分支git branch dev

    • 切换分支git checkout dev

    • 创建并切换分支:git checkout -b dev

    • 在不同分支上修改的文件不会相互影响

    • 在dev下修改了文件后,合并到master分支上git merge dev

    • 删除dev分支git branch -d dev

    • 当我们新建了一个分支dev修改了文件提交,然后切换回master分支也修改了文件提交,这时候合并dev分支就会出现冲突,打开修改的文件会看到出错的地方;这时候需要修改文件后再次提交

    • 查看分支合并图git log --graph

    • 不用丢掉分支信息的合并加上参数 --no-ff,即git merge --no-ff dev,这会建立一次新的提交

    • 强行删除修改过的分支,git branch -D dev

    • 多人合作时,推送自己的修改失败,先把远程的分支git pull下来,再在本地解决冲突合并,然后再提交

    • 如果git pull时提示no tracking information,说明本地分支和远程分支链接关系没有创建,用命令,git branch --set-upstream-to dev origin/dev

    • 在本地创建一个和远程对应的分支git checkout -b branch dev origin/dev

    • 打标签git tag v1.0,查看标签git tag,对应某一版本打标签git tag v2.0 版本号

    • 查看标签下对应的版本信息git show v1.0

    • 删除标签git tag -d v1.0

    • 推送标签git push origin v1.0

  • git扩展功能git lfs

    ​ 有的时候项目中有一些大型文件,如模型或者图片等,这些东西和其他文件放一起会大幅增加仓库的体积。这时候会用到git LFS,LFS就是大文件存储的缩写,通常会另外建一个仓库,用于存放这些大文件,每个大文件有相对应的指针,我们的主仓库中只需要保留这些指针就可以了。当拉取新版本的时候,根据指针的对应会更新相应的大文件:

    • 开启lfs功能 git lfs install

    • 查看当前使用git lfs管理的匹配列表 git lfs track

    • 大文件追踪 ,例如追踪后缀为png的文件 git lfs track “*.png”

    • 查看当前git lfs对象的状态 git lfs status

    • 拉取对应的lfs对象 git lfs pull

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值