目录
1、创建不了点开头的文件可以使用命令 touch ~/.bashrc
创建测试
1、创建文件:touch file01.txt
2、将文件存入暂存区:git add .(添加所有文件) git add file01.txt (添加某个文件到暂存区)
3、查看状态:git status (如果文件变为绿色,则表示已经存到了暂存区)。暂存区是提交到仓库之前的一个缓存区域
4、将文件放到仓库里面生成一个个版本,将当前修改提交到仓库:git commit -m "add file01" 双引号里面写什么无所谓只是一个标记方便会头查看
5、提交后查看状态:git status 不会有任何显示
6、git log 可以查看文件提交到哪里了
7、可以用vi编辑器来修改文件: vi file01.txt --> esc--> wq
8、此时修改后的文件还在工作区,查看git status 文件成为红色的了。现在只需要继续add 和commit指令
9、回退版本 :git reset --hard commitid
默认选中就复制完成了,按下鼠标滚轮键粘贴。。可以前进也可以后退:git reflog 这个命令把所有操作都记录下来了,所以即使不知道commitid号码也可以从这里查看
分支
我改我的部分,你改你的部分每个人互不干扰。分成几条线进行开发,改完把代码放到一起叫合并
1、查看有哪些分支: git branch / git-log(推荐 )
2、新创建一个分支:git branch dev01(分支名)
3、2aaa1b0 (HEAD -> master, dev01) updata file01 HEAD指向谁谁就是当前分支 表示工作区只能未唯一的分支服务,在工作区(除.git文件夹外的内容)看到的内容就是当前分支
4、切换分支:git checkout dev01 两个分支是相互独立的,操作互补影响
5、创建并且切换到到某个分支:git checkout -b dev02
合并分支:两个不同的人在不同的分支上开发,一个人在master分支里面提交了gitignore另一个人在dev01分支里面创建了file02.txt文件。此时master分支上看不到file02.txt文件。dev01分支上看不到gitignore文件。假如我们要开发两个不同的功能,这两个功能最终要放到一个文件上此时就需要合并分支。一般是把其他分支合并到master分支上面
6、合并第一步:切换到master分支上 。合并第二步输入命令进行合并:git merge dev01。第三步输入git-log查看效果。合并完成之后master分支上就会有dev01分支上的东西
7、删除分支:git branch -d dev01
某个分支的内容没有merge到master上。若进行删除操作,git会认为你是误操作。需要用git branch -D dev01进行删除
冲突
两个人都开发,如果两个人改了同一个文件的同一行文字/代码。这个时候就会有冲突,git也不知道用谁的,所以需要自己解决
解决办法:删除不需要的内容,修改内容为自己需要的。修改完成之后git add . ----->git commit -m "xxx"
分支使用原则
master (生产) 分支 线上分支,主分支,中小规模项目作为线上运行的应用对应的分支; 其他分支上的代码是不能上线的
develop(开发)分支 是从master创建的分支,一般作为开发部门的主要开发分支,如果没有其他并行开发不同期上线 要求,都可以在此版本进行开发,阶段开发完成后,需要是合并到master分支,准备上线。开发新功能都是在这个分支上的,所有开发的代码都应该提交到develop分支上面,不直接在上面开发
feature/xxxx分支 从develop创建的分支,一般是同期并行开发,但不同期上线时创建的分支,分支上的研发任务完 成后合并到develop分支。
hotfix/xxxx分支, 从master派生的分支,一般作为线上bug修复使用,修复完成后需要合并到master、test、 develop分支。
还有一些其’他分支,在此不再详述,例如test分支(用于代码测试)、pre分支(预上线分支)等
git远程仓库:gitee
1、创建仓库: +--->新建仓库---->私有/公有 之后不需要任何选择,直接点击创建
2、创建完成之后,把我们的代码推上来:
验证方案:
-
gitee的用户名和密码
-
公钥对:
生成SSH公钥 :
1、ssh-keygen -t rsa
2、不断回车 如果公钥已经存在,则自动覆盖
Gitee设置账户共公钥 :
获取公钥 :
3、cat ~/.ssh/id_rsa.pub
验证是否配置成功: ssh -T git@gitee.com
3、获取到密钥对 打开 设置----->公钥 将公钥 复制进去 ----->确定--->输入密码 后添加成功
gitbash中输入 ssh -T git@gitee.com 来验证是否配置成功
本地代码同步到远程仓库:push操作
-
1、与已创建的远程仓库建立连接:git remote add origin 仓库路径 (远端名称默认是origin)
2、推送到远程仓库:git push origin master
3、查看远程仓库:git remote
!若出现connect to host gitee.com port 22: Connection timed out fatal: Could not read from remote repository.无法将代码推送到远程仓库。只需要在gitee或者github里复制仓库的时候选择https地址。
步骤:移除之前的仓库连接:git remote rm origin -----> 再次进行仓库连接:git remote add origin https://xxxxxxxxxxxxxxxx
-
克隆
前面是说本地有一个仓库,将本地仓库推送到远程仓库。克隆是指将本地仓库拉取到本地
1、在桌面上打开gitbash 输入克隆指令后边加上地址:git clone https://xxxxxxxxxx
2、操作那个文件夹就在那个文件夹里面打开git bash
克隆操作不会 非常频繁,一般克隆只用一次->克隆仓库到本地,常用的操作是抓取和拉取
抓取拉取
1、抓取指令就是将仓库里的更新都抓取到本地,但是不会进行合并
抓取 命令:git fetch [remote name] [branch name] 抓取指令就是将仓库里的更新都抓取到本地,不会进行合并
如果不指定远端名称和分支名,则抓取所有分支。
2、拉取指令会将远端仓库的修改拉到本地并自动进行合并,等同于fetch+merge
拉取 命令:git pull [remote name] [branch name] 拉取指令就是将远端仓库的修改拉到本地并自动进行合并,等同于fetch+merge
如果不指定远端名称和分支名,则抓取所有并更新当前分支。
3、解决合并冲突:找到有冲突的文件改成自己想要的样子,然后进行add commit操作
思路:大家同时修改同一个文件,有一个人先提交到远程仓库了,另外一个人在本地修改还没来的及提交。他就需要先执行git pull 指令在本地进行合并,这是合并的时候 会有冲突,按照前面发方法解决冲突,解决完成之后在进行push操作