git

基本操作流程

1.windows中

  • 安装git

安装git,下载地址是git官网:https://git-scm.com/点击打开链接

  • 拉取项目的步骤

1、新建文件夹,最好为英文名project(在自己想存项目的目录中)

2、进入文件夹,空白处右键,选择gitbash here,键入git init会生成.git文件(如果没有,或许被隐藏了,无关紧要)

3、配置本地仓库的账号邮箱git(即我们的github或者gitee上的账号和邮件地址)

git config --global user.name "Your Name"

git config --global user.email "email@example.com"

4、为了避免每次远程访问需要输密码,将使用ssh登陆。ssh应该与本机信息绑定。查看自己电脑C:\Users\Administrator 目录下是否有 .ssh 文件夹。如果没有就需要生成。

ssh-keygen -t rsa -C "youremail@example.com"

5、ssh只是本地详细,需要在Github中备份,才能被验证。打开自己的Github,在MyProfile中,点击Add Public Key,title随意。

6、key中的内容在本机C盘中,C:\Users\Administrator,里面有个.ssh文件夹,用文本文档打开id_rsa.pub ,将里面的内容全部复制到key中,即可

7、获取github上的项目,需找到项目地址

$ git clone 项目地址 (此处的项目地址:https://github.com/Rainno/vue-es6-webPack.git点击打开链接

拉取项目成功

 

2.linux安装:

安装git

apt-get install git

安装后进行配置:

配置个人信息(名字与邮箱)
使用Git的第一件事就是设置你的名字和email,这些就是你在提交commit时的签名。(Git是个软件,需要先下载,百度就好了。)

git config --global user.name "Your Name"
git config --global user.email "email@example.com"
查看是否配置成功,用命名git config -l

 


创建SSH Key

输入:  ssh-keygen -t rsa -C 'email@example.com'
后面就一直按回车,不用管,一直等到直接能输入下一个命令为止。
  • 如下图:
    这里写图片描述

配置github上的SSH Key

(1)本地操作:找到上图打红框的路径的文件,右键记事本打开,全选复制

(2)GitHub操作:setting–SSH keys–ok
如下图操作,将复制到的内容复制在里面,最后确定创建。
这里写图片描述

本地操作:查看是否创建成功,输入命令: ssh -T git@github.com
如果现实如下信息,表示已经成功创建。
Hi xiaohuangmeng! You’ve successfully authenticated, but GitHub does not provide shell access.


拉取项目:

新建存放项目的文件夹

初始化:git init

拉取:git pull git@github.com:mcya/webTechnology.git

第一步:查看当前的git仓库状态,可以使用git status。

git status

 

三行红的,说明改了三个文件

第二步:把更新的代码添加到暂存区。

git add *

 

 

第三步:将暂存区的更新提交到仓库区。

git commit -m "更新说明" (更新说明,是本次推送代码的标识,写什么都可以,只要自己看得懂)

 

 

第四步:先git pull,拉取远程仓库所有分支更新并合并到本地。

git pull

 

 

第五步:将本地分支的更新全部推送到远程仓库。

git push origin master

 

 

第六步.再次使用git status查看当前的git仓库状态,已经没有改动,证明更新成功

 

https://www.runoob.com/git/git-basic-operations.html

 

 

查看本地分支和远程分支

1、cd 到工程目录下; 
2、git branch -al 查看本地和远程的所有分支。 

为什么要先commit,然后pull,最后再push?而不是commit然后直接push?

以前总是由于自己的自身的原因,对于每一次的git的操作,我都是通过eclipse或者是idea来进行的,但是

我每一次都不是很清楚的关于这些方面的操作,现在我们来进行关于git bash的操作,正是由于这些操作使

的自己对于git的操作有了一个比较清晰的认知了,首先我们先看一张图:

首先我们必须要先理解这几个概念:暂存区,本地仓库,远程仓库

首先暂存区这个是我们每一次进行代码修改的地方,例如我们ieda的所编译的代码就是缓存区

本地仓库:是我们每一次pull,从远程仓库pull(拉取)到地方,这个地方就是本地仓库 ,他其实就是

远程仓库的一个副本

远程仓库:这个是存放到服务器上的代码,是每一个人认为自己的代码修改好了,就可以集体上传

到一个地方,而你也可以从这个地方下载别人的代码,这个地方就是远程仓库。

我们接下来就来介绍一下使用情况,

Master:主分支

wangjing18-dev:Master分支,这个是存放博主的代码的地方

Stanging:Master分支,这个是我们集体存放测试代码的分支

例如:你有一个项目,你在本地测好了,但是你想放到线上服务器

但是你又不确定没有bug,则这个时候你可以把代码放入到线上的

测试环境上面,这个时候是线上的测试环境,可以让测试人员也可

以访问的到。

然后我们来介绍这个图的意思:

pull:这个是远程仓库拉取数据到本地仓库,就是为了和远程仓库所匹配

commit:当我们想要把自己的代码想要提交到远程的时候,所用的命令行语句,由于我们修改所在的区域在暂存区

我们首先要把自己的代码commit(提交)到本地仓库,然后在从本地仓库push到远程仓库,但是切记住一点,我们如

果每一次在commit的时候,我们都需要先从线上pull最新的代码到本地仓库,然后在把暂存区里面的代码提交到本地

仓库,这个时候如果没有冲突固然是最好的,如果有了冲突,这我需要解决冲突,这个此时本地仓库已经是最新的代码

且又包括暂存区上面的代码了

push:这个就是我们前面把代码提交到了本地,如果我们需要提交到远程服务器上,则需要把代码push到远程的分支里

面,如果有了冲突,再解决就好了

其中merge:如果有两个分支里面的代码在同一个区域中(两个同时隶属于暂存区,或本地仓库,或远程仓库),这个时候

如果我们想要把这个两个分区合并,这个也就是所谓commit,只不过这个不跨区域,此时我们把wangjing18-dev的这

个分支mergeStanging,此时这个mergeStanging就有了wangjing18-dev的代码,然后我们在commit,然后在push,

则这个样子就可以了这个就是git的简单的使用原理

问题分析如下:

现在远程有一个仓库,分支就一个,是master。本地的仓库是从远程的master上clone下来的,再在自己本地改好,再commit → pull → push。

1,那我本地这个也算是个分支?还是就是一个本地仓库?

本地和远程的关系相当于两个分支,你感觉一样是因为你git pull 的时候已经自动给绑定好对应关系了

2,如果我在远程新建了个分支,然后我pull了下来,那我本地到底有分支这个说法吗?我本地的分支是不是就是那个远程新建的分支?

你远程新建了一个分支拉到本地的道理是一样的,属于复制了一份,但是本地分支和远程分支已经是两个东西了

3,本地仓库和本地分支有什么区别?

本地分支属于本地仓库里,是包含关系,一个仓库里可以有很多分支, 如果是 tag 的话可以分离出独立的仓库

4,commit是提交到本地仓库,然后push,这个push是把所有代码推到远程仓库,还是只是把commit的地方推到远程仓库?

肯定不会全量推送到远程的,是通过对比 commit 的记录,如果本地高于远程就直接把多出来的commit 给怼上去,如果本地的这几个 commit 和远程的 commit 有冲突的部分就merge,然后根据提交时间排序再新建一个merge 的 commit 记录再怼上去

5,那为什么要先commit,然后pull,然后再push,我pull了,岂不是把自己改的代码都给覆盖掉了嘛,因为远程没有我改的代码,我pull,岂不是覆盖了我本地的改动好的地方了?那我还怎么push?

这个先 commit 再 pull 再 push 的情况就是为了应对多人合并开发的情况: 

1、commit 是为了告诉 git 我这次提交改了哪些东西,不然你只是改了但是 git 不知道你改了,也就无从判断比较; 

2、pull是为了本地 commit 和远程commit 的对比记录,git 是按照文件的行数操作进行对比的,如果同时操作了某文件的同一行那么就会产生冲突,git 也会把这个冲突给标记出来,这个时候就需要先把和你冲突的那个人拉过来问问保留谁的代码,然后在 git add && git commit && git pull 这三连,再次 pull 一次是为了防止再你们协商的时候另一个人给又提交了一版东西,如果真发生了那流程重复一遍,通常没有冲突的时候就直接给你合并了,不会把你的代码给覆盖掉 

3、出现代码覆盖或者丢失的情况:比如A B两人的代码pull 时候的版本都是1,A在本地提交了2,3并且推送到远程了,B 进行修改的时候没有commit 操作,他先自己写了东西,然后 git pull 这个时候 B 本地版本已经到3了,B 在本地版本3的时候改了 A 写过的代码,再进行了git commit && git push 那么在远程版本中就是4,而且 A 的代码被覆盖了,所以说所有人都要先 commit 再 pull,不然真的会覆盖代码的

6,两个分支,A和B,A合并B和B合并A,有区别吗?

两个互相合并的唯一区别就是 A->B 的时候 B 分支上会产生一个 merge_commit 的信息,这个时候 B 是合并状态而 A 未合并状态,如果现在没有发生任何改动执行 B->A 就直接切换过去了,连 merge_commit 都不会生成了.

 

git 从远程仓库指定分支clone代码到本地

不指定分支

git clone + clone 地址 # 例如 git clone https://amc-msra.visualstudio.com/xxx/_xx/xxxxxx

指定分支

git clone -b + 要clone的分支名 + 仓库地址 # 例如 git clone -b stock-data-spider-dev https://amc-msra.visualstudio.com/xxxx

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值