0


Git常用命令复习笔记

1. Git与SVN区别,各自优缺点

Git:

  1. 分布式,每个参与开发的人的电脑上都有一个完整的仓库,不担心硬盘出问题;
  2. 在不联网的情况下,照样可以提交到本地仓库,可以查看以往的所有log,等到有网的时候,push到远程即可
  3. 非常强大的分支管理功能
  4. Git的内容的完整性要优于SVN: GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

SVN:

  1. 集中式,如果中心服务器出现问题,所有人都不能正常干活,恢复也很麻烦,因为SVN记录的是每次改动的差异,不是完整文件;
  2. 分支功能没有git强大;
  3. 速度没有git快,如果有五个分支,是把五个分支的文件全部拷下来;
  4. 必须联网才能commit

2. 常用命令

#新增文件的命令:
git add file或者git add
#提交文件的命令:
git commit -m或者git commit -a
#查看工作去状况:
git status -s
#拉取合并远程分支的操作:
git fetch/git merge或者git pull
#查看提交记录命令:
git reflog
#下载远程代码命令:
git clone [url]
#新建一个分支,并切换到该分支:
git checkout -b [branch]
#查看修改的文件:
git status
#添加当前目录的所有文件到暂存区:
git add
#提交暂存区到仓库区:
git commit -m[message]
#取回远程仓库的变化,并与本地分支合并:
git pull [remote]
#上传本地指定分支到远程仓库:git push [remote]
#删除分支:
git branch -d [branch-name]
#删除远程分支:git push origin --delete [branch-name] 或
git branch -dr [remote/branch]
#暂时将未提交的变化移除,稍后再移入
git stash 或
git stash pop

在这里插入图片描述

3.提交时发生冲突,冲突是如何产生的吗?你是如何解决的?

开发过程中,我们都有自己的特性分支,所以冲突发生的并不多,但也碰到过。诸如公共类的公共方法,我和别人同时修改同一个文件,他提交后我再提交就会报冲突的错误。

使用命令解决:

  • 通过git stash命令,把工作区的修改提交到栈区,目的是保存工作区的修改;
  • 通过git pull命令,拉取远程分支上的代码并合并到本地分支,目的是消除冲突;
  • 通过git stash pop命令,把保存在栈区的修改部分合并到最新的工作空间中;

如果想撤销提交到索引区的文件,可以通过git reset HEAD file

3. git fetch和git pull命令之间的区别

简单来说:git fetch branch是把名为branch的远程分支拉取到本地;而git pull branch是在fetch的基础上,把branch分支与当前分支进行merge;因此pull = fetch + merge。

4. git stash命令一般什么情况下会使用它?

解决冲突文件时,会先执行git stash把当前工作区的文件先放入栈中,然后解决冲突;
遇到紧急开发任务但目前任务不能提交时,会先执行git stash,然后进行紧急任务的开发,然后通过git stash pop取出栈区的内容继续开发
切换分支时,当前工作空间内容不能提交时,会先执行git stash再进行分支切换;

5. git merge和git rebase的区别?

merge会形成一个四边形,产生一个新的commit,就是一次新的提交,把develop分之带过来了;
rebase抛开commidid的变化,就相当于develop从没出现过一样,按顺序在master新提交一遍;

建议使用merge,保留原分支变更,master就是一次一次的merge,gitk命令可以很直观的看到,或平台网页端网络图那里更好看,什么时候合并了一个feture。rebase后看总图,会有很多重复提交;
否则分支的意义是什么?我一直只commit,不push,也不pull,最后push也和rebase后效果一样;
若临时分支会删掉,可以考虑rebase。

6. git cherry-pick有什么作用

命令git cherry-pick可以把branch A的commit复制到branch B上。
在branch B上进行命令操作:

复制单个提交:git cherry-pick commitId
复制多个提交:git cherry-pick commitId1…commitId3
注意:复制多个提交的命令不包含commitId1.

7. github

Github 是一个基于git实现在线代码托管的仓库,向互联网开放,共有仓库免费,建立私有仓库要收费,因为Github的初衷就是为了大家共享自己的劳动成果。

8. gitlab

github和gitlab都是基于git仓库的web开发流程代码托管平台。两者的区别是github有私有仓库和共有仓库,私有仓库一般收费,gitlab打破这种限制,可以免费搭建私有仓库,并且可以部署在自己的服务器上。gitlab不仅有github的功能,还有更多的优秀特性,比如权限设置。一般企业内部软件产品用gitlab是更好的选择,如果是开源产品,一般放在github上。

9. GitHub、GitLab 不同点:

1、GitHub如果使用私有仓库,是需要付费的,GitLab可以在上面搭建私人的免费仓库。
2、GitLab让开发团队对他们的代码仓库拥有更多的控制,相对于GitHub,它有不少的特色:

  • (1)允许免费设置仓库权限
  • (2)允许用户选择分享一个project的部分代码
  • (3)允许用户设置project的获取权限,进一步提升安全性
  • (4)可以设置获取到团队整体的改进进度
  • (5)通过innersourcing让不在权限范围内的人访问不到该资源

github 是一个基于git实现在线代码托管的仓库,向互联网开放,企业版要收钱。
gitee 即码云,是 oschina 免费给企业用的,不用自己搭建环境。
gitlab 类似 github,一般用于在企业内搭建git私服,要自己搭环境。

第一,github针对企业要收费,那当然是不同意,毕竟都想节约资金,那就还能使用gitee,或者gitlab了
第二,但是码云虽然是免费的,而且不用自己搭环境,但是企业中把项目放在别人的服务器上,始终没有安全感
第三,因此,衍生出了gitlab,就是用于企业搭私服,而且还是在自己的服务器上

标签: git github svn

本文转载自: https://blog.csdn.net/weixin_42200347/article/details/129332940
版权归原作者 程哥哥吖 所有, 如有侵权,请联系我们删除。

“Git常用命令复习笔记”的评论:

还没有评论