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相当于哪两个命令?
git fetch origin 远程分支:本地分支 #origin是远程主机名
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回答整理的更多相关文章
- Git 初学者使用指南及Git 资源整理
Git 资源整理 Git is a free and open source distributed version control system designed to handle everyth ...
- git相关整理
title: git相关整理 toc: false date: 2018-09-24 20:42:55 git merge 和 git merge --no--ff有什么区别? git merge命令 ...
- Git 常见问题整理
在学习git的过程中,遇到如下问题,特整理如下: 1 error:src refspec master does not match any 问题产生 a git服务器使用如下命令新建一个项目 $ c ...
- 常用git命令整理
花了一点时间来熟悉和整理git常用命令. 推荐的git学习资料:1.搜“Git Community Book 中文版.pdf”,git社区书,内容全面且简明扼要,第一推荐2.搜“Git权威指南.pdf ...
- Git使用整理
[本文由水木桶首发于博客园,原文地址:https://www.cnblogs.com/shuimutong/p/11404664.html,未接允许,严禁转载] 背景 很久之前使用的是svn,直接在E ...
- 常见 git 需求整理(持续更新中)
首发于 语雀文档 突然感觉自己对 git 还是挺熟悉的,因为团队里新来的七八号应届生来问我 git 问题,基本没有答不上的情况,但为了能更好地对知识进行整理,还是记录一下为好. (希望能)持续更新.. ...
- Git 笔记整理3
1,git clone某一个分支 git clone -b <branch> <remote_repo> 2,.git 文件太大 :clone的时候,可以指定深度,如下,为1即 ...
- Git笔记 整理2
补充: 1,如何只克隆git仓库中的一个分支? git clone -b <branch> <remote_repo> eg: git clone -b vivien_dev ...
- Git命令整理
说在前面: 刚开始在实习时接触git,是用git可视化工具,但是仅限于克隆库.切换分支.抓取和推送,对于其中的原理不甚了解.看了廖雪峰老师Git教程,获益颇丰.特别要感谢我工作中的同事,是他强烈建议我 ...
随机推荐
- 【ibatis】IBatis介绍
Ⅰ .什么是Ibatis? ① iBATIS的是一个持久层框架,它能够自动在 Java, .NET, 和Ruby on Rails中与SQL数据库和对象之间的映射.映射是从应用程序逻辑封装在XML配置 ...
- MySQL5.7 常用用户操作
目录 MySQL5.7 常用用户操作 1. 新建用户 2. 授权 3. 创建用户时授权 4. 设置与更改用户密码(root) 5. 撤销用户权限 6. 删除用户 7. 查看用户的授权 8. 显示当前用 ...
- leetcode958二叉树的完全检验-java
最近项目刚刚检查了,又有时间刷leetcode了,一道中等的树1个小时才通过,太久不做了.. 给定一个二叉树,确定它是否是一个完全二叉树. 百度百科中对完全二叉树的定义如下: 若设二叉树的深度为 h, ...
- 愿你走出半生,归来仍是Java Parser
几天前,我的一个朋友给了我一个Haskell问题 Hey, MK,假设我有个BNF,并且我在Haskell中有个这个BNF的parser.现在,我想给这个BNF改一行,有没有办法不用动这个BNF pa ...
- 使用 Node.js 搭建微服务网关
目录 Node.js 是什么 安装 node.js Node.js 入门 Node.js 应用场景 npm 镜像 使用 Node.js 搭建微服务网关 什么是微服务架构 使用 Node.js 实现反向 ...
- 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 ...
- 【12】外观模式(Facade Pattern)
一.引言 在软件开发过程中,客户端程序经常会与复杂系统的内部子系统进行耦合,从而导致客户端程序随着子系统的变化而变化.然而为了将复杂系统的内部子系统与客户端之间的依赖解耦,从而就有了外观模式,也称作“ ...
- Calendar类的一些不易区分的属性
1.Calendar.MONTH 月份从0-11,获取之后需要加1才能得到真正的月份 2.Calendar.DAY_OF_WEEK 本周的第几天,从星期天开始算 3.Calendar.WEEK_OF_ ...
- volatile关键值
happens-before原则 我们编写的程序都要经过优化后(编译器和处理器会对我们的程序进行优化以提高运行效率)才会被运行,优化分为很多种,其中有一种优化叫做重排序,重排序需要遵守happens- ...
- 一个挺好用的生成GIF格式图片的小程序
import os import re import imageio pic_list = os.listdir() pic_type = ['png', 'jpg', 'jpeg', 'bmp'] ...