kotlin学习第八天:版本控制系统git

概述

版本控制系统是一种记录若干文件变化,以便将来查阅特定版本修订情况的系统。 版本控制工具的作用:保存工作副本,保留代码更改的历史记录,在需要时返回到工作版本(代码回滚)、分支管理、代码合并。Git是目前世界上最先进的分布式版本控制系统。

创建版本库respository

版本库:可以简单理解成一个目录,这个目录里的所有文件都可以被git管理起来。每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

步骤:

  • 创建一个项目的目录
  • 在目录下执行git init
    $ git init
    Initialized empty Git repository in /Users/michael/learngit/.git/

忽略文件

编译的中间文件比如class这些文件我们不需要上传到git,就可以通过忽略文件来实现。通过在工程目录下执行touch .gitignore生成忽略文件。

忽略的标准:

  1. 忽略操作系统自动生成的文件,比如缩略图等;
  2. 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
  3. 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。

状态命令

查看自从我上次向Git存储库提交更改以来修改了哪些文件可以使用状态命令代码git status。

把文件添加到版本库

添加命令

  • 使用git add
    $ git add Fish.java

  • 一次添加多个git add --all 和git add .
    $ git add --all

添加完之后,可以再次执行git status命令查看状态

提交命令

git commit -m "第一次提交"

注:-m后面的是这一次的提交说明

提交记录查看

git log查看完整提交记录

git --no-pager log不分页打印所有log日志

git log -n查看最近n次提交记录

版本管理

版本回退

  • 当前版本往上回退版本git reset --hard HEAD^
  • 往上回退n个版本git reset --hard HEAD~n
  • 回退到某一个版本:git reset --hard commit id
  • 如果回退之后后悔,想恢复到最新版本
    • 通过git reflog查看每一次记录
    • 回退到指定的commit id

分支管理

创建与删除分支

  • 查看当前分支git branch

  • 创建并切换分支git checkout -b mary
    这个相当于两个命令:
    git branch mary创建mary分支
    git checkout mary切换到mary分支

  • 删除分支git branch -d mary

合并分支

把mary开发的代码合并到master主分支上

  • master主分支执行git merge mary
    mary分支增加了Haha.java
    没有冲突是Fast-forward快进模式

解决冲突

首先张三从zhangsan分支提交了对Pter.java的修改,修改内容如下

class Peter{
    int a = 10;
}

并把修改合并到主分支

mary开发中也对Peter.java进行了修改,修改如下

class Peter{
    String name = "mary";
}

想要把mary分支合并到主分支master,就会出问题

这里就会说明有冲突

解决方案就是修改冲突并再次提交。

远程仓库github

创建远程仓库

  • 首先,登陆GitHub,在右上角找到“newrepository”按钮,创建一个新的仓库
  • 在Repository name填入仓库名,其他保持默认设置

添加远程仓库

目前firstgit仓库还是空的,我们可以从这个仓库克隆出新的仓库,也可以把本地仓库与之关联,然后把本地仓库的内容推送到GitHub仓库。

  • 本地仓库关联远程仓库 git remote add origin SSH
    $ git remote add origin [email protected]:zhangsan12/firstgit.git

推送到远程仓库

  • 推送到远程仓库git push -u origin 分支
    git push -u origin master 把当前分支master推送到远程master分支。-u会把本地master分支和远程master分支关联起来 下一次再提交的话就可以简便 git push origin master

推送分支

推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:

$ git push origin master

如果要推送其他分支,比如dev,就改成:

$ git push origin dev

SSH警告

第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告:

The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?

原因:需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。

小结

关联远程库:git remote add origin git@server-name:path/repo-name.git

第一次推送master分支:git push -u origin master

后面推送最新修改:git push origin master

从远程库克隆

  • 项目找到clone or download按钮,选择地址

  • 使用命令git clone克隆一个本地库

  • 克隆其他分支

    • 查看远程分支git branch -a
    • 切换分支git checkout 分支

小结

要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。

Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。

多人协作

  • 查看远程库的信息git remote:

    $ git remote
    origin

idea使用git

从git仓库克隆项目

把已有项目提交到git上

  • 打开setting-Version Control-Git添加git路径
    C:\Program Files\Git\bin\git.exe
    注:bin和cmd下都有,没有的话把JDK升级成1.8的
  • 添加忽略文件setting-Version Control-Ignored Files
  • 打开git版本控制引擎VCS-Enable Version Control
  • 右键工程git-add
  • 右键工程git-commit directory或者VCS-commit
  • 提交有commit和commit and push,如果是commit还需要右键git-Repository-Push
    ssh://zhangsan@localhost:29418/firstgit.git

提交项目到github上

  • Setting-Version Control-Github 输入github用户名和密码
  • 添加忽略文件
  • 打开git版本控制引擎VCS-Enable Version Control
  • 右键工程git-add
  • 右键工程git-commit directory或者VCS-commit
  • 提交有commit和commit and push,如果是commit,还需要右键git-Repository-Push
    注意:提交如果是用ssh路径,需要添加ssk。

你可能感兴趣的:(kotlin学习第八天:版本控制系统git)