目录
Git和GibHub使用指南
参考:
(注意自2020年10月起GitHub的默认分支名称从master改为main。)
建库,安装本地工具
在GitHub网站建立仓库。网址: GitHub
在本地电脑安装Git。下载网址: Git Downloads
特别注意:CRLF设定
MT4和MT5的代码文件默认编码是UTF-16 LE,这将会使GitHub在代码提交时判定mq4、mq5、mqh是二进制文件,导致无法在GitHub阅读代码、无法进行diff比较。
解决办法:
1,把Git的CRLF自动变换设定为false。方法有三,哪个都行:
安装Git客户端时,指定改行变换为Checkout as-is, commit as-is 在Git Bash执行:git config --global core.autocrlf false 修改Git配置文件~/.ginconfig:autocrlf = false
2,新建MT4和MT5代码文件时,把编码改为UTF-8。
备注:经测试,包含中文的代码文件改为GB2312编码提交,包含日语的代码文件改为Shift-JIS编码提交,即使CRLF自动变换设定为true,也可以正常提交。但是GB2312和Shift-JIS编码文件阅读不便,放弃这个方案。
3,为mt4,mt5建立的库,只在windows系统编辑和提交。
初始化本地库(方案1 - 本地无文件需加入或合并)
文件管理器 - 右键点击准备存放库文件的上一级目录 - Git Bash Here.
然后执行clone:
git clone https://github.com/***/***.git
通过clone命令创建的本地仓库,其本身就是一个 Git 仓库了,无须再进行init初始化操作,而且自动关联远程仓库。
初始化本地库(方案2 - 本地有文件需加入或合并)
文件管理器 - 右键点击本地库根目录(与GitHub项目根目录对应) - Git Bash Here.
初始化本地库:
git init
关联远程仓库(GitHub上的库),其中origin为远程仓库的名字:
git remote add origin https://github.com/***/***.git
同步远程仓库和本地仓库:
git pull origin main
提交到本地库
使用git add和git commit命令,把指定文件夹(包含文件)或指定文件提交到本地库:
git add 文件夹or文件 git commit -m "注释"
如果是文件修改后的提交,使用git add -u命令,把修改内容提交到本地库:
git add -u 文件夹or文件 git commit -m "注释"
提交到远程仓库
使用git push命令,将本地仓库修改(或者添加)的内容提交到远程仓库,注意一定要先pull,再push,防止本地和远程有冲突:
git pull origin main git push origin main
撤销修改
情况1:还没将变更从工作区加入到暂存区(还没执行 git add)
撤销某个或者某几个文件的修改:
git checkout -- filename1 filename2
撤销所有文件的修改:
git checkout -- * 或: git checkout .
此命令不会删除掉刚新建的文件。因为刚新建的文件还没已有加入到 git 的管理系统中,所以对于git是未知的。
情况2:已将变更加入到暂存区(已经执行 git add)
撤销某个或者某几个文件的修改:
git reset HEAD filename1 filename2
撤销所有文件的修改:
git reset HEAD * 或: git reset HEAD .
要注意的是,执行以上命令后,本地的修改并不会消失,而只是从暂存区回到了工作区,即第一种情况下所示的状态。继续用第一种情况下的操作,就可以放弃本地的修改。
情况3:已将代码提交到本地仓库(已经执行 git commit)
此时工作区已经clean,若想撤销之前的修改,需要执行版本回退操作:
#回退到上一个版本 git reset --hard HEAD^ #回退到上上次版本 git reset --hard HEAD^^ git reset --hard HEAD^^^ #回退到指定commitid的版本 git reset --hard commit_id
可以使用 git log 或 git reflog 命令来查看git的提交历史,获取commit_id.
获取历史版本
先初始化本地库:
参考上方【初始化本地库】。
查看提交日志,每个提交放在一行显示,在浏览大量的提交时非常有用:
git log --pretty=oneline
指定某个ID取得对应的历史版本:
git checkout ID
其他命令
#查看状态 git status #查看提交日志 git log #查看分支 git branch