git的概念和作用就不多介绍了,直接看下面的教程吧
安装极其简单,下载好exe文件直接运行就好了。
附上下载页面:win版git官网下载。
使用前需要配置好什么东西呢?以及如何配置?
1.身份配置。通常请况下,使用git需要一个身份的配置,用来标记此次代码提交时谁提交的,到时候出问题好找到这个算账。
git config --global user.name "姓名"
git config --global user.email 邮箱
2.文本编辑器设置。git给你设置自己熟悉的文本编辑器的功能,比如vi,vim,其他可支持的都可以。一般很少用到这个,git使用的是系统默认的编辑器vim。
git config --global core.editor 文本编辑器名
3.查看你的git配置。如果你想查看你git的配置详情,可以用下面的命令查看。
git config --list
有两种下载方式方式,一种是是git clone ssh,一种是git clone https。区别就是连接远程仓库的方式不一样,一般而言https容易点。但是它们两个如果不配置,都绕不过每次push都要输入账号密码。本文针对ssh方式进行操作。
1.先配置sshkey。其目的是为了解决每次push需要账号密码的操作。
参考这里:点击进入
2.创建一个文件夹。这个文件夹用来存你克隆的项目
3.在这个文件夹,右键,选择git bash here。在这个文件夹中开启git bash,相当于在git bash中进入这个文件夹。
4.最后,git clone 项目地址,进行克隆。去你的远程仓库中,复制ssh克隆地址,以git开头的url。
git clone git@xxx/xxx/x/xxx.git
如果需要拉取执行分支的代码,执行如下命令:
git clone -b 分支名称 git@xxx/xxx/x/xxx.git
提前告知,有助于不走弯路,否则就得重复操作,一步到位,是最高追求。
注意事项:
1.无论何种场景,除了空仓库,一定要先将远程的项目克隆下来,修改克隆下来的项目。
2.在提交前查看下远程仓库是否存在文件,比如README.md,在此前需要先把它pull下来,在提交
3.提交单个项目,或者将多个项目提交到同一个仓库中做法不一致,关键是在本地自建的仓库文件夹中,可以将多个项目文件夹放进去一起提交
4.git中不允许出现子文件夹中还存在.git文件,要把子项目中的.git文件夹删除。
5.gitLab和github关于分支似乎不太一样,特别是在git push阶段,个人真实体验,gitlab用git push
就能成功,但是github操作就会要git push origin master
,这里希望大佬告知一下。
在主分支上使用git操作很方便,但仅适用于个人开发,或者几人开发。人数一多,容易产生冲突,而且一旦一人误操作可能导致主分支的项目代码丢失和破坏。如果可以,尽可能使用分支开发后在合并到主分支上。
单人开发无需考虑冲突
场景一:新电脑,新安装git,刚建立远程新仓库,准备将本地项目上传到远程的新建仓库,属于第一次提交项目到刚创建的仓库。
# 在项目文件夹的根目录打开git bash/使用idea都可以
# 第一次提交新仓库,必须git init,表示启用git管理仓库,建立本地与远程的交互
git init
# 关联远程仓库地址
git remote add origin [远程仓库地址]
# 可以随时在每一步之后,查看当前git的状态,会提示下一步该怎么操作
git status
# 将项目所有文件/或单个文件添加到暂存区,git将对add的后的代码进行追踪
git add ./文件名
# 这一步负责将add后的文件提交到本地仓库,注意commit前,必须add
git commit -m "提交此次git的说明,一般做功能性描述"
# 最后提交本地仓库的代码根据ignore文件,提交项目代码或文件到远程仓库
git push origin master
场景二:新电脑,新安装git,已有远程仓库,准备将本地项目上传到远程仓库的已有其他项目文件的情况,属于第一次提交项目到现有的远程仓库。
# 首先克隆远程仓库的项目到一个新的文件夹
git clone 远程仓库地址
# 然后在项目文件夹的根目录打开git bash/使用idea都可以
# 关联远程仓库地址
git remote add origin [远程仓库地址]
# 将远程的仓库的文件下载到本地仓库
# 如果远程仓库有readme文件,先将readme文件pull下来,否则就会造成提交不成功。
git pull --rebase origin master
# 编辑项目
将你的项目复制到克隆下来项目文件夹中的指定位置
# 可以随时在每一步之后,查看当前git的状态,会提示下一步该怎么操作
git status
# 将项目所有文件/或单个文件添加到暂存区,git将对add的后的代码进行追踪
git add ./文件名
# 这一步负责将add后的文件提交到本地仓库,注意commit前,必须add
git commit -m "提交此次git的说明,一般做功能性描述"
# 最后提交本地仓库的代码根据ignore文件,提交项目代码或文件到远程仓库
git push origin master
场景三:老电脑,已经安装git,已有远程仓库,准备将本地项目上传到远程仓库的已有其他项目文件的情况,属于第一次提交项目到现有的远程仓库。
# 首先根据上述步骤克隆好项目,并增加修改好代码
git clone 远程仓库地址
# 首先要先确定前面是否已经存在仓库
git remote -v
# 如果跟当前的项目远程仓库地址不一致,删除绑定的仓库,注意是否是origin还得看上一步是否显示的是origin,这里有可能被修改
git remote rm origin
# 再关联远程仓库地址
git remote add origin [远程仓库地址]
# 然后在项目文件夹的根目录打开git bash/使用idea都可以
# 将所有的项目文件文件git跟踪目标中,这里可以指定文件名,添加单个文件
git add .
# 可以随时在每一步之后,查看当前git的状态
git status
# 这一步负责将add后的文件提交到远程仓库,注意commit前,必须add
git commit -m "提交此次git的说明,一般做功能性描述"
# 最后提交本地仓库的代码根据ignore文件,提交项目代码或文件到远程仓库
git push origin master
场景四:普通提交,不需要配置和考虑其他东西
# 在该项目的文件根目录上打开git bash
git add .
git commit -m "此次提交的功能性描述"
git push origin master
多人开发,如果都在master主分支上开发,容易产生冲突。冲突是指,提交的版本中,git发现上一个和你提交的项目中,存在同时修改同一行代码的情况,这种情况就需要解决冲突,也就是合并你们冲突的文件,通常git已经将代码拉到对应的文件中了,需要你手动解决。
场景五:通过前面的四个场景,度过git的第一次提交后,后面会遇到多人开发中,提交自己修改和增加的代码后,可能会造成冲突。这就需要用下面的git命令操作
# 首先你的远程仓库已经有项目存在了
git add .
git comment -m "功能性描述"
# rebase可以线性的看到每一次提交,并且没有增加提交节点。
git pull --rebase
# 如果有冲突,会中断操作,git status查看冲突状况
git status
# 找到冲突的文件,将别人的代码保留,删除冲突节点标志
# 解决完冲突后,继续rebase操作
git rebase --continue
# 最后git push上去
git push origin master
顾名思义,分支就是从主线上分离出来进行另外的操作,而又不影响主线,主线上可以接受他人的提交。最后分支做完事后合并到主线上而分支的任务完成可以删掉了。主线继续做它的事,分支用来解决临时需求,二者互不相干。
自建分支开发,是标准推荐的git版本控制开发流程。部门中每个开发人员在主分支下,构建自己的分支,开发完后,将自己的代码合并到主分支上。
场景六:创建自己的分支,并将自己分支上的代码合并到主分支上
# 第一步:将远程仓库的项目克隆master分支到本地
git clone 远程项目地址
# 第二步:创建一个本地分支
git branch dev
# 第三步:查看当前分支列表
git branch
# 第四步:切换到本地新建的dev分支
git checkout dev
# 第五步:确认是否切换到dev分支,分支前面带*号,且高亮
git branch
# 第六步:开始在自己的分支上做开发,开发完成后
# 第七步:将本地dev上的项目执行add操作
git add -A
# 第八步:commit到本地仓库并描述
git comment -m "功能性描述"
# 第九步:查看当前状态
git status
# 第十步:切换到本地的master分支,拉取远程仓库中最新的代码
git checkout master
git pull origin master
# 第十一步:在切换到本地dev,并以master分支为基线合并代码
git checkout dev
git rebase master
# 第十二步:如果rebase发生冲突,解决冲突后,没有冲突直接执行第十三步
git add -A
git commit -m "功能性描述"
git rebase --continue
# 第十三步:切换到master分支并合并代码
git checkout master
git merge dev
# 第十四步:同步到远程的master分支
git push origin master
# 第十五步 极其重要!!!之前给自己埋了一个雷,就是在master提交完代码不及时切回分支,导致出现场景七的情况
git checkout dev
ok,上面就是六个场景下的git操作,可能实际情况中会遇到不同的问题,这时候就依赖度娘了。因此,如果小白不熟悉的git的操作流程的情况下,操作之前先备份一下自己修改后的项目,以便恢复,这是许多小白熬出来的经验教训。
当然,小伙伴们如果遇到其他场景下的git使用,有问题可以留言,我尽量解答,如果我的git操作流程出现不对的地方,尽管批评,我会立即改正,尽量不误导大伙。
场景七:由于自己的误操作,不遵循正常提交流程,造成your branch is ahead of ‘origin master’ by x commit,此种情况一般出于在本地主分支上add和commit之前没有先去拉取远程代码。下面的解决方案不一定适合你,仅供参考
# 先判断下自己的真实情况,由于本人的情况是自己在本地分支上开发,但add和commit时未切换分支,注意,在主分支add和commit之前,我的主和支都是最新的。该种情况操作流程如下:
# 先checkout到分支
git checkout dev
# 重新提交add和commit一遍
git add .
git commit -m "描述"
#在切换到主分支,拉取最新的代码
git checkout master
git pull
# 这个时候git在拉取时通过对比你本地的主分支就会发现你的本地的主分支有过提交记录,但是你又没在提交之前拉取远程代码,因此就会出现ahead of提示。
# 通过百度,建议用reset回退,但这里建议慎重使用,获取在reset之前,复制一份自己的项目,因为如果你没有像我在分支上有过提交的话,就有可能造成你后面的代码丢失,以防万一,先备份。继续操作
# 通过reset操作回退对应的ahead of提示的几个commit
git reset --hard HEAD~x(x为git提示你超前了几个commit)
# 回退之后,在拉取合并
git pull --rebase
# 一般这个时候已经解决了在你本地主分支提示ahead of的问题
# 接下来就按照主分支和dev分支合并并提交的正常流程走一遍即可
git 操作须谨慎,否则最严重的后果就是代码消失找不回,但也别担心,git有历史版本的记录,可以找回,但某些情况就可能找不回了,目前本人没遇到的情况就不多说,避免带人入坑!!!
场景八:在git pull --rebase(master情况下拉取代码的操作)之前如果你没有add和commit,就会出现cannot pull with rebase :You have unstaged changes的问题
# 先按正常的git add和git commit后rebase即可
# 先git add,根据具体情况选择
git add 的几种参数区别
git add -A 保存所有的修改
git add . 保存新的添加和修改,但是不包括删除
git add -u 保存修改和删除,但是不包括新建文件
git commit -m "描述"
git pull --rebase