git常见问题处理

来源:互联网 发布:淘宝标题优化时间 编辑:程序博客网 时间:2024/04/30 00:17

1. 撤销本地修改了的文件

git checkout file


2. 当本地add了但未提交,如何撤销. 即已经git add 了,然后不想提交了

git reset file  # 先从暂存区恢复

git checkout file #


如果commit了,删除commit的文件

方法: 

    git reset --hard <commit_id>
    git push origin HEAD --force

其他:
    根据–soft –mixed –hard,会对working tree和index和HEAD进行重置:
    git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息
    git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
    git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容


3. 未开发完成时,为不影响其他人, 本地多次commit,最后做好后一次push

4. 本地修改了,想pull服务器代码,但此时有与远程修改相同文件而产生冲突时, 可以先commit本地文件,但不push,然后pull后合并,有冲突解决冲突,继续开发


5. 本地修改的文件希望分成两个或多个commit

git add -p file

一般情况下,创建一个基于特性的提交是比较好的做法,意思是每次提交都必须代表一个新特性的产生或者是一个bug的修复。如果你修复了两个bug,或是添加了多个新特性但是却没有提交这些变化会怎样呢?在这种情况下,你可以把这些变化放在一次提交中。但更好的方法是把文件暂存(Stage)然后分别提交。

例如你对一个文件进行了多次修改并且想把他们分别提交。这种情况下,你可以在 add 命令中加上 -p 参数


  • 输入 y 来暂存该块

  • 输入 n 不暂存

  • 输入 e 手工编辑该块

  • 输入 d 退出或者转到下一个文件

  • 输入 s 来分割该块

6. stash 未提交的更改

你正在修改某个bug或者某个特性,又突然被要求展示你的工作。而你现在所做的工作还不足以提交,这个阶段你还无法进行展示(不能回到更改之前)。在这种情况下, git stash可以帮助你。stash在本质上会取走所有的变更并存储它们为以备将来使用。stash你的变更,你只需简单地运行下面的命令-

1
git stash

希望检查stash列表,你可以运行下面的命令:

?
1
git stash list

Stash list

如果你想要解除stash并且恢复未提交的变更,你可以进行apply stash:

?
1
git stash apply

在屏幕截图中,你可以看到每个stash都有一个标识符,一个唯一的号码(尽管在这种情况下我们只有一个stash)。如果你只想留有余地进行apply stash,你应该给apply添加特定的标识符


7. cherry-pick  把一个分支的commit合入另一个分支,而不是把所有分支合并

简而言之,cherry-pick就是从不同的分支中捡出一个单独的commit,并把它和你当前的分支合并。如果你以并行方式在处理两个或以上分支,你可能会发现一个在全部分支中都有的bug。如果你在一个分支中解决了它,你可以使用cherry-pick命令把它commit到其它分支上去,而不会弄乱其他的文件或commit。

让我们来设想一个用得着它的场景。我现在有两个分支,并且我想cherry-pick b20fd14: Cleaned junk 这个commit到另一个上面去

git cherry-pick [commit_hash]

8. git 流程图


0 0
原创粉丝点击