zoukankan      html  css  js  c++  java
  • git回答整理

    1.git常用命令

    首先明确:git有工作区、暂存区、版本库,工作区是电脑里能看到的目录

    创建仓库:

      git init newrepo,使用我们指定目录作为Git仓库(初始化后,会在newrepo目录下会出现一个名为.git的目录,所有git需要的数据和资源都存放在这个目录中)

      git init(该命令执行完后会在当前目录生成一个 .git 目录,但这是一个空的仓库,可以通过git add + 文件名或者git add + . 把文件添加到仓库)

      git add + 文件名  将文件从本地工作区添加到本地暂存区(或者说让git追踪)  (git add + . 是把当前目录的所有文件都添加到本地的暂存区)

      git commit -m "xxx" (git commit file1 file2 -m "xxx" ) 将文件从本地暂存区添加到本地仓库区,-m接的是本次提交的说明

    远程同步:

      git remote:查看所有的远程仓库(原始只显示远程仓库的名字,git remote -v把相应的地址也显示)

      git remote add +str+url :添加远程仓库,str就是远程仓库的名字(或者说与远程仓库关联,也可以直接clone后自动关联)

      git remote show + 远程仓库名:查看某个远程仓库的详细信息

      git fetch、git pull

      git push [remote-name] [branch-name]:上传本地指定分支到远程仓库(git push [remote] --all推送所有分支到远程仓库)(和pull不一样,不会merge,只会上传到远程你的分支)

      git push origin --delete + 分支名:删除远程分支

    删除:

      rm:仅仅是删除了物理文件,没有将其从git的记录中删除

      git rm:当我们需要删除暂存区分支上的文件, 同时工作区也不需要这个文件了, 可以使用

      git rm --cached:当我们需要删除暂存区分支上的文件, 但本地又需要使用, 只是不希望这个文件被版本控制, 可以使用

      直观的来讲,git rm 删除过的文件,执行 git commit -m "abc" 提交时,会自动将删除该文件的操作提交上去。而用 rm 命令直接删除的文件,单纯执行 git commit -m "abc" 提交时,则不会将删除该文件的操作提交上去,需要在执行commit的时候,多加一个-a参数,即rm删除后,需要使用git commit -am "abc"提交才会将删除文件的操作提交上去。

      一般用完git rm这种操作,都要git commit -m "xxx",一个是更新仓库一个是做说明

    显示信息命令:

      git diff filename:比较工作区和暂存区

      git diff --cached filename:比较暂存区与最新本地版本库

      git diff HEAD filename:比较工作区和最新版本

      https://www.cnblogs.com/chenfulin5/p/8674565.html

      git status:查看git本地仓库当前状态   具体看https://blog.csdn.net/boshuzhang/article/details/69544038 

            changed but not updated:  表示我们改动了server.c但是没有更新快照,此时我们应该执行git add

            changes not staged for commit:    

            Changes to be committed: 表示我们的改动已经准备好了,随时可以提交,我们只要用git commit命令提交就可以了

            untracked files:  表示没有被跟踪

      git log:查看git详细日志,包含不同版本提交、时间、作者(前面配置email和name这里会有用)

      git log -[length]:具体显示多少条日志

    标签命令:

      git tag:列出所有标签

      git tag [tag] [commit]:新建一个tag在指定commit

     

    分支:

      查看当前有所有分支:git branch(git branch后面什么都不加,*号代表当前分支)

      git branch是查看本地所有分支,git branch -r是查看远程所有分支,git branch -a是查看本地和远程所有分支

    $ git branch
      iss53
    * master
      testing

      新建分支:git branch + 分支名

      删除分支:git branch -d + 分支名

      切换分支:git checkout + 分支名

      合并分支:git merge + 分支名 

      

    https://www.cnblogs.com/horanly/p/6603647.html

    3.git中 rebase 和 merge的区别

    如果有些人在远程origin上做了修改,一般操作是先pull远程的代码,然后和本地merge,然后再push

    对于两个分支而言,rebase和merge没有区别,但是rebase更干净,因为log hisitory是线性的,但commit不一定按日期先后排,而是local commit总在后面,merge之后history变得比较复杂,但是commit按日期排序 https://blog.csdn.net/jollyjumper/article/details/24743751

    merge、rebase原理:https://blog.csdn.net/wh_19910525/article/details/7554489

    4.本地和远程repo名字不一样怎么解决?

    通过git remote add命令增加远程仓库
    git remote add origin **/bbb.git

    https://segmentfault.com/q/1010000007848161?_ea=1472359

    12. git pull和fetch merge有什么区别?git pull相当于哪两个命令?

     pull相当于git fetch 和 git merge,即更新远程仓库的代码到本地仓库,然后将内容合并到当前分支
     git fetch:相当于是从远程获取最新版本到本地,不会自动merge
     
    git fetch origin 远程分支:本地分支   #origin是远程主机名
     git merge :  将内容合并到当前分支
     git pull:相当于是从远程获取最新版本并merge到本地
    git pull <远程主机名><远程分支名>:<本地分支名>

    https://blog.csdn.net/xal0610/article/details/79558622

    13.git merge 和git merge --no--ff有什么区别

    git merge –no-ff 可以保存你之前的分支历史。能够更好的查看 merge历史,以及branch状态。

    git merge 则不会显示 feature,只保留单条分支记录。

    https://blog.csdn.net/u010940300/article/details/47419069?locationNum=10

    https://blog.csdn.net/chaiyu2002/article/details/81020370

    https://www.cnblogs.com/hechao123/archive/2017/02/12/6390359.html

    17.说说reset和revert的区别

    revert是用新的commit覆盖一个旧的错的commit,reset是把这个错的commit之后的所有的commit都回退了。revert回退的一个commit,reset回退的一个区间的commit。

    https://blog.csdn.net/u012589515/article/details/66973734

    https://blog.csdn.net/qq_33442844/article/details/80506041

    19.git commit提交有问题,修改commit用什么命令?

    https://blog.csdn.net/sodaslay/article/details/72948722

    http://www.softwhy.com/article-8492-1.html

    git amend:既可以修改最后一次commit提交信息,也可以修改最后一次提交的文件

    20.git有没有办法调节commit之间的顺序?

    可以:http://www.softwhy.com/article-8639-1.html

    但是调整了commit的顺序容易产生冲突和错误

    21.git发生冲突时候怎么处理

    merge两个分支时发生冲突。master中的内容和分支1最初复制的内容不一样,现在切换到master分支,把分支1合并到master肯定会有冲突,需要手动修改

    master
    <<<<<<< HEAD
    feature2
    =======
    feature1
    >>>>>>> feature1
    <<<<<<< HEAD    表示当前分支
    =======  表示用于比较的断点
    >>>>>>> feature1 表示要合并分支

    https://blog.csdn.net/zsx157326/article/details/80059159

    因为共同创建了一个同名文件,对方删除了我们正在使用的文件。也会引起冲突,叫做树冲突。

    根据具体需要哪个名字然后删除一个

    https://www.jianshu.com/p/702ad27f6a6c 

    27.给了一个常用场景,写出git上线的命令      平时开发中,版本控制的流程是怎么样的

    1.创建一个git裸服务器 (git init --bare)

    2.从裸服务器将版本库克隆至本地(git clone )

    3.本地常规操作

    4.推送版本至服务器 (git remote +  git push origin master)

    5.从远程服务器拉取版本(git pull)

    主分支master

    开发分支Develop

    功能分支

    修补bug分支

    https://www.cnblogs.com/onelikeone/p/6857910.html

    https://blog.csdn.net/zyw0713/article/details/80083431

    31.fork和clone的区别

    fork:是对存储仓库进行的远程的,服务器端的拷贝,fork不是git范畴。 
    clone:是对某个远程仓库的本地拷贝。克隆时,实际上是拷贝整个存储仓库,包括所有的历史记录和分支。 

  • 相关阅读:
    sqlserver2008r2 连接服务器报错64
    java web---HTTP略讲
    Web测试中定位bug方法
    Java1.8API大类
    如何查看windows电脑信息(win10)
    debain系统安装open-vm-tools
    windowns电脑环境配置
    配置了环境变量,adb还是不能用
    已经配了环境变量,但是执行命令却打开了应用商店
    cpython,jpython,ironpython,micropython,etc的区别
  • 原文地址:https://www.cnblogs.com/ymjyqsx/p/9739988.html
Copyright © 2011-2022 走看看