一、在git团队开发中,因为多人提交,经常会出现冲突的情况,处理冲突一般都以下方案:
(1)eclipse项目中,先把冲突的代码拷贝到桌面上,然后通过eclipse里面自带的还原工具将代码还原后更新服务器的版本下来,再合入自己的修改,此方法在维护版本中计较好用,但开发版本中,因为提交的文件多会增加很多的工作量。
(2)使用命令处理:git stash将修改存到缓冲区;git pull更新服务器提交;git stash pop将修改从缓冲区取出,并且新的文件git add一下,避免出现冲突符合,剩下的就是删除一些乱码报错的小问题。当前eclipse本事也有通过UI进行处理功能,想了解更多自己去探索吧。
二、生成差异文件
(1)没提交前使用git diff >a.diff保存文件即可
(2)提交后生成与上一记录差异文件
1)先git log 查看提交记录
2)git diff xxx(上一结点提交) >d.diff
修改最后一次提交注释的,利用–amend参数
git commit --amend
忘记提交某些修改,下面的三条命令只会得到一个提交。
-
git commit –m "add readme.txt"
-
git add readme_forgotten
-
git commit –amend
假设你已经使用git add .,将修改过的文件a、b加到暂存区
现在你只想提交a文件,不想提交b文件,应该这样
git reset HEAD b
取消对文件的修改
git checkout –- readme.txt
git commit后,如何撤销commit
修改了本地的代码,然后使用:
git add file
git commit -m '修改原因'
执行commit后,还没执行push时,想要撤销这次的commit,该怎么办?
解决方案:
使用命令:
git reset --soft HEAD^
这样就成功撤销了commit,如果想要连着add也撤销的话,--soft改为--hard(删除工作空间的改动代码)。
命令详解:
HEAD^ 表示上一个版本,即上一次的commit,也可以写成HEAD~1
如果进行两次的commit,想要都撤回,可以使用HEAD~2
--soft
不删除工作空间的改动代码 ,撤销commit,不撤销git add file
--hard
删除工作空间的改动代码,撤销commit且撤销add
另外一点,如果commit注释写错了,先要改一下注释,有其他方法也能实现,如:
git commit --amend
这时候会进入vim编辑器,修改完成你要的注释后保存即可
一不小心在eclipse的git库中执行了Reset Soft(HEAD ONLY)操作,不料界面中竟然没有找到撤销方法(于是心中五味俱全,经过一番折腾,无果还是回归Git本身),最终通过命令行,很快搞定撤销了,其实有2种方法可以还原。
方法一:
1.先通过git reflog找到上一次的历史提交记录id,git如果没有特意设置,是会保存记录一段时间的(a few days or a month)
2.git reset --hard [id]
方法二:
git reset --hard HEAD@{1}
直接回到刚才的那个结点,{}中表示的是结点的序号
推荐大家使用第一种,因为第一种更安全;不过我是结合了使用了他们:先使用第一种方法中reflog命令查看无误后使用第二种书写起来更简单的命令。
git add 如何撤销
git reset HEAD
repo forall可以遍历每个repo仓库并执行同样的命令
在大系统仓库代码统一切到某个分支:repo forall -c 'pwd && git checkout -t remotes/sunniwell/develop_tc'