git的使用总结

git是工具

  • linux之父为了维护linux版本而开发的工具,后来开源了

git和svn的区别

  • svn:集成式(所有代码集合在中央服务器上,别的电脑本地没有代码,必须请求中央服务器,必须联网才能进行版本管理)

  • git:分布式(每台电脑上都有代码,不联网也可以进行版本管理)

  • github:代码托管平台,把项目托管到平台上,查看最新的改动和版本

初始化git仓库

  • 在这个仓库会存放,git对我们项目代码进行备份的文件
  • 在项目目录右键打开git gash
  • 命令:git init

设置使用用户是谁

  • 每一次备份都会把当前备份者的信息存储起来
  • 命令:
  • git config --global user.name "xiaoming"

  • git config --global user.email "12449@qq.com"

存储的主要步骤

  • 工作区(本地写源代码的地方)-> 暂存区(相当于本地仓库的大门git add ./)->本地仓库(git cmmit -m ""对每一个存储进行了说明才能放进去)->远程仓库(git push 将本地仓库的代码同步到远程仓库中去)

把代码存储到.git仓库中

  • 1.把代码放到仓库的门口
  • git add ./... (...表示当前文件夹下的某个文件)
  • git add ./ (表示添加所有修改的文件到仓库门口)
  • 2.把仓库门口的代码存放到仓库中
  • git commit -m "..."(...表示对添加的文件的说明)

一次性把我们修改的代码放到房间中(版本库)

  • git commit --all -m "说明"

查看当前的状态

  • git会监控仓库是否改动,暂存,与是否存储
  • 命令:git status

查看历史提交的日志

  • git log查看历史提交的日志
  • git log --oneline可以查看精简版的日志
  • git reflog 查看所有版本的操作(当head指向发生回退找不到head之后的版本的时候,可以通过这个命令来查询所有版本)

git中的忽略文件

  • .gitignore在这个文件中可以设置要被忽略的文件或者目录。
  • 被忽略的文件不会被提交到仓库里去
  • 在.gitignore中可以书写要被忽略的文件的路径,以/开头,一行写一个路劲,这些路径所对应的文件都会被忽略
  • 写法
    • /.idea 会忽略.ide文件
    • /js 会忽略js目录里所有的文件
    • /js/*.js 会忽略js目录下所有的js文件

回退到指定的版本

更具Head指向

  • git reset --hard Head~0(表示回退到上一次代码提交时的状态)
  • git reset --hard Head~1(回退到上上次)
  • 以此类推 (Head一般指向的最新的版本,0时当前,1是上一次)
  • 当回退当之前的版本的时候,Head指向发生变化,查看log日志的时候,只能看到Head指向的当前版本和以前的版本(最新版本还在,但此时log日志是查询不到的)

根据版本号

  • git reset --hard 版本号

分支

  • 默认是有一个主分支master

创建分支

  • git branch dev(创建了一个dev分支,在刚创建时dev分支里的东西是和master分支里的东西是一样的)

切换分支(进入分支)

  • git branch (可以查看有几个分支)
  • git checkout dev (切换到刚才创建的dev分支当中)

合并分支

  • git merge dev(把当前的分支(master)和指定的分支进行合并(dev))
  • 当前的分支指的是git branch命令输出的有*的分支

删除分支

  • $ git branch -d dev

合并冲突

  • 冲突是,当我们在分支内填写了代码时,在主支的同一个文件中也修改了代码,合并的时候,git无法判断保留哪个,但是会将两次修改都记录在文件当中,我们需要手动的去判断保留哪一个,处理后的结果还需要在提交一次

Github

https方式提交代码到github上

  • git push [地址] [分支名]
  • [地址例]:git push https://github.com/Y-Yin/test.git master
  • 会把当前分支的内容上传到远程的master分支上
  • 每次都要输入用户名和密码(比较繁琐)

ssh方式提交代码到github上(多人或公司常用方法)

  • 公钥 私钥,两者之间是有关联的
  • 生成公钥和私钥
  • ssh-keygen -t rsa -C "12449@qq.com" (邮箱随意填写,根据提示的保存路径找到pub后缀的文件(公钥),配置到github中)

获取github上仓库的数据

  • git pull [地址] [分支名]
  • [地址例]:git pull https://github.com/Y-Yin/test.git master
  • 会把远程分支的数据得到:(注意本地要初始一个仓库
  • git clone [地址]
    +会得到远程仓库相同的数据

简写pull和push

  • 1.关联仓库

    • git remote add origin git@github.com:Y-Yin/test3.git (相当于定义了一个origin变量=我们的地址)
  • 2.使用origin简写地址

    • git push origin master (这里的origin将等于远程仓库的地址)

工作项目中,git创建分支,提交代码流程

  • git branch :查看所在分支
  • git checkout -b user :checkout切换到哪个分支 , -b 创建分支 (创建user分支,并切换到这个分支)
  • git status 查看代码状态
  • git add . 将代码放入到暂存区
  • git commit -m “xxx” 将代码提交到本地仓库 并且添加说明
  • git push -u origin user (云端没有这个分支),origin云端仓库别名,提交代码到云端的user分支
  • 此时,user分支包含了user这个模块的代码,我们还需要将user分支的代码合并到主分支上,为什么这样做?有利于回滚,多人协作修改bug等,如果某个模块需要更新或者修改bug,可以拉取对应分支,修改完成后再合并到主分支,项目同时可以继续演进和开发,但是如果没有分支,整个项目代码都需要回滚到这个模块开发阶段,项目无法继续进行
  • git checkout master 切换到主分支
  • git branch 检查是否切换到主分支
  • git merge user 合并user分支 注意:这里只是本地代码进行了合并,远端并没有,需要我们再次提交代码
  • git push 将代码推送到云端

上面是写好代码,之后进行的所有操作,项目中,我们也会先创建对应分支,再进行代码编写

  • git checkout -b rights 创建rights分支,并切换到这个分支 (此时,只有本地有这个分支)
  • git branch 查看所在分支
  • git push -u origin rights 将这个分支推送到云端的分支
  • 此时,编写好代码后就可以直接push提交,再合并就可以了
原文地址:https://www.cnblogs.com/JCDXH/p/11735631.html