经常发现好多时候修改线上代码的时候找不到原仓库地址了,头疼啊,还是git够强大,下面介绍下方法

可以通过命令 git remote show [remote-name] 查看某个远程仓库的详细信息,比如要看所克隆的 origin 仓库,可以运行:

$ git remote show origin
* remote originURL: git://github.com/schacon/ticgit.gitRemote branch merged with 'git pull' while on branch mastermasterTracked remote branchesmasterticgit

除了对应的克隆地址外,它还给出了许多额外的信息。它友善地告诉你如果是在 master 分支,就可以用git pull 命令抓取数据合并到本地。另外还列出了所有处于跟踪状态中的远端分支。

上面的例子非常简单,而随着使用 Git 的深入,git remote show 给出的信息可能会像这样:

$ git remote show origin
* remote originURL: git@github.com:defunkt/github.gitRemote branch merged with 'git pull' while on branch issuesissuesRemote branch merged with 'git pull' while on branch mastermasterNew remote branches (next fetch will store in remotes/origin)cachingStale tracking branches (use 'git remote prune')libwalkerwalker2Tracked remote branchesaclapiv2dashboard2issuesmasterpostgresLocal branch pushed with 'git push'master:master

它告诉我们,运行 git push 时缺省推送的分支是什么(译注:最后两行)。它还显示了有哪些远端分支还没有同步到本地(译注:第六行的 caching 分支),哪些已同步到本地的远端分支在远端服务器上已被删除(译注:Stale tracking branches 下面的两个分支),以及运行 git pull 时将自动合并哪些分支(译注:前四行中列出的 issues 和 master 分支)。

git 删除本地分支和远程分支、本地代码回滚和远程代码库回滚

【git 删除本地分支】

git branch -D br

【git 删除远程分支】

git push origin :br  (origin 后面有空格)

git代码库回滚: 指的是将代码库某分支退回到以前的某个commit id

【本地代码库回滚】:

git reset --hard commit-id :回滚到commit-id,讲commit-id之后提交的commit都去除

git reset --hard HEAD~3:将最近3次的提交回滚

【远程代码库回滚】:

这个是重点要说的内容,过程比本地回滚要复杂

应用场景:自动部署系统发布后发现问题,需要回滚到某一个commit,再重新发布

原理:先将本地分支退回到某个commit,删除远程分支,再重新push本地分支

操作步骤:

1、git checkout the_branch

2、git pull

3、git branch the_branch_backup //备份一下这个分支当前的情况

4、git reset --hard the_commit_id //把the_branch本地回滚到the_commit_id

5、git push origin :the_branch //删除远程 the_branch

6、git push origin the_branch //用回滚后的本地分支重新建立远程分支

7、git push origin :the_branch_backup //如果前面都成功了,删除这个备份分支

如果使用了gerrit做远程代码中心库和code review平台,需要确保操作git的用户具备分支的push权限,并且选择了 Force Push选项(在push权限设置里有这个选项)

另外,gerrit中心库是个bare库,将HEAD默认指向了master,因此master分支是不能进行删除操作的,最好不要选择删除master分支的策略,换用其他分支。如果一定要这样做,可以考虑到gerrit服务器上修改HEAD指针。。。不建议这样搞

管理修改

  下面的内容需要你掌握暂存区的知识,我就默认你已经完全掌握了暂存区的概念。现在我们要讨论的是,为什么Git比其他版本控制系统设计得优秀?因为Git跟踪并管理的是修改,而非文件。 
  为什么说Git管理的是修改,而不是文件呢?我们还是用小栗子说明一下。 
  1.对readme.txt做一个修改,比如加一行内容:

cat readme.txt
  • 1

 
  2.添加:

git add readme.txt
git status
  • 1
  • 2

  3.再修改readme.txt:

cat readme.txt 
  • 1

 
  4.提交:

git commit -m "git tracks changes"
  • 1

  5.提交后,再看看状态:

git status
  • 1

  到这里就会发现第二次的修改没有被提交。这是怎么回事啦? 

  让我们往回退一下看看前面的执行步骤: 
  第一次修改 -> git add -> 第二次修改 -> git commit 
我们前面讲了,Git管理的是修改,当你用git add命令后,在工作区的第一次修改被放入暂存区准备提交,但是在工作区的第二次修改并没有被我们用git add命令放入暂存区,所以git commit只负责把暂存区的修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交。 
  提交后,用git diff HEAD – readme.txt命令可以查看工作区和版本库里面最新版本的区别:

git diff HEAD -- readme.txt 
  • 1

  从这里可以看出第二次修改确实没有被提交。 
  那怎么提交第二次修改呢?你可以继续git add再git commit,也可以别着急提交第一次修改,先git add第二次修改,再git commit,就相当于把两次修改合并后一块提交了: 
  第一次修改 -> git add -> 第二次修改 -> git add -> git commit 
现在你应该理解了Git是如何跟踪修改的,每次修改,如果不add到暂存区,那就不会加入到commit中。

撤销修改

  我们往往会碰到一种情况就是修改完了之后才发现刚刚修改的地点被改错了,既然错误发现得很及时,就可以很容易地纠正它。比如我们刚刚在最后添加的哪一行错了,你可以删掉最后一行,手动把文件恢复到上一个版本的状态。如果用git status查看一下:

git status
  • 1

  Git会告诉我们,用git checkout – file可以丢弃工作区的修改:

git checkout -- readme.txt
  • 1

  命令git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况: 
  一种是readme.txt自修改后还没有被放到暂存区,撤销修改就回到和版本库一模一样的状态; 
  一种是readme.txt已经添加到暂存区后,又作了修改,撤销修改就回到添加到暂存区后的状态。 
  总之,就是让这个文件回到最近一次git commit或git add时的状态。现在,看看readme.txt的文件内容:

cat readme.txt
  • 1

文件内容果然复原了。 
  需要注意的是 git checkout – file命令中的–,没有–,就变成了“切换到另一个分支”的命令,我们在后面的分支管理中会再次遇到git checkout命令

  现在假定是凌晨3点,你不但写了一些胡话,还git add到暂存区了:

cat readme.txt
git add readme.txt
  • 1
  • 2

  庆幸的是,在commit之前,你发现了这个问题。用git status查看一下,修改只是添加到了暂存区,还没有提交:

git status
  • 1

  Git同样可以帮你搞定,用命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区:

git reset HEAD readme.txt
  • 1

  git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。 
  再用git status查看一下,现在暂存区是干净的,工作区有修改:

git status
  • 1

 
  还记得如何丢弃工作区的修改吗?

git checkout -- readme.txt
git status
  • 1
  • 2

  这个时候也许可以睡一个安稳觉了,我是不是应该说句晚安啦。 
  不过,假设你不但改错了东西,还从暂存区提交到了版本库,怎么办呢?还记得版本回退一节吗?可以回退到上一个版本。不过,这是有条件的,就是你还没有把自己的本地版本库推送到远程。还记得Git是分布式版本控制系统吗?我们后面会讲到远程版本库,一旦你把“stupid boss”提交推送到远程版本库,你就真的惨了

删除文件

  在Git中,删除也是一个修改操作,我们通过一个小栗子来玩一把。先添加一个新文件test.txt到Git并且提交:

git add test.txt
git commit -m "add test.txt"
  • 1
  • 2

  一般情况下,你通常直接在文件管理器中把没用的文件删了,或者用rm命令删了:

rm test.txt
  • 1

 
  这个时候,Git知道你删除了文件,工作区和版本库就不一致了, git status命令会立刻告诉你哪些文件被删除了:

git status
  • 1

  现在你有两个选择,一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit:

git rm test.txt
git commit -m "remove test.txt"
  • 1
  • 2

  现在,文件就从版本库中被删除了。 
  命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。

  另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:

git checkout -- test.txt
  • 1

  git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

git - 查看远程仓库信息相关推荐

  1. Git 远程篇之查看远程仓库信息

      要参与任何一个 Git 项目的协作,必须要了解该如何管理远程仓库.远程仓库是指托管在网络上的项目仓库,可能会有好多个,其中有些你只能读,另外有些可以写.同他人协作开发某个项目时,需要管理这些远程仓 ...

  2. git查看远程仓库地址命令:

    it查看远程仓库地址命令: $git remote -v

  3. git 查看远程仓库地址

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 就一个命令: git remote -v 如下:

  4. git remote(远程仓库操作)

    1.列出所有远程仓库名,只显示name git remote # 列出远程仓库name origin 2.列出所有远程仓库详细信息 git remote -v # 列出远程仓库的详细信息 origin ...

  5. 解决git添加远程仓库提示出错信息:fatal: remote origin already exists

    解决git添加远程仓库提示出错信息:fatal: remote origin already exists. 解决办法如下:1.先输入$ git remote rm origin2.再输入$ git ...

  6. git基础-远程仓库的使用

    远程仓库的使用 为了能在任意 Git 项目上协作,你需要知道如何管理自己的远程仓库. 远程仓库是指托管在因特网或其他网络中的你的项目的版本库. 你可以有好几个远程仓库,通常有些仓库对你只读,有些则可以 ...

  7. git和远程仓库建立连接详细过程

    git和远程仓库建立连接详细过程 建立远程仓库 首先在github/gitee上创建自己的一个仓库,并将自己的路径复制下来,如下图. 建立本地仓库 本地新建文件夹存储工程文件,并且初始化仓库. 打开g ...

  8. git连接远程仓库以及常用命令

    git连接远程仓库以及常用命令 git 连接远程仓库 git ssh key配置 本地配置 git配置 git连接远程仓库 关联远程仓库(将本地仓库推送到新的远程仓库) git常用命令(包括clone ...

  9. 【Ubuntu安装git与git clone远程仓库】

    在远程ubuntu安装git 连接远程服务器 可以通过pycharm,vscode,SecureCRT等工具配置连接远程服务器 pycharm远程连接服务器完整教程 Windows下如何使用VScod ...

最新文章

  1. 浅析对象访问属性的.和[]方法区别
  2. squid,nginx,lighttpd反向代理的区别
  3. angular轮播图
  4. python编程语法-Python编程入门——基础语法详解
  5. 33:计算分数加减表达式的值
  6. 互联网服务应用协议设计
  7. 07-02 测试报告-allure
  8. 用c++创建xml文件的两种方法
  9. 高等数学公式(latex)
  10. 时间序列的平稳性检验方法汇总
  11. 使用ps处理PDF文件
  12. 数学建模(6)-Matlab绘制图像精细修改
  13. 华数机器人旋转编程_华数机器人HRT-6-Ⅰ型示教器操作与编程.ppt
  14. JavaScript的对象、属性与方法
  15. 一般空间曲线的旋转曲面、椭球面、单叶双曲面,双叶曲面
  16. 英特尔和amd学计算机,笔记本处理器intel和amd哪个好_有什么区别|性能对比-太平洋电脑网...
  17. ][互动大奖] Webby Awards 2012 第16届威比奖
  18. 服务器与云服务器租用有哪些区别呢?
  19. 如何使用Android原生接口,实现“应用双开”
  20. 2017年7月14日 星期五 --出埃及记 Exodus 28:5

热门文章

  1. 创建型设计模式(待更新)
  2. SSH新学,关于面向对象的看法
  3. Bursuite简单抓包改包发包__超详细步骤
  4. 数据结构课程设计--实验室设备管理系统(c语言)
  5. 微信热文捕手使用说明
  6. matlab simca,SIMCA软件|SIMCA-多元数据分析软件
  7. Git的4 个阶段的撤销更改(通俗易懂)
  8. java方法和数组的概念及法
  9. 笔记本ghostwin10系统后只有C盘了别的盘的数据怎样找到
  10. 【工具篇】Joystick Pack摇杆使用Unity多场景使用摇杆