Git

什么是Git?

  • Git是一款源代码管理工具(版本控制工具)
    我们写的代码需要使用Git进行管理。
  • 源代码有必要管理起吗?
  • 有必要,因为人工的去处理不同的版本,做相应备份会很麻烦。
  • Git是linux之父当年为了维护linux—linus之前也是手动维护合并把文件发给Linus
  • linus自己写了一个版本管理的工具(Git)

Git安装

初始化Git仓储/(仓库)

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

自报家门

  • 就是在git中设置当前使用的用户是谁
  • 每一次备份都会把当前备份者的信息存储起来
  • 命令:
    配置用户名:git config --global user.name "xiaoming"
    配置邮箱: git config --global user.email "xm@sina.com"

把代码存储到.git仓储中

  • 1.把代码放到仓储的门口
    • git add ./readme.md 所指定的文件放到大门口 ./是当前目录
    • git add ./ 把所有的修改的文件添加到大门口
  • 2.把仓储门口的代码放到里面的房间中去
    • git commit -m "这是对这次添加的东西的说明"

如果不加-m"" 会进入另外一个模式vim,点键盘上的i, 先按esc,再输入:q 如果不行强制退出:q!

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

  • git commit --all -m "一些说明"
    –all 表示是把所有修改的文件提交到版本库

查看当前的状态

  • 可以用来查看当前代码有没有被放到仓储中去
  • 命令: git status
    若红色,则表明没有放进暂存区。
    若绿色,说明已经在暂存区。
    若白色,这说明没有修改。(git会自动比较)

git中的忽略文件

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

查看日志

  • git log 查看历史提交的日志
  • git log --oneline 可以看到简洁版的日志 (版本号 描述)

回退到指定的版本

  • git reset --hard Head~0
    表示回退到上一次代码提交时的状态
  • git reset --hard Head~1
    表示回退到上上次代码提交时的状态
  • git reset --hard 版本号
    可以通过版本号精确的回退到某一次提交时的状态
  • git reflog
    可以看到每一次切换版本的记录:可以看到所有提交的版本号

分支

  • 默认是有一个主分支master

创建分支

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

切换分支

  • git checkout dev
    切换到指定的分支,这里的切换到名为dev的分支
    git branch 可以查看当前有哪些分支

合并分支

  • git merge dev
    合并分支内容,把当前分支与指定的分支(dev),进行合并
    当前分支指的是git branch命令输出的前面有*号的分支
  • 合并时如果有冲突(主分支和分支都有内容的修改),需要手动去处理,处理后还需要再提交一次.

GitHub

  • https://github.com
  • 不是git,只是一个网站
  • 只不过这个网站提供了允许别人通过git上传代码的功能

提交代码到github(当作git服务器来用)

Clone or download里Clone with SSH(常用)或者Clone with HTTPS(需要输出账号密码)
地址是里面的URL
  • git push [地址] master
  • 示例: git push git@github.com:neverthe/test2.git master
  • 会把当前分支的内容上传到远程的master分支上
  • git init
  • git pull [地址] master
  • 示例: git pull git@github.com:neverthe/test2.git master
  • 会把远程分支的数据得到:(注意本地要初始一个仓储!有git仓库。)
  • git clone [地址]
  • 会得到远程仓储相同的数据,如果多次执行会覆盖本地内容。

先pull拿到最新的数据, 如果github上的版本和本地上的不同,可以先在本地把冲突解决掉。然后再push上传
修改好之后先在本地提交,再上传。步骤:
git add ./
git commit -m “这是对这次添加的东西的说明”
git push git@github.com:neverthe/test2.git master

ssh方式上传代码

  • 公钥 私钥,两者之间是有关联的。
  • 生成公钥,和私钥
  • 任意一个目录下 邮箱是任意起的xiaoming@sina.com 然后默认回车即可
    ssh-keygen -t rsa -C "xiaoming@sina.com"

然后cmd,C:\Users\ASUS>。去本地找ASUS文件夹里面的 .ssh文件夹
里面的id_rsa.pub是公匙,记事本打开复制全部内容。然后去github上settings SSH模块 New SSH key, Title随便写,Key里面粘贴公匙即可。

在push和pull简写方式

git remote add origin git@github.com:neverthe/test2.git
(相当于定义了一个变量origin(变量名称自己随意起)等于git@github.com:neverthe/test2.git)

git push origin master

git push origin -u master
(当我们在push时,加上-u参数,那么在下一次push时,我们只需要写上git push就能上传我们的代码。)
(加上-u之后,git会把当前分支与远程的指定的分支进行关联。)