git工作中常见问题解决方法

前言:git是一个非常伟大的工具,这篇博客将从实际工作场景遇到的问题出发,运用git解决实际问题,同时配上图文,力求作为一个最好的git参考博客!(每日更新一个情景)

情景一:清除工作区untracked files (2018.6.19)

情景 :源码的开发过程中,某一个项目git仓库中经常会出现一些untracked files,这些文件是git仓库没有管理的,需要清理掉。使用git status查看有两个文件没有被git管理:

On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

    Test.md
    Test2.md

解决方法:

git clean -df //清除当前目录下所有git仓库没有管理的文件或目录
git clean -df 文件路径 //指定清除git仓库中没有管理的文件或目录

清除完成后使用 git status查看,两个untacking file 被删除了:

On branch master
nothing to commit, working tree clean

情景二:暂存区回退到工作区(2018.6.20)

情景:有的时候我们需要把提交到暂存区的文件回退到工作区中。使用git status查看 Test文件现在存在于暂存区中,我们希望把Test回退到工作区中:

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

    new file:   Test

操作:

git已经智能的提示我们使用git reset HEAD <file>...来让暂存区文件回退到工作区。
git reset HEAD 文件路径 //回退指定的文件到工作区
例如: git reset HEAD Test

再次查看git仓库状态,文件处于工作区了:

On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

    Test

情景三:打patch(2018.6.21)

情景:团队开发中,自己本地修改了一些代码,还没有验证是否正确,此时不能往git服务器去推送。恰好同事也在跟这个问题,他希望在我的基础上进行追踪,希望我把我已经修改的代码给他。这个时候我可以通过打patch的方式实现。
操作:

生成patch1>首先将自己的修改的代码本地进行提交即commit
2>git format-patch <指定的commitId>//注意生成的patch是这个commitId以上的提交

比如有三个commitId: ac4f6d -- bcef67 -- adfc34
执行git format-patch adfc34 就会生成两个patch
第一个patch是 bcef67 -- adfc34 这两次提交的差异文件
第二个patch是 ac4f6d -- bcef67 这两次提交的差异文件

所以打patch就是生成提交之间的差异文件

应用patch:
git am 指定的patch

猜你喜欢

转载自blog.csdn.net/txksnail/article/details/80740259