git常见问题和高级用法

1.git pull时本地文件和服务器文件冲突解决方法(转)

http://blog.csdn.net/ican87/article/details/29869567

查看当前发送冲突的文件:

git status -uno

2.强制覆盖本地文件

 2.1 本地代码没有提交,也没有在缓冲区,出现错误:

bogon:protocol anthonyliu$ git pull

Updating 1f692a0..266b010

error: Your local changes to the following files would be overwritten by merge:

paycenterapi/gen-nodejs/BankCardService.js

Please commit your changes or stash them before you merge.

Aborting

bogon:protocol anthonyliu$ git checkout ./

bogon:protocol anthonyliu$ git pull

直接命令行: git chekout ./即可

 2.2 服务器代码覆盖本地

git reset --hard HASH       //返回到某个节点,不保留修改,本地修改的代码也会消失

git reset --soft HASH        //返回到某个节点,保留修改,本地修改的代码也会消失

3. souceTree对比和回滚

有个Compare,From branch1 To branch2 会列出两个分支不同的提交日志,而这些日志是branch2具备而branch1中不具备的。

回滚一个文件:

点击选中的提交日志,挑选1个提交,右击到“重置到提交”之后提交即可。结合beyond compare,可以对比不同分支的相同文件:安装也是非常的简单

4.gitingore不能忽略里面的文件夹是什么原因

参考链接:http://blog.csdn.net/zhangjs0322/article/details/37658669 

5.git rebase、merge等高级命令行的用法
git rebase 为衍生,有两个方面的作用,一个是合并多个提交记录合并成一个记录;另外一个是把一个分支中的提交记录赋值到另外一个分支中。
6.git  reset checkout revert的用法
   https://www.cnblogs.com/houpeiyong/p/5890748.html,在工作中仔细研究下。

回退某个文件到某个hash,git reset hash 文件名。注意:只会从当前的user.js从缓存区中移除出去,而不会影响工作目录中对user.js的更改。如下:

7. Please move or remove them before you can merge,出现以上的提示,删除本地引起冲突的文件即可

8 .查看文件的修改历史记录

git查看某个文件的修改历史,命令如下:

git log --pretty=oneline filename

输入上面命令后,会得到改文件修改历史的sha-1值,然后输入下面的命令查看具体修改了什么内容:

git show sha-1

9.从远程pull代码,显示错误:error: You have not concluded your merge (MERGE_HEAD exists)

错误是拉取的代码与本地合并发送冲突,如果你本地不知道修改了什么,不烦用远程直接覆盖本地:

$:git fetch --all
$:git reset --hard origin/master(你当前的分支)
$:git fetch

10.修改密码之后,sourceTree拉取代码会报错

在偏好设置中->高级->去掉修改密码的那个账号,重新拉取代码,输入新的密码即可。

省略输入密码:仓库-远程仓库,设置user:password@url即可

11. 推送代码出现:

   git push解决办法: ! [remote rejected] master -> master (pre-receive hook declined) 

   原因是推送的分支(master)收到保护,去掉保护即可。

12 撤销最近本地的一次commit

git reset --soft HEAD^
原文地址:https://www.cnblogs.com/liuyinlei/p/6393587.html