====== Git和GibHub使用指南 ====== 参考: * [[https://zhuanlan.zhihu.com/p/369486197 | 还不会使用 GitHub ? GitHub 教程来了!万字图文详解]] * [[https://blog.csdn.net/Q1761991696/article/details/123572766 | 如何使用.gitignore忽略Git中的文件和目录]] (注意自2020年10月起GitHub的默认分支名称从master改为main。) ===== 建库,安装本地工具 ===== 在GitHub网站建立仓库。网址:[[https://github.com/ | GitHub]] 在本地电脑安装Git。下载网址:[[https://git-scm.com/downloads | 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