美文网首页
Git常见的几种情况

Git常见的几种情况

作者: 冰滩波纹 | 来源:发表于2018-07-20 14:41 被阅读0次

1.取消已经暂存的文件

    接下来的两个小节将演示如何取消暂存区域中的文件,以及如何取消工作目录中已修改的文件。不用担心,查看文件状态的时候就提示了该如何撤消,所以不需要死记硬背。来看下面的例子,有两个修改过的文件,我们想要分开提交,但不小心用 git add .全加到了暂存区域。该如何撤消暂存其中的一个文件呢?其实,git status 的命令输出已经告诉了我们该怎么做:

$ git add .
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   README.txt
        modified:   benchmarks.rb

就在 “Changes to be committed” 下面,括号中有提示,可以使用 git reset HEAD <file>...的方式取消暂存。好吧,我们来试试取消暂存 benchmarks.rb 文件:

$ git reset HEAD benchmarks.rb
Unstaged changes after reset:
M       benchmarks.rb
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   README.txt

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   benchmarks.rb

2.取消对文件的修改

    如果觉得刚才对 benchmarks.rb 的修改完全没有必要,该如何取消修改,回到之前的状态(也就是修改之前的版本)呢?git status 同样提示了具体的撤消方法,接着上面的例子,现在未暂存区域看起来像这样:

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   benchmarks.rb

    在第二个括号中,我们看到了抛弃文件修改的命令(至少在 Git 1.6.1 以及更高版本中会这样提示,如果你还在用老版本,我们强烈建议你升级,以获取最佳的用户体验),让我们试试看:

$ git checkout -- benchmarks.rb
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   README.txt

    可以看到,该文件已经恢复到修改前的版本。你可能已经意识到了,这条命令有些危险,所有对文件的修改都没有了,因为我们刚刚把之前版本的文件复制过来重写了此文件。所以在用这条命令前,请务必确定真的不再需要保留刚才的修改。如果只是想回退版本,同时保留刚才的修改以便将来继续工作,可以用下章介绍的 stashing 和分支来处理,应该会更好些。
    记住,任何已经提交到 Git 的都可以被恢复。即便在已经删除的分支中的提交,或者用 --amend 重新改写的提交,都可以被恢复。所以,你可能失去的数据,仅限于没有提交过的,对 Git 来说它们就像从未存在过一样。

3.强制覆盖本地仓库

    在使用Git的过程中,有些时候我们只想要git服务器中的最新版本的项目,对于本地的项目中修改不做任何理会,就需要用到Git pull的强制覆盖,具体代码如下:

$ git fetch --all
$ git reset --hard origin/master 
$ git pull
git fetch 只是下载远程的库的内容,不做任何的合并
git reset 把HEAD指向刚刚下载的最新的版本

4.解决文件冲突

方法① git pull --rebase

git pull --rebase

方法② git stash

  • 先将本地修改存储起来
$ git stash

    这样本地的所有修改就都被暂时存储起来 。用git stash list可以看到保存的信息。其中stash@{0}就是刚才保存的标记。

  • 暂存了本地修改之后,就可以pull了。
$ git pull
  • 还原暂存的内容
$ git stash pop stash@{0}

系统提示如下类似的信息:

Auto-merging c/environ.c
CONFLICT (content): Merge conflict in c/environ.c

意思就是系统自动合并修改的内容,但是其中有冲突,需要解决其中的冲突。

  • 解决文件中冲突的的部分

打开冲突的文件,会看到类似如下的内容:
git冲突内容

其中Updated upstream 和=====之间的内容就是pull下来的内容,====和stashed changes之间的内容就是本地修改的内容。碰到这种情况,git也不知道哪行内容是需要的,所以要自行确定需要的内容。

解决完成之后,就可以正常的提交了。

git add .
git commit -m "注释"
git push -u origin master

相关文章

  • Git常见的几种情况

    1.取消已经暂存的文件     接下来的两个小节将演示如何取消暂存区域中的文件,以及如何取消工作目录中已修改的文件...

  • 常见的几种加密方法

    常见的几种加密方法和实 常见的几种加密方法 : git demo下载 csdn demo下载 MD5 SHA1 R...

  • Git误提交代码撤销方案

    Git 版本管理时,往往需要撤销某些操作。 本文介绍几种最主要的情况,给出详细的解释。 一、撤销提交 一种常见的场...

  • 程序crash常见几种情况

    访问了一个已经被释放的对象,比如:NSObject * aObj = [[NSObject alloc] init...

  • git撤销修改的几种情况

    1:撤销本地的修改 可使用git checkout -- filename git reset --hard 2:...

  • dispatch_sync 的分析

    dispatch_sync 函数同步任务处理函数,这里我将根据几种常见的情况来分析这个函数的运作机制,这几种情况分...

  • MGR节点加入的几种常见情况

    OS: CentOS Linux release 7.7.1908 (Core)DB version: 5.7....

  • Git 文件冲突合并的几种情况

    假设冲突文件是 index.html 下面分5种情况讨论。 1、本地不变。 然后远程别人有更新。git pull这...

  • 'git status' failed with code 12

    git status' failed with code 128:的错误情况有好几种,目前遇到过的如下: fata...

  • 离屏渲染的原理和分析

    1.常见触发离屏渲染的情况 在分析离屏渲染的原因之前先介绍几种常见的触发离屏渲染的情况 使⽤了 mask (遮罩...

网友评论

      本文标题:Git常见的几种情况

      本文链接:https://www.haomeiwen.com/subject/dgufmftx.html