git在项目中的使用二
需求:一个功能只开发一半,突然线上有bug需要修复
开发过的功能肯定不会要删除,同时也不会上线
这时需要进行快照
git stash 进行快照
这是可以进行在线上进行修复bug然后进行commit -m 'bug已经修复'
然后在回到之前开发功能的位置,要进行一下的操作
git add . 将修改后的文件给添加到暂存区
git stash pop 回到快照时的位置
git stash pop list 查看快照的记录
git stash drop 加上记录中的key值

pop相当于drop加上apply的效果
在pop的过程中先做了某件事,在进行了drop
apply是不删除stash中的记录,而是做了某事,然后在drop后才删除记录
在自己的任务没有做完,会用这个命令
关于这一块的知识详情见视频G:\十七期视频和文件\自动化运维\day111视频和笔记\03git创业之快照与分支(12:40的时间左右)
注意:不能再master分支上直接的修改,可以在创建一个分支
git checkout -b 分支的名字 就是先创建直接切换
在进行add和commit提交
在切换到master上并没有改变,进行的操作就是要进行将上边的分支进行和master分支进行合并
git merge 分支的名字 在master上边进行操作这个命令,进行合并
这时bug分支已经没有用了,但是还存在,这时要给他进行删除
git branch -d 要删除的分支的命令
注意二:
不同的分支修改了同一个地方,进行的合并会出现报错

然后在文件中会出现下图的情况

这是时候git就解决不了了,然后需要人为的进行解决,进行观察,删除不需要的那一项,然后在进行add commit的操作进行提交
在stash中也会出现冲突
在一个分支上文件中的某一处进行了修改,然后快照,还在原来快照的地方进行修改,当你进行在一次git stash pop的时候就会出现错误,这种错误就是发生冲突 和上边的分支出现的冲突一样,都是在同一个地方进行代码的修改就会出现这种错误,这是还是要手动的操作,进行删除不需要的代码,保留有效的代码

在使用下载github上边的代码进行操作(默认的只有master分支)
1.在使用git clone 网址
2.首先cd到这个文件夹下
3.进行查看分支git branch
4.这个时候只有一个master一个分支
5.在创建一个dev分支使用git checkout -b dev origin/dev这样就能将github上的其他分支也给拉下来(注意这个dev的名字需要和线上的你需要的分支的名字要一致)
当在一个分支中进行开发
开发完以后并没有给master合并(可能原因就是还没有开发完成,现在还不需要进行合并,在这个时候进行上传不需要再讲master上传,因为没有进行master的修改,这种情况的原因可能就是,在家没有开发完,还要去另一个地方开发,所以只需要将你在的这个从分支的这个分支进行push到远端仓库中)这时候执行的命令就是git push origin dev(从分支的名字)
当在换个地方进行开发的时候,只把这个开发的分支进行pull下来在进行开发就好了
git pull origin dev 这就是将之前的另一个地方开发的分支进行拉下来
情景再现
例子:
比如在公司开发了一段代码,但是由于有事走了,这会在代码也进行了add和commit提交到了本地的仓库,但是没有进行推送到github仓库,然后办完事直接就回家了,但是还想在继续开发,当在这时pull下来的代码并不是之前在公司开发的代码,然后没办法只能接着之前最后一次提交的代码进行继续开发,然后有开发了一部分,进行了提交到本地的仓库,也进行了push到了github,
然后又将昨天在公司开发的代码,没有提交到github,进行提交,这时候是提交不了的,这时候报出一个错误如图

然后拉取下来以后又出现了一个错误

这个时候还是需要进行手动的解决,筛选有效的代码,然后删除不需要的代码
然后在进行add和commit提交,
然后在进行push到github仓库 命令是 git push origin dev
在多人同时开发的时候
更会出现上边的情况
这时候需要公司规定
1.没个人都用自己的分支,在自己的分支上提交
2.合并分支的时候都要在(如果发生了代码的冲突,你就与这个发生冲突分支的码农进行商量,看看用谁的代码)
3.完成一个小功能的时候需要代码合并一次(一般在2-3天左右,主要看公司的规定)
4.一般是组长来合并代码的
5.review(对于新手来说要检查代码)一般检查的就是代码逻辑
1.一般是组长来
2.或是带你的人来检查代码
6. 如何使用review
就是自己在自己的分支上进行开发,然后有一个review分支,把所有的代码合并到review上后,在进行做review的工作
变基(rebase就是将提交的记录变成一条直线)

这就得用到变基的操作
git rebase首先先执行以下这个命令
然后在本地创建一个文件,push上去以后,然后在另一个地方进行创建文件,然后在将这次的操作进行push上去后,在去本地查看的仓库中右击鼠标进行点击Git GUI Here进行查看上边图的样式发现,在不同的地方进行查看的样式是一条直线如图:

给别人贡献代码
1.先fork,这样试讲别人的代码弄到自己的远程的仓库,这时可以在本人的远程仓库进行修改
2.new pull requst
3.等待确认
标签的使用(tag)
一般在一个项目开发完成,或者是在一个关键的地方打一个tag
git tag 查看标签
git tag -a 要以什么命名的版本名字 -m "当前版本的信息与commit 中的-m是一样的"
git tag -d 版本的名字 这是一个删除(本地的)标签的命令
还可以在某一个地方进行打一个标签(这是根据md5值进行打标签)
git tag -a md5值
当这个时候进行打标签将会进入一个文件中,然后可以写入进行对tag的描述,或者一个明显的标记
以上是在电脑的本地进行打标签,然后远程的仓库中还没有这些创建的标签
接下来就是将这些文件给推到远程的仓库中
git push origin --tags 这是推送本地的所有标签(tag)
删除远程的标签
git push origin :refs/tags/要删除远程标签(tag)的名字
对这个指令的解释:其实并不是进行真正的删除,看到的是删除的效果,(只是将本地的这个标签给删除了)这样就将一个空的标签(要删除远程标签)的推送到远程仓库,这样就有一个删除的效果,远程仓库这样也不会显示
(忽略文件)进行对不想上传远程仓库的文件的处理(详情查看文章中的版本控制git之四-忽略特殊文件 )
比如说:创建一个文件(f.py),这个文件中是一个重要的信息,这时在创建一个文件(vi .gitignore)这个文件中写入f.py这个文件


然后在另一个地方拉取下来之后,进行查看这个这个文件(用ll指令查看)不存在这个f.py文件
如果在这里进行touch f.py这个文件
然后在进行git status同样也是没有这个文件



有了这个.gitignore这个文件就不用再上传这个f.py的这个文件
github同样也提供了一个比较人性化一点

继续下边的点击

打开后再看(如果不想去在github中配置出默认的,gitgnore的这个文件,也可以找一个这样的文件进行复制,
写入到本地仓库的这个.gitgnore的这个文件中,然后在加入不想上传的文件名字或者一些重要的信息)

进行下一步的创建选择配置这样就会有一个默认生成.gitignore的的文件

接着上边的图

继续这个配置的文件的删除


在操作下边的步骤就可以进行完成.gitignore的这个文件

关于快照的命令
git stash 将当前的内容做快照,并回到最后一个提交的位置
git stash list 查看快照的列表
git stash pop 回到快照的地方
git stash drop 删除快照
git stash apply 回到快照
关于分支的命令
git branch 查看分支的列表
git branch name 创建分支
git checkout name 切换分支
git checkout -b name 切换并且创建分支
git branch -d name 删除分支
git merge name 在合并到的分支进行合并,可以任意的合并,想合并到那,就在哪个分支上执行这一条命令
关于远程仓库命令
git clone 默认master分支
git checkout -b 这是要clone下来指定的分支名字 origin/dev
git push origin dev 指定分支推到远程仓库
下边的这条命令的前提是,原先在这台电脑上边进行工作过,不需要再次的clone的操作的时候可以进行的使用
git pull origin dev 下拉指定的分支
关于标签的命令
一般在一个项目开发完成,或者是在一个关键的地方打一个tag
git tag 查看存在的所有标签
git tag -a 要以什么命名的版本名字 -m "当前版本的信息与commit 中的-m是一样的"
git tag -d 版本的名字 这是一个删除(本地的)标签的命令
git push origin --tags 上传本地到远程仓库的所有的标签
git push origin :refs/tag/标签版本的名字
还可以在某一个地方进行打一个标签(这是根据md5值进行打标签)
git tag -a md5值
当这个时候进行打标签将会进入一个文件中,然后可以写入进行对tag的描述,或者一个明显的标记
以上是在电脑的本地进行打标签,然后远程的仓库中还没有这些创建的标签
接下来就是将这些文件给推到远程的仓库中
注意在github上边的星越多这个项目越受欢迎
git官网上提供的代码
echo "# vod" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/lbw1234567/vod.git
git push -u origin master

浙公网安备 33010602011771号