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:是对某个远程仓库的本地拷贝。克隆时,实际上是拷贝整个存储仓库,包括所有的历史记录和分支。

git回答整理的更多相关文章

  1. Git 初学者使用指南及Git 资源整理

    Git 资源整理 Git is a free and open source distributed version control system designed to handle everyth ...

  2. git相关整理

    title: git相关整理 toc: false date: 2018-09-24 20:42:55 git merge 和 git merge --no--ff有什么区别? git merge命令 ...

  3. Git 常见问题整理

    在学习git的过程中,遇到如下问题,特整理如下: 1 error:src refspec master does not match any 问题产生 a git服务器使用如下命令新建一个项目 $ c ...

  4. 常用git命令整理

    花了一点时间来熟悉和整理git常用命令. 推荐的git学习资料:1.搜“Git Community Book 中文版.pdf”,git社区书,内容全面且简明扼要,第一推荐2.搜“Git权威指南.pdf ...

  5. Git使用整理

    [本文由水木桶首发于博客园,原文地址:https://www.cnblogs.com/shuimutong/p/11404664.html,未接允许,严禁转载] 背景 很久之前使用的是svn,直接在E ...

  6. 常见 git 需求整理(持续更新中)

    首发于 语雀文档 突然感觉自己对 git 还是挺熟悉的,因为团队里新来的七八号应届生来问我 git 问题,基本没有答不上的情况,但为了能更好地对知识进行整理,还是记录一下为好. (希望能)持续更新.. ...

  7. Git 笔记整理3

    1,git clone某一个分支 git clone -b <branch> <remote_repo> 2,.git 文件太大 :clone的时候,可以指定深度,如下,为1即 ...

  8. Git笔记 整理2

    补充: 1,如何只克隆git仓库中的一个分支? git clone -b <branch> <remote_repo> eg:  git clone -b vivien_dev ...

  9. Git命令整理

    说在前面: 刚开始在实习时接触git,是用git可视化工具,但是仅限于克隆库.切换分支.抓取和推送,对于其中的原理不甚了解.看了廖雪峰老师Git教程,获益颇丰.特别要感谢我工作中的同事,是他强烈建议我 ...

随机推荐

  1. 【ibatis】IBatis介绍

    Ⅰ .什么是Ibatis? ① iBATIS的是一个持久层框架,它能够自动在 Java, .NET, 和Ruby on Rails中与SQL数据库和对象之间的映射.映射是从应用程序逻辑封装在XML配置 ...

  2. MySQL5.7 常用用户操作

    目录 MySQL5.7 常用用户操作 1. 新建用户 2. 授权 3. 创建用户时授权 4. 设置与更改用户密码(root) 5. 撤销用户权限 6. 删除用户 7. 查看用户的授权 8. 显示当前用 ...

  3. leetcode958二叉树的完全检验-java

    最近项目刚刚检查了,又有时间刷leetcode了,一道中等的树1个小时才通过,太久不做了.. 给定一个二叉树,确定它是否是一个完全二叉树. 百度百科中对完全二叉树的定义如下: 若设二叉树的深度为 h, ...

  4. 愿你走出半生,归来仍是Java Parser

    几天前,我的一个朋友给了我一个Haskell问题 Hey, MK,假设我有个BNF,并且我在Haskell中有个这个BNF的parser.现在,我想给这个BNF改一行,有没有办法不用动这个BNF pa ...

  5. 使用 Node.js 搭建微服务网关

    目录 Node.js 是什么 安装 node.js Node.js 入门 Node.js 应用场景 npm 镜像 使用 Node.js 搭建微服务网关 什么是微服务架构 使用 Node.js 实现反向 ...

  6. You can Solve a Geometry Problem too (hdu1086)几何,判断两线段相交

    You can Solve a Geometry Problem too Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/3276 ...

  7. 【12】外观模式(Facade Pattern)

    一.引言 在软件开发过程中,客户端程序经常会与复杂系统的内部子系统进行耦合,从而导致客户端程序随着子系统的变化而变化.然而为了将复杂系统的内部子系统与客户端之间的依赖解耦,从而就有了外观模式,也称作“ ...

  8. Calendar类的一些不易区分的属性

    1.Calendar.MONTH 月份从0-11,获取之后需要加1才能得到真正的月份 2.Calendar.DAY_OF_WEEK 本周的第几天,从星期天开始算 3.Calendar.WEEK_OF_ ...

  9. volatile关键值

    happens-before原则 我们编写的程序都要经过优化后(编译器和处理器会对我们的程序进行优化以提高运行效率)才会被运行,优化分为很多种,其中有一种优化叫做重排序,重排序需要遵守happens- ...

  10. 一个挺好用的生成GIF格式图片的小程序

    import os import re import imageio pic_list = os.listdir() pic_type = ['png', 'jpg', 'jpeg', 'bmp'] ...