Git的几个重要面试考察点,慎入!!

Git的几个重要面试考察点,慎入!!

1、远程操作命令的区别

  • git clone
  • git remote
  • git fetch
  • git pull
  • git push

Git的几个重要面试考察点,慎入!!


1.1 git clone <版本库地址> <本地目录地址>

  • 本地没有项目时,直接使用clone

1.2 git pull <远程主机名> <远程分支名> : <本地分支名>

  • 表示取回远程库的分支,再同时与本地分支合并,保持同步

1.3 git fetch <远程主机名><远程分支名>和git merge <被合并分支名> //表示合并至当前分支

  • git fetch 表示将远程分支拉取至本地,并在本地生成一个远程分支origin/master
  • 其次,可以使用git checkout -b NewBrach origin/master 在他的基础之上创建一个新的分支

1.4 git push <远程主机名> <本地分支名> : <远程分支名>

  • 将本地分支与远程分支进行同步

参考文章:http://www.ruanyifeng.com/blog/2014/06/git_remote.html

2.git merge和git rebase的重要区别

最大的区别是:merge只能用于对两个不同分支进行合并,要求两个版本必须保持最新版,无法在回退低版本进行改动时保证后续分支同步更新,而使用rebase就能做到,它通过将旧版本的提交历史以补丁的方式依次将后续分支打上,从而实现更新!

强烈建议参考这篇博文,非常通俗易懂https://blog.****.net/hustpzb/article/details/8686435

3.git库所在的文件夹中的文件大致有4种状态

Untracked:
未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.
Unmodify:
文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改,
而变为Modified. 如果使用git ``rm``移出版本库, 则成为Untracked文件
Modified:
文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态,
使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改
Staged:
暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态.
执行git reset HEAD filename取消暂存, 文件状态为Modified
Git 状态 untracked 和 not staged的区别
1)untrack     表示是新文件,没有被add过,是为跟踪的意思。
2)not staged  表示add过的文件,即跟踪文件,再次修改没有add,就是没有暂存的意思