git diff 已经缓存的文件和刚刚修改过的没有缓存的文件的对比
git diff --stage
 
git status 查看本地文件的修改,是否进入缓存
git add 把刚刚修改过的文件加入缓存,待提交
 
git commit -a 跳过 git add 这一步,对之前纳入管理的文件直接提交
git rm 从缓存区移除文件
 
 
 
本地分支推送到远程分支
 
git push origin feature-branch:feature-branch    //推送本地的feature-branch(冒号前面的)分支到远程origin的feature-branch(冒号后面的)分支(没有会自动创建)
 
查看某个文件的改动
 
git log filename
 
 
git show 356f6def9d3fb7f3b9032ff5aa4b9110d4cca87e
 

创建与合并分支

 
版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。
 
一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点:
 

 
每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也越来越长:
 
当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上:
 

 
你看,Git创建一个分支很快,因为除了增加一个dev指针,改改HEAD的指向,工作区的文件都没有任何变化!
 
不过,从现在开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针不变:
 

 
假如我们在dev上的工作完成了,就可以把dev合并到master上。Git怎么合并呢?最简单的方法,就是直接把master指向dev的当前提交,就完成了合并:
 

 
所以Git合并分支也很快!就改改指针,工作区内容也不变!
 
合并完分支后,甚至可以删除dev分支。删除dev分支就是把dev指针给删掉,删掉后,我们就剩下了一条master分支:
 

 
真是太神奇了,你看得出来有些提交是通过分支完成的吗?
 
下面开始实战。
 
首先,我们创建dev分支,然后切换到dev分支:
 
$ git checkout -b dev
Switched to a new branch 'dev'
 
git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:
 
$ git branch dev
$ git checkout dev
Switched to branch 'dev'
 
然后,用git branch命令查看当前分支:
 
$ git branch
* dev
master
 
git branch命令会列出所有分支,当前分支前面会标一个*号。
 
然后,我们就可以在dev分支上正常提交,比如对readme.txt做个修改,加上一行:
 
Creating a new branch is quick.
 
然后提交:
 
$ git add readme.txt
$ git commit -m "branch test"
[dev fec145a] branch test
1 file changed, 1 insertion(+)
 
现在,dev分支的工作完成,我们就可以切换回master分支:
 
$ git checkout master
Switched to branch 'master'
 
切换回master分支后,再查看一个readme.txt文件,刚才添加的内容不见了!因为那个提交是在dev分支上,而master分支此刻的提交点并没有变:
 

 
现在,我们把dev分支的工作成果合并到master分支上:
 
$ git merge dev
Updating d17efd8..fec145a
Fast-forward
readme.txt | 1 +
1 file changed, 1 insertion(+)
 
git merge命令用于合并指定分支到当前分支。合并后,再查看readme.txt的内容,就可以看到,和dev分支的最新提交是完全一样的。
 
注意到上面的Fast-forward信息,Git告诉我们,这次合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。
 
当然,也不是每次合并都能Fast-forward,我们后面会讲其他方式的合并。
 
合并完成后,就可以放心地删除dev分支了:
 
$ git branch -d dev
Deleted branch dev (was fec145a).
 
删除后,查看branch,就只剩下master分支了:
 
$ git branch
* master
 
因为创建、合并和删除分支非常快,所以Git鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。
 
 
git merge 和 git rebase 区别? 感觉都是从一个分支合并到另一个分支
 
  https://zhuanlan.zhihu.com/p/75499871
  git mer
 

小结

 
Git鼓励大量使用分支:
 
查看分支:git branch
 
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
 
合并某分支到当前分支:git merge <name> 
删除分支:git branch -d <name>
 
Create a local repo
git init
Commit -> stage
改 stage, git reset
Commit -> workspace
From commit to workspace, Reverting a file to previous version
 
git checkout 09bd8cc1 hello.txt    
git checkout master
 
Stage -> workspace
 
 
 
 
 
拉取远程分支并创建本地分支
 
git checkout -b 本地分支名x origin/远程分支名x
 
     
     
git checkout hello.py undoing local changes (before staging)  
git reset HEAD hello.py undoing staged changes (before committing)  
git revert HEAD undoing committed changes the reverted commit still can be seen in history
git reset --hard v1 Removing commit from a branch v1 is a tag, or it can be a hash
git checkout -b greet create a branch 'greet' and go into it  
git merge master merge mater into branch  
Remote opeation    
git fetch  
“git fetch” command will fetch new commits from the remote repository, but it will not merge these commits into the local branches.
git pull  = git fetch + git merge origin/master  
 
 
 

 
 
 
$ git reset --hard HEAD^
    回退到前一个版本,git log 里也看不到了
用git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别:
 
 
 
命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
 
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
 
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
 
总之,就是让这个文件回到最近一次git commit或git add时的状态。
 
 
 
又到了小结时间。
 
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
 
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。
 
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
 
 
 
Problem:
如果 git clone 遇到server需要SSH key, 可以参考 https://blog.csdn.net/lk142500/article/details/80358941
 
 
Ref:
https://www.liaoxuefeng.com/wiki/896043488029600/897013573512192, 廖雪峰 git 教程,很清楚
Git:git diff 命令详解, 讲了怎样用git diff 对比工作区,缓存区,以及和git仓库的文件,很清楚

git 相关操作的更多相关文章

  1. git相关操作。

    之前只会用图形端的GIT中,命令行的比较陌生,整理下,供自己以后参考 关键的名词: 工作区:工作区 Index / Stage:暂存区 仓库:仓库区(或本地仓库) 远程控制:远程仓库 到项目目录下gi ...

  2. git相关操作

    git相关命令 基本操作 git init git add xxx git commit -m "first commit" git tag -a V1.0 -m '我的标签' g ...

  3. Git相关操作汇总

    git clone: 正如上图,当我们打开终端的情况下,默认我们所在的目录是在/home/shiyanlou的,大家可以在终端输入以下命令把目录切换到桌面cd  /home/Desktop这个时候输入 ...

  4. Git相关操作及记录

    一.软件 1.下载Git客户端软件 Widows平台: https://github.com/git-for-windows/git/releases/download/v2.13.0.windows ...

  5. Git相关操作三

    1.显示当前分支: git branch 输入上述命令可以显示出分支,*所在的分支为当前分支. 2.新建分支: git branch new_branch new_branch为新建分支的名称,注意该 ...

  6. Git相关操作二

    1.查看HEAD提交: git show HEAD 在git中,目前提交被称为HEAD提交,输入上述命令可以查看当前提交所有文件的修改内容. 2.撤销更改: git checkout HEAD fil ...

  7. git相关操作(githug)

    Level 15  restructure 关卡描述 你添加了一些文件到你的仓库,但现在知道你的项目需要进行调整.创建一个新的文件夹命名为“src”,使用git将所有的".html" ...

  8. 这里有一份热乎乎的git相关操作

    文件操作 git init (添加文件): git status (查看文件状态): git diff (查看修改内容): git rm (删除文件): git add (把文件保存在暂存区): gi ...

  9. Git相关操作四

    1.克隆远程仓库 git clone remote_location clone_name remote_location为仓库地址,clone_name为要克隆到本地的仓库名称. 2.显示对应克隆地 ...

  10. Git相关操作一

    1.将目录变为Git项目: 输入git init将当期目录变为Git项目 git init git项目可以被认为分为三个区域,Working Directory,Staging Area,Reposi ...

随机推荐

  1. CosyVoice多语言、音色和情感控制模型,one-shot零样本语音克隆模型本地部署(Win/Mac),通义实验室开源

    近日,阿里通义实验室开源了CosyVoice语音模型,它支持自然语音生成,支持多语言.音色和情感控制,在多语言语音生成.零样本语音生成.跨语言声音合成和指令执行能力方面表现卓越. CosyVoice采 ...

  2. IDEA之调试或运行的小助手日志插件Grep Console:不同颜色区分,查看日志看方便【工欲善其事必先利其器】

    简介 Grep Console是一款方便开发者对idea控制台输出日志进行个性化管理的插件.这个插件还是很用的,在满屏的日志中,迅速找到自己关注的内容,调试程序的绝佳工具. 功能特性 Grep Con ...

  3. Git 奇幻之旅⌛️续集

    第十二天:暂存未完成的修改 小明和小红在开发一个新功能时,他们需要切换到另一个分支去修复一个紧急的 bug .但是他们的当前分支上还有一些未完成的修改,他们不想提交这些修改,也不想丢弃这些修改.有一天 ...

  4. oeasy教您玩转vim - 81 - # 宏macro的进阶

    ​ 宏的进阶 macro 回忆 关于宏,上次有4个要点 qa 开始录制宏 q 结束录制宏 @a 应用宏 qA 追加录制宏 甚至可以编辑宏 "ap 把宏作为文本粘贴出来 编辑之后 " ...

  5. 【VMware VCF】VMware Cloud Foundation Part 01:概述。

    VMware Cloud Foundation(简称 VCF)是 VMware 打造的一套用于 Software Defined Data Center(SDDC)软件定义数据中心的全栈云平台解决方案 ...

  6. CF1988C Increasing Sequence with Fixed OR Solution

    题意简述如下: 给定一个正整数 \(n\),请构造一个正整数序列使其满足以下条件并尽可能长:这个序列中每个数都大于等于 \(1\) 且小于等于\(n\):这个序列是单调递增的:这个序列中任意两个相邻的 ...

  7. 微服务:openFeign

    openFeign是一个声明式http客户端.作用:基于springMVC常见注解,帮我们更优雅的实现http请求 引入依赖 <!--openFeign--> <dependency ...

  8. WordPress基础之基本SEO设置

    基础内容,不会涉及过深,在谷歌SEO教程中会做详细的介绍,我这里只简单讲下. 1. SEO介绍 SEO,又名搜索引擎优化(Search Engine Optimization,缩写为SEO)是透过了解 ...

  9. 用jacoco统计JAVA项目测试代码覆盖率

    一.概述 Jacoco 统计的是全量代码覆盖率.它不仅支持生成单元测试的覆盖率,也支持监控生成接口测试,功能测试的覆盖率. 在新一代精准测试技术流的影响中,各大型单位对覆盖率的追求越来越迫切.作为一款 ...

  10. docker 网络互通

    自定义网络 查看所有的docker网络 网络模式 [root@docker ~]# docker network ls NETWORK ID NAME DRIVER SCOPE a4d70d5796e ...