赞
踩
对Git常用的知识做了个汇总,言简意赅,思维导图如下
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
去中心化
分支
Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。
如果你是一个具有使用 SVN 背景的人,你需要做一定的思想转换,来适应 Git 提供的一些概念和特征。
Git 与 SVN 区别点:
1、Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。
2、Git 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。
3、Git 分支和 SVN 的分支不同:分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。
4、Git 没有一个全局的版本号,而 SVN 有:目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。
5、Git 的内容完整性要优于 SVN:Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
下载地址:
下载完成之后:安装查看历史博客。
账号邮箱的配置
Git bash here git config --list git config --global user.name "xxx" git config --global user.email "xxx@qq.com"
设置完账号密码后,C:\Users\Administrator.gitconfig有对应的账号密码
各命令使用场景
1、Git文件状态及工作区域
git的文件状态是其git核心内容,了解后对后续的操作有莫大的帮助,不同的文件状态又存储在不同的工作区域中。 1.文件状态 git中的文件有以下几种状态 未跟踪(untrack):表示文件为新增加的 已修改(modified):表示修改了文件,但还没保存到git仓库中。 已暂存(staged):表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中 已提交(committed):表示文件已保存在git仓库中。 2.工作区域 按照本地计算机与远程计算机划分,工作区域有以下几种 1)本地计算机 Working Directory(工作目录):即正在编辑的文件状态。文件状态为未跟踪(untrack)和已修改(modified)在此区域内。 Staging Area(暂存区):保存了下次将提交的文件列表信息。文件状态为已暂存(staged)在此区域内。 Repository(本地仓库):提交到本地仓库的文件。 2)远程计算机 Repository(远程仓库):已提交到远程计算机内的文件。
2、常用命令
git clone :将远程仓库clone到本地计算机。 git status :展示工作区及暂存区域中不同状态的文件。 git add :将内容从工作目录添加到暂存区。 git commit :所有通过 git add 暂存的文件提交到本地仓库。 git push :将本地仓库的记录提交到远程仓库。 git reset HEAD <file> :从暂存区移除指定文件。 git checkout -- <file> :从本地仓库恢复指定文件。 git pull :拉取远程仓库的数据。 git init
3、命令实操
从github现有仓库(远程)克隆出新的仓库(本地)
## 此处url改为自己仓库的地址 git clone https://github.com/lixiao12/test1.git ## 克隆下来的项目改名字 git clone https://github.com/lixiao12/test1.git mytest1 2.查看初始状态 Git status 3.添加一个文件 Git status 4.新创建的文件添加到“暂存区” git add . git add add.txt 5.“暂存区”的内容提交到“本地仓库” git commit -am "被修改的文件,跳过暂存区直接放入本地仓库注释说明" 6.“本地仓库”的内容提交到“远程仓库” git push
工作目录中初始化新的仓库(本地),然后再与一个Github上的仓库(远程)关联
1、取得项目的Git仓库(在工作目录中初始化新的仓库) git init git status 2、在Github上创建一个空的目录 3、将本地仓库的当前分支与远程仓库相关联 git remote add origin https://github.com/lixiao12/test2.git 4、搭建环境(新增文件、文件夹到本地仓库) git add. git commit -am '描述信息' 5、将本地代码库的某一分支(eg:master)推送到远程的代码库(注意:本地代码库一定不能是空的) git push -u origin master
组长搭建环境上传Github,组员下载项目开发完整流程
1、张三(组长)搭建ssm环境,然后上传github git init git remote add origin https://github.com/lixiao12/crm_ssm.git 搭建ssm环境 git status git add . git commit -am '上传描述信息' git push -u origin master 2、李四(组员)从github上拉取ssm环境,进行项目开发 git clone https://github.com/lixiao12/crm_ssm.git lisi 3、李四开发更新了文件 git status git add . git commit -am '李四commit文件描述' git push 4、张三更新本地仓库,拿到当前项目最新代码 git pull
Git冲突
1、张三更新文件A推送github git add . git commit -am 'zhangsan commit' git push 2、李四更新文件A推送Github git add . git commit -am 'zhangsan commit' git push 出现错误 ! [rejected] master -> master (fetch first) error: failed to push some refs to 'https://github.com/lixiao12/crm_ssm.git' hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (e.g., 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. 3、解决冲突 git pull 打开冲突文件A,解决冲突 git add . git commit -am 'zhangsan commit' git push
Git Gui的使用
参考历史博客......
ssh key 介绍
我理解的就是每台电脑上会产生出一个ssh key,然后自己有一个远程账户,但是自己有可能有很多台电脑,包括家里的电脑还有公司的电脑,我们可以在任意一台电脑上工作,但是如果想要每台电脑都和远程版本库时刻保持着通讯, 就需要将每台电脑的ssh key添加到远程账户,添加到远程版本库之后,远程版本库就会和已经添加的电脑进行通讯而不会和其他电脑进行通讯 建议:所有的Git操作都通过ssh key进行,因为简单
ssh key 使用
第一步:本地电脑配置
1、配置github账号及邮箱(这个上面已经配置过,可跳过) git config --list #查看是否配置远程账号 2、检查下自己之前有没有已经生成ssh cd ~/.ssh ls 错误: bash: cd: /c/Users/Administrator/.ssh: No such file or directory 当没有生成过ssh时,执行cd ~/.ssh命令会报上面错误; 3.生成(或删除)秘钥 ssh-keygen -t rsa -C "2949424758@qq.com"//这里的邮箱要换成自己注册时的邮箱 接着按3个回车即可。 4.执行命令完成后,默认会在window的C:\Users\Administrator\.ssh下面生成如下两个名称的文件: C:\Users\Administrator\.ssh id_rsa(私钥,不能泄露出去) id_rsa.pub(公钥) known_hosts(不用管)
第二步:远程github仓库配置
1.登陆到自己的gitbub,点击右上角的倒立小三角形。选择 settings 2.选择SSH and GPG keys 3.点击右边的New SSH key 4.随意填入一个title,然后 key 中粘贴刚才复制的id_rsa.pub文本,点击 Add key 这样就大功告成 5.github官网有时候会要你输入登陆密码才能添加ssh key。输入密码即可
第三步:修改你本地的ssh remote url. 不用https协议,改用git 协议
1.git remote -v 查看你当前的remote url $ git remote -v ## 如果显示如下内容,则表示Git仓库是使用https协议进行访问的。 origin https://github.com/lixiao12/crm_ssm.git (fetch) origin https://github.com/lixiao12/crm_ssm.git (push) 2.使用浏览器登陆github,找到仓库ssh协议相应的url。类似如下: git@github.com:lixiao12/crm_ssm.git 3.使用 git remote set-url 来调整你的url。 git remote set-url origin git@github.com:lixiao12/crm_ssm.git 4.最后再用 git remote -v 查看一下。协议已改变
第四步:测试SSH连接
1.输入测试命令 ssh -T git@github.com 如果显示如下内容,表示ssh key添加成功: $ ssh -T git@github.com The authenticity of host 'github.com (52.74.223.119)' can't be established. RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'github.com,52.74.223.119' (RSA) to the list of known hosts. Hi lixiao12! You've successfully authenticated, but GitHub does not provide shell access.
小结:https 和 SSH 的区别
1.前者可以随意克隆github上的项目,而不管是谁的;而后者则是你必须是你要克隆的项目的拥有者或管理员,需要先添加 SSH key ,否则无法克隆。 2.https url 在push的时候是需要验证用户名和密码的;而 SSH 在push的时候,是不需要输入用户名的;如果配置SSH key的时候设置了密码,则需要输入密码的,否则直接是不需要输入密码的。
idea中配置Git
1.设置git.exe的安装路径 点击菜单“File->Settings->Version Control->Git”,设置Path to Git executable的值为:D:\tools\Git\bin\git.exe, 2.设置Github帐号 点击菜单“Settings->Version Control->Github” 下面两种方式选择一种即可 注1:认证方式选择密码,即Auth Type:“Password”,然后输入帐号/密码,再测试是否连接成功 注2:认证方式选择令牌 在这个网址:https://github.com/settings/tokens/new 生成token令牌
idea中使用Git
1.创建本地仓库 VCS-->Import into Version Control-->Create Git Repository... 2.在本地仓库搭建项目环境 3.将更新的代码提交到本地库 项目右键Git--> Commit Directory 4.上传项目到GitHub中 VCS-->Import into Version Control-->Share Project on GitHub,在弹框中输入仓库名和描述,点击Share,即可是上传,
idea中Git冲突
1、先将github上的工程clone下来 VCS-->Checkout from Version Control-->Git 克隆后的工作目录,咱们当做是李四的工作目录,之前被克隆的是张三推送到github上的 2、李四修改文件A推送到github 这一步操作没有任何问题 3、张三修改文件A推送到github 发送推送失败 我们需要先merge 然后push就ok(Git-->Repository-->Push)
分支用途
查看简介...
分支命令
分支相关命令 1.查看分支,此命令会列出所有分支,当前分支前面会标一个*号 git branch //查看本地分支 git branch -a //查看远程分支 2.创建分支 git branch name //仅仅保存本地,远程还需要push git push <远程仓库名> <远程分支名> 3.切换分支 git checkout name 4.创建+切换分支 git checkout -b name 5.合并某分支到当前分支 git merge name 注意:当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。 使用用git log --graph命令可以看到分支合并图。 6.删除分支(分本地和远程) git branch //查看本地分支 git branch -d name //删除本地分支 git branch -a //查看远程分支 git push origin --delete dev //删除远程分支
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。