Git 相关

一 Git 是什么及流程 

Git是目前世界上最先进的分布式版本控制系统。

Workspace:工作区
Index / Stage:暂存区
Repository:仓库区(或本地仓库)
Remote:远程仓库

二:SVNGit的最主要的区别?

SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。

Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

三:基本操作

 1:创建版本库。

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

通过命令 git init 把这某个个目录变成git可以管理的仓库。目录下会多一个.git的目录,这个目录是Git来跟踪管理版本的,没事千万不要手动乱改这个目录里面的文件,否则,会把git仓库给破坏了。【只能跟踪文本文件的改动,比如txt文件,网页,所有程序的代码等图片,视频这些二进制文件,虽能也能由版本控制系统管理,但没法跟踪文件的变化】

git add readme.txt将文件添加到暂存区里面去
git commit -m"提交记录说明" 告诉Git,把文件提交到仓库
git status可以查看是否还有文件未提交
git diff readme.txt查看某文件改了什么内容

   2:版本回退

 git log查看下历史记录(最近到最远的显示日志)
 git log –pretty=oneline避免日志显示太繁杂
git reset --hard HEAD^回退到上个版本
git reset --hard HEAD~100回退到前100个版本
git reflog获取到版本号
git reset --hard 版本号回退到指定版本

 3 工作区与暂存区

工作区就是在电脑上看到的目录,工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。其中版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD。

Git提交文件到版本库有两步:

第一步:是使用 git add 把文件添加进去,实际上就是把文件添加到暂存区。

第二步:使用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支上。

4 Git撤销修改和删除文件操作

撤销修改:

第一:如果我知道要删掉那些内容的话,直接手动更改去掉那些需要的文件,然后add添加到暂存区,最后commit掉。

第二:我可以按以前的方法直接恢复到上一个版本。使用 git reset --hard HEAD^

第三:git checkout --readme.txt 工作区做的修改全部撤销。【注意:命令git checkout -- readme.txt 中的 -- 很重要,如果没有 --             的话,那么命令变成创建分支了。】

删除文件:

一般情况下,可以直接在文件目录中把文件删了,或者使用rm命令:rm b.txt ,如果我想彻底从版本库中删掉了此文件的话,可以再执行commit命令提交掉。只要没有commit之前,如果我想在版本库中恢复此文件如何操作呢?【git  checkout -- b.txt】

四 :配置gitlab上的ssh:

SSH(Secure Shell)是一种安全协议,在你的电脑与GitLab服务器进行通信时,GitLab使用SSH密钥(SSH Keys)认证的方式来保证通信安全。创建 SSH密钥,并将密钥中的公钥添加到GitLab,以便我们通过SSH协议来访问Git仓库。 

使用Git Bash: ssh-keygen -t rsa -C "YOUR_EMAIL",然后连续按2次回车。即可生成新的SSH,会看到私钥id_rsa和公钥id_rsa.pub这两个文件,私钥文件id_rsa的信息自己留着就可以了。然后我们将id_rsa.pub公钥信息复制进入Gitlab的Profile Settings.

五:将本地仓库和远程仓库同步

  1 将本地仓库的资源放到远程仓库上

在gitlab上将仓库建好后,在GitHub上的这个仓库还是空的,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,把本地仓库的内容推送到GitHub仓库。此方法是将本地仓库同步,

首先自己与origin master建立连接git remote add origin git@gitlab.com:caoshaojun/caosj_project.git

git push -u origin master(由于新建的GitHub仓库是空的,所以第一次推送master分支时需要加-u参数,以后再推送就不用加了)从现在起,只要本地作了提交,就可以通过命令:git push origin master把本地master分支的最新修改推送到github上了,现在你就拥有了真正的分布式版本库了。

   2  将远程仓库的资源拉取到本地

a 新建文件夹,用gitbash ,基础配置,作为 git 的基础配置,作用是告诉 git 你是谁,你输入的信息将出现在你创建的提交中,使用下面两条命令:

  git config --global user.name "你的名字或昵称"

  git config --global user.email "你的邮箱"

b   git init 

      git remote add origin <你的项目地址> //注:项目地址形式为:https://gitee.com/xxx/xxx.git或者 git@gitee.com:xxx/xxx.git

c   git clone <项目地址>

六 :分支合并相关

理解分支合并的原理:个人觉得此片文章写的非常详细{特别是分支合并的原理理解很有用}【https://git-scm.com/book/zh/v1/Git-%E5%88%86%E6%94%AF%E5%88%86%E6%94%AF%E7%9A%84%E6%96%B0%E5%BB%BA%E4%B8%8E%E5%90%88%E5%B9%B6】,这里总结一下原理,首先要知道git 存储的是快照,就是提交后git保存的是一个个提交对象,指向这些快照的指针就可以看作是一个个分支,快照你就想象成照片,保存了不同时期的状态和东西,但是保存起来很方便,建立的分支就好比在不同的快照基础上往下开发,合并分支就好比把不同的开发东西又合到一起来。分支合并只是一个指针的变化。

相关操作:建立分支$ git checkout -b iss53

相当于 $ git branch iss53【建立分支】        $ git checkout iss53【切换分支到iss53上】,

合并分支:$ git merge hotfix【将hotfix分支合并到当前head的分支上来】 

删除分支:$ git branch -d hotfix 【合并完的分支没有用处了就可以删除了】

合并的原理有两种情况:详见上一点的链接。

七 :冲突解决

1 合并分支的时候,将冲突的文件找出来,冲突的地方会有版本提示,修改完只有一个版本的时候,再提交。

2  希望服务器上版本完全覆盖本地修改,使用如下命令回退并更新 git reset --hard   git pull

3  git pull 出现冲突后丢弃本地冲突文件修改,采用远程文件覆盖本地文件git checkout  [文件路径]
    例:git checkout test/src/main/resources/spring-shiro.xml  

4   git pull 出现冲突后可以暂存本地修改git stash ,然后git pull 更新代码,git stash list 可查看暂存记录列表,释放本地暂存 git stash apply stash@{0} ,出现冲突文件,找到并解决,然后可以提交git add . 加入索引库,然后本地提交git commit -m '注释' 最后git push到远程

     关于冲突的解决还是得到具体项目里去联系才能用的比较熟悉。
 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值