Git

138 阅读4分钟

一、Git

1、Git和SVN的区别

git是分布式版本控制,svn是集中式版本控制(核心区别)

git相对于svn的优势就是不需要网络即可版本控制

git把内容按数据方式存储,而SVN是按文件

git可以是公用的,可以分享,svn基本是公司内部才能访问,网外不方便访问

git不依赖中央服务器,即使服务器有问题也不受影响,svn依赖服务器,一旦服务器有问题就会
受影响

git没有一个全局的版本号,svn有

2、git 工作流程

  1)在工作目录中修改某些文件

  2)对修改后的文件进行快照,然后保存到暂存区域

  3)提交更新,将保存在暂存区域的文件快照永久转储到Git目录中

 

3、fetch、merge、pull 的区别


pull相当于git fetch 和 git merge,即更新远程仓库代码到本地仓库,然后将内容合并到当前分支

git fetch:相当于是从远程获取最新版本到本地,不会自动merge

git merge:将内容合并到当前分支

git pull:相当于是从远程获取最新版本并merge到本地

 

4、分支的相关命令

  创建分支:git branch 分支名
  查看分支:git branch
  切换分支:git checkout 分支名
  创建并切换分支:git checkout -b 分支名
  合并分支:git merge
  查看已经合并的分支/未合并的分支:git branch --merge / git branch --no-merge
  删除的已合并的分支/未合并的分支:git branch -d 分支名 / git branch -D 分支名

 

5、git merge 和 git rebase 的区别

  两个都代表合并

  git merge 操作会在当前分支上生成一个新的 commit 节点,并保留所有的操作历史节点,
      会按照 commit 时间顺序排列

  rebase 操作后的历史并不会按 commit 时间顺序排列, 一旦分支中的提交对象发布到
      公共仓库,就不要对该分支进行 rebase 操作

 

6、解决分支合并冲突

  分支提交冲突:当分支对某文件某句话进行修改后,切换到主分支也对该文件该句话进行修改,
    使用git merge进行合并,需要将两个修改进行合并。此时合并产生冲突  

  解决方法:
  1)git status查看冲突文件
  2)编辑器打开冲突文件,查看内容。Git用<<<<<<<=======>>>>>>>标记出不同分支的内容
  3)修改文件内容
  4)提交 git add file ; git commit -m ""
  查看分支合并图 git log –graph

7、git常用的命令

1)从远程库中克隆项目

    git clone 项目地址

2)工作区到暂存区

    git add 文件名字、git add . 多个文件操作

3)暂存区到版本区

    git commit -m"注释信息"

4)把版本区文件上传到远程仓库

    git push origin master

5)将远程仓库的文件拉取/下载下来

    git pull origin master

6)查看当前历史记录、查看所有的操作记录

    git log、git reflog

7)查看文件状态

    git status

8)查看版本信息

    git version

9)查看配置信息

    git config --list

10)在当前目录新建一个Git代码库(生成隐藏.git文件)

    git init

11)版本回退

    git reset --hard 版本id

12)查看xx文件修改了哪些内容

    git diff xx

13)删除文件名

    git rm 文件名

14)恢复一个文件

    git checkout

15)关联一个远程库

    git remote add [远程仓库git地址]

16)移除关联一个远程库

    git remote remove [远程仓库git地址]

17)创建分支

    git branch 分支名

18)查看分支数量

    git branch

19)切换分支

    git checkout 分支名

20)创建并切换分支

    git checkout -b 分支名

21)当文件修改时切换分支

    git stash 暂存文件

22)合并分支

    git merge

23)合并指定分支到当前分支

    git merge [branch]

24)查看已合并的分支

    git branch --merge

25)查看未合并的分支

    git branch --no-merge

26)查看远程分支

    git branch -r
   

27)删除未合并的分支

    git branch -D 分支名

28)删除已合并的分支

    git branch --

29)删除远程分支

    git branch -d 分支名

30)生成一个可供发布的压缩包

    git archive

9、什么是 fork?fork、分支和克隆之间有什么区别

  fork是对存储仓库进行拷贝

  clone克隆是个对某个远程仓库的本地拷贝,实际上是拷贝整个源存储仓库,包括所有历史记录和分支

  branch分支是一种机制,用于处理单一存储仓库中的变更,并最终目的是用于与其他部分代码合并

 

10、什么时候应使用 “git stash”?

  git stash 命令把你未提交的修改保存以供后续使用,以后就可以从工作副本中进行还原