首页 > 代码库 > Git相关知识

Git相关知识

一些有用的链接:

https://www.git-scm.com/

http://nvie.com/posts/a-successful-git-branching-model/

 

Git开发模式:

技术分享

建议至少有一个master和develop分支。master只做版本维护工作,develop用于开发。开发完成且测试通过后合并到master。

 

常用场景:

  •  撤销提交到Remote的commit

如果你推送到remote的commit没有被其他人pull过,那么你可以使用

git reset --hard <commit-hash>
git push -f origin master (假定本地和远程都是对master进行操作)

来撤销之前提交的commit。

但是如果有其他人同步过你的push,那么你可以在本地使用revert来还原你提交的commit,然后生成一个新的commit然后再推送到远端。

注:如果Remote的commit不是非撤销不可,可以选择类似于修正bug的方式继续开发并推送更新的commit。

 

  • 删除Remote上不需要的分支

git push origin :<delete branch>

 

  • 本地回滚

主要的命令:git revert和git reset

git revert 是生成一个新的提交来撤销某次提交,此次提交之前的commit都会被保留,revert操作本身也会被记录。
git reset 是回到某次提交,提交及之前的commit都会被保留,但是此次之后的修改都会被退回到暂存区(视情况而定)。该操作本身不会被记录。

  --soft 只有commit被回滚,index及内容不变

  --mixed commit和index都被回滚,内容不变

  --hard commit和index都被回滚,内容被重置,之后的内容无法找回

 

 

可能的问题:

  • git status/add中文乱码

情景:

使用git add添加文件或者使用git status查看状态时,中文文件名会显示形如274\232\350\256\256\346\200\273\347\273\223.png 的乱码
解决方案:
git config --global core.quotepath false

参考链接:http://zengrong.net/post/1249.htm

 

  • Adding a new SSH key to the ssh-agent

参考链接:https://help.github.com/articles/adding-a-new-ssh-key-to-the-ssh-agent

 

Git相关知识