用户工具

站点工具


dev:git_github

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
dev/git_github.txt · 最后更改: 2022/11/01 21:19 由 admin