git面试题

文章目录

  • git经常用哪些指令
  • git出现代码冲突怎么解决
  • 你们团队是怎么管理git分支的
  • 如何实现Git的免密操作

git经常用哪些指令

  • 产生代码库

    • 新建一个git代码库

      • git init
        
    • 下载远程项目和它的整个代码历史

      • git clone 远程仓库地址
        
  • 配置

    • 显示配置

      • git config --list [--global]
        
    • 编辑配置

      • git config -e [--global]
        
    • 设置用户信息

      • git config [--global] user.name "名"
        git config [--global] user.email "邮箱地址"
        
  • 暂存区文件操作

    • 增加文件到暂存区

      • # 1.添加当前目录的所有文件到暂存区
        git add .
        # 2.添加指定目录到暂存区,包括子目录
        git add [dir]
        # 3.添加指定文件到暂存区
        git add [file1] [file2] ...
        
    • 在暂存区中删除文件

      • # 删除工作区文件,并且将这次删除放入暂存区
        git rm [file1] [file2] ...
        # 停止追踪指定文件,但该文件会保留在工作区
        git rm --cached [file]
        
    • 重命名暂存区文件

      • # 改名文件,并且将这个改名放入暂存区
        git mv [file-original] [file-renamed]
        
  • 代码提交

    • # 提交暂存区到仓库区
      git commit -m [message]
      
  • 分支操作

    • # 列出所有本地分支
      git branch
      
      # 列出所有远程分支
      git branch -r
      
      # 列出所有本地分支和远程分支
      git branch -a
      
      # 新建一个分支,但依然停留在当前分支
      git branch [branch-name]
      
      # 新建一个分支,并切换到该分支
      git checkout -b [branch]
      
      # 新建一个分支,指向指定commit
      git branch [branch] [commit]
      
      # 新建一个分支,与指定的远程分支建立追踪关系
      git branch --track [branch] [remote-branch]
      
      # 切换到指定分支,并更新工作区
      git checkout [branch-name]
      
      # 切换到上一个分支
      git checkout -
      
      # 建立追踪关系,在现有分支与指定的远程分支之间
      git branch --set-upstream [branch] [remote-branch]
      
      # 合并指定分支到当前分支
      git merge [branch]
      
      # 选择一个commit,合并进当前分支
      git cherry-pick [commit]
      
      # 删除分支
      git branch -d [branch-name]
      
      # 删除远程分支
      git push origin --delete [branch-name]
      git branch -dr [remote/branch]
      
  • 信息查看

    • # 显示有变更的文件
      git status
      
      # 显示当前分支的版本历史
      git log
      
      # 显示commit历史,以及每次commit发生变更的文件
      git log --stat
      
      # 搜索提交历史,根据关键词
      git log -S [keyword]
      
      # 显示某个commit之后的所有变动,每个commit占据一行
      git log [tag] HEAD --pretty=format:%s
      
      # 显示某个commit之后的所有变动,其"提交说明"必须符合搜索条件
      git log [tag] HEAD --grep feature
      
      # 显示过去5次提交
      git log -5 --pretty --oneline
      
  • 同步操作

    • # 增加一个新的远程仓库,并命名
      git remote add [shortname] [url]
      
      # 取回远程仓库的变化,并与本地分支合并
      git pull [remote] [branch]
      
      # 上传本地指定分支到远程仓库
      git push [remote] [branch]
      
      # 强行推送当前分支到远程仓库,即使有冲突
      git push [remote] --force
      
      # 推送所有分支到远程仓库
      git push [remote] --all
      
  • 撤销操作

    • # 恢复暂存区的指定文件到工作区
      git checkout [file]
      
      # 恢复某个commit的指定文件到暂存区和工作区
      git checkout [commit] [file]
      
      # 恢复暂存区的所有文件到工作区
      git checkout .
      
      # 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
      git reset [file]
      
      # 重置暂存区与工作区,与上一次commit保持一致
      git reset --hard
      
      # 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变
      git reset [commit]
      
      # 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致
      git reset --hard [commit]
      
      # 重置当前HEAD为指定commit,但保持暂存区和工作区不变
      git reset --keep [commit]
      
      # 新建一个commit,用来撤销指定commit
      # 后者的所有变化都将被前者抵消,并且应用到当前分支
      git revert [commit]
      

git出现代码冲突怎么解决

冲突合并一般是因为自己的本地做的提交和服务器上的提交有差异,并且这些差异中的文件改动,Git不能自动合并,那么就需要用户手动进行合并

如我这边执行git pull origin master

如果Git能够自动合并,那么过程看起来是这样的:

git面试题_第1张图片

拉取的时候,Git自动合并,并产生了一次提交。

如果Git不能够自动合并,那么会提示:

这个时候我们就可以知道README.MD有冲突,需要我们手动解决,修改README.MD解决冲突:

git面试题_第2张图片

可以看出来,在1+1=几的这行代码上产生了冲突,解决冲突的目标是保留期望存在的代码,这里保留1+1=2,然后保存退出。

退出之后,确保所有的冲突都得以解决,然后就可以使用:

git add .
git commit -m "fixed conflicts"
git push origin master`

即可完成一次冲突的合并。

整个过程看起来是这样的:

git面试题_第3张图片

你们团队是怎么管理git分支的

关于Git分支管理,每个团队在不同阶段都有自己的管理策略。我们团队以前采用的是版本分支管理策略,也就是每次上线新版本都会创建一个新的版本分支,而新的需求开发也从当前最新的版本分支迁出一个新的需求分支开发,线上bug则在版本分支上修改然后发布。

如何实现Git的免密操作

现在的远程仓库都提供了基于SSH协议的Git服务,在使用SSH协议访问仓库之前,需要先配置好账户/仓库的SSH公钥。

① 产生公私钥对

ssh-keygen -t rsa -C [email protected]

产生完毕后,公私玥对位于c/Users/用户名/.ssh/

  • id_rsa:私钥(私有的钥匙,不能公开)
  • id_rsa.pub:公钥(可以公开的钥匙)

② 将公钥上传至远程仓库个人中心的设置里

以gitee为例,添加公钥请访问:https://gitee.com/profile/sshkeys

git面试题_第4张图片

注:如果想用现在的免密登录,请使用ssh协议去关联本地与线上仓库。

你可能感兴趣的:(git,elasticsearch,大数据)