社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

Stata与GitHub交互

连享会 • 1 年前 • 319 次点击  

👇 连享会 · 推文导航 | www.lianxh.cn

连享会课程 · 2024 面板数据因果推断

作者:王萃芳 (东北财经大学)
邮箱:wcfsophia@26.com

编者按:本文主要摘译自下文,特此致谢!
Source:Asjad Naqvi, 2022, Blog, Stata and GitHub Integration. -Link-

温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:


目录

  • 1. GitHub 简介

  • 2. 在桌面上设置 GitHub

  • 3. 如何执行 Git 命令

  • 4. Stata 和 GitHub 的交互

    • 4.1 第一次安装 GitHub

    • 4.2 同步 GitHub 上的所有文件

  • 5. 相关推文



GitHub 是一个版本控制和协作的代码托管平台。无论你和同伴身处何地,它都可以让你们一起合作开发项目。此外,在 GitHub 上,人们还可以关注其他代码开发项目、访问数据集并使用一整套能够展示代码功能的语言建立交互式网站。它的一个优点是所有这些都是免费的。

鉴于 GitHub 的重要性,本文旨在介绍如何在 Stata 中使用 Git 语言来同步 GitHub 的文件。

1. GitHub 简介

打开 https://github.com/ 这个网址,第一步设置一个 GitHub 帐户。登录后,需要通过单击 + 号或 New 图标来设置新存储库。

然后进行如下填写,你可以对它进行任意的描述和定义,同时保持你的储存库是公开状态。

当点击 Create repository 后,会出现如下情形。

在这里您可以看到您的文件夹的 url,例如 https://github//.git。下面是一堆 git 我们需要开始的命令。如果需要,可以将这些复制到某处。在 GitHub 中我们应该创建一个 README.md 文件。事实上,如果没有这个文件,就看不到文件夹的内容。我们没有在前面的步骤中检查 README.md选项,但我们将会在 Stata 中设置它。

2. 在桌面上设置 GitHub

虽然 GitHub 允许人们使用交互式界面来添加和修改基本内容,但有些事情不能在线完成。例如,不能在线删除文件。此外,如果您有几十个文件要在不同的文件夹中同步,那么通过拖放手动完成所有这些操作是相当麻烦的。

所以我们需要在计算机上进行本地设置,使其可以 同步或推送本地文件到在线 GitHub 文件夹。这里也可以根据要同步的文件夹在本地做一些版本控制。同步文件夹的一种方法是使用「GitHub Desktop 应用程序」。

安装并打开此程序后,你可以登录到 GitHub 帐户并复制或克隆在线存储库。如果在本地文件夹中进行任何更改,例如更改 README.md 文件,或在方案里添加新内容,可以看到下面显示旧版本和新版本的比较。完成后,可以按 Commit to main 图标。

在这里,你可以在屏幕截图中看到我更新了 README.md 文件。它展示了旧版本和新版本的比较。我还对方案文件进行了一些小修复。由于这些都是重大变化,我需要为此上传一个版本名称。完成后,我可以按 Commit to main 图标。就会出现如下情况:

现在,如果按下 Push origin,我的文件将在 GitHub 服务器上同步。可以对在线存储库进行刷新,这里版本的名称和更改时间都显示在在线存储库中:

这是将文件从桌面同步到在线存储库的一种方式,将粘贴内容复制到本地 GitHub 桌面文件夹并同步。回到当前问题,这里的目的不是讨论 GitHub 桌面应用程序,而是展示从桌面到 GitHub 的同步,并引入一些术语。

👉  连享会 · 2022 面板数据因果推断专题课程
👇  点击下方海报可了解课程详情!

3. 如何执行 Git 命令

Git 的核心本质是基于语法的。这意味着我们可以在 DOS shell 中输入命令,并将信息直接推送到 GitHub。要开始使用 git,我们需要安装另一个软件 Git。安装后,计算机会多三个软件:

这三个文件分别是 Git GUI、Git CMD 和 Git Bash。这里重要的是 Git 命令现在可以在 Windows shell 上使用。在这里,你可以通过单击 Git CMD 或 Git Bash 访问 shell,或者转到 Windows 搜索并键入cmd powershell

打开 PowerShell 输入 "git" 并按回车,将获得一长串可以使用的命令:

这些命令允许我们从任何软件调用 shell 并从该软件推送 git 代码。接下来,我们将会介绍如何在 Stata 中进行这些操作。

4. Stata 和 GitHub 的交互

Stata 具有调用 windows shell 的内置功能。如果我们在 Stata 中输入:

help shell

此时会出现 shell 命令的帮助文件,它显示了 Stata 如何与各种操作系统交互:

这是一个非常强大的工具,它允许人们在 Stata 环境之外创建、修改和删除文件。shell 可以通过输入 shell 来调用,也可以使用!首先,我们从创建一个虚拟项目文件夹开始:

这里我们假设有三个子文件夹:data 包含数据,dofiles 包含 Stata 脚本,figures 包含图形等。重要的是我们知道根文件夹的路径。我按如下方式启动 dofile:

clear
cap cd "D:/Programs/Dropbox/Dropbox/STATA-MEDIUM/graphs/github"

我们可以在上面的 dofile 文件夹中将这个 dofile 保存为 setup.do。我们还可以加载 COVID-19 数据并将其保存在数据文件夹中:

************************
*** COVID 19 data ***
************************

insheet using "https://covid.ourworldindata.org/data/owid-covid-data.csv", clear
gen date2 = date(date, "YMD")
format date2 %tdDD-Mon-yy
drop date
ren date2 date

ren location country
replace country = "Slovak Republic" if country == "Slovakia"
replace country = "Czech Republic" if country == "Czechia"
replace country = "Kyrgyz Republic" if country == "Kyrgyzstan"
replace country = "Macedonia" if country == "North Macedonia"
drop if date < 21915
save "./data/OWID_data.dta", replace

**********************************
*** Country classifications ***
**********************************

copy "https://github.com/asjadnaqvi/COVID19-Stata-Tutorials/blob/master/master/country_codes.dta?raw=true" ///
"./data/country_codes.dta", replace

现在我们可以生成清理数据了。具体操作如下:

use "./data/OWID_data.dta", clear
merge m:1 country using "./data/country_codes.dta"
drop if _m!=3
keep country date new_cases new_deaths group*

summ date
drop if date>=r(max) - 2

gen region = .

replace region = 1 if group29==1 & country=="United States" // North America
replace region = 2 if group29==1 & country!="United States" // North America
replace region = 3 if group20==1 & country=="Brazil" // Latin America and Carribean
replace region = 4 if group20==1 & country!="Brazil" // Latin America and Carribean
replace region = 5 if group10==1 & country=="Germany" // Germany
replace region = 6 if group10==1 & country!="Germany" // Rest of EU
replace region = 7 if group8==1 & group10!=1 & country=="United Kingdom" // Rest of Europe and Central Asia
replace region = 8 if group8==1 & group10!=1 & country!="United Kingdom" // Rest of Europe and Central Asia
replace region = 9 if group26==1 // MENA
replace region = 10 if group37==1 // Sub-saharan Africa
replace region = 11 if group35==1 & country=="India" // South Asia
replace region = 12 if group35==1 & country!="India" // South Asia
replace region = 13 if group6==1 // East Asia and Pacific

lab de region 1 "United States" 2 "Rest of North America" 3 "Brazil" 4 "Rest of Latin America" ///
5 "Germany" 6 "Rest of European Union" 7 "United Kingdom" 8 "Rest of Europe" ///
9 "MENA" 10 "Sub-Saharan Africa" 11 "India" 12 "Rest of South Asia" 13 "East Asia and Pacific"

lab val region region
collapse (sum) new_cases new_deaths, by(date region)

xtset region date
tssmooth ma new_cases_ma7 = new_cases , w(6 1 0)
tssmooth ma new_deaths_ma7 = new_deaths , w(6 1 0)

format date %tdDD-Mon-YY
format new_cases %9.0fc

生成一些基本图表:

set scheme black_w3d
graph set window fontface "Arial Narrow"

xtline new_deaths_ma7, overlay xtitle("") ytitle("New deaths (7 day M-A)") ///
graph export ./figures/region_deaths.png, replace wid(1000)

xtline new_cases_ma7, overlay xtitle("") ytitle("New cases (7 day M-A)") ///
graph export ./figures/region_cases.png, replace wid(1000)

twoway (scatter new_deaths_ma7 new_cases_ma7, mc(%10) ms(vsmall)), ///
xtitle("New deaths (7 day M-A)") ytitle("New cases (7 day M-A)")
graph export ./figures/scatter_cases_deaths.png, replace wid(1000)

twoway (scatter new_cases_ma7 new_deaths_ma7, mc(pink%10) ms(vsmall)), ///
xtitle("New cases (7 day M-A)") ytitle("New deaths (7 day M-A)")
graph export ./figures/scatter_deaths_cases.png, replace wid(1000)

它将这四个图形保存在图形目录中:

现在文件夹中已经放置了我们需要的文件,接着准备将这些推送到 GitHub。

4.1 第一次安装 GitHub

在这里,我们回到 GitHub 简介那里:

由于我们已经安装了 Git,我们现在也可以在 Stata 中使用这些命令了。首先,我们需要确保我们在正确的目录中。您可以通过键入以下内容进行检查:

dir  // for Windows
ls // for Mac and Unix

这个命令会显示现在工作夹的目录。如果在代码中切换到某些子文件夹,只需确保你位于要同步的根文件夹中。接下来我们需要使用一堆 Git 命令。这是一份官方备忘单,可帮助你入门:https://training.github.com/downloads/github-git-cheat-sheet.pdf。

如果是第一次使用这个,则需要生成 README.md 文件,在线指向该文件夹,并连接它。我们使用以下步骤执行此操作。使用以下命令生成 README.md 文件:

! echo # github-tutorial  >> README.md

操作符 # 表示自述文件的标题是 "github-tutorial"。在 Stata 中,不要将 # 和标题括在双引号中,而应该使用单引号中。接下来我们初始化 Git 代码:

! git init

这两个命令应该创建 README.md 文件并将这个隐藏的 .git 目录创建到你的文件夹中:

两者对于你的文件夹正确在线同步都是必不可少的。接下来我们添加 README.md 文件并提交它:

! **git add** README.md
! **git commit** -m 'my first upload'

在提交命令中,我们还需要添加一个小描述。描述越准确,版本控制越好。例如,这可以是 "v1.015 added on 26042021" 之类的内容。接下来我们定义要添加此文件的目录:

! git remote add origin **https://github.com/asjadnaqvi/github-tutorial.git

该路径正是出现在您上面的 GitHub 设置页面上的路径。然后我们将这些更改推送到目录:

! git push -u origin main

最后两个命令是要记住的关键命令。在某些时候,你将被要求登录并使用 GitHub 对应用程序进行身份验证,以使其访问你的帐户:

完成后,你的 README.md 应该会出现在网站上:

4.2 同步 GitHub 上的所有文件

创建 README.md 文件后,可以在任何文本编辑器中对其进行修改。这里用的是 Notepad++

我们还需要添加剩余的文件夹及其内容。使用命令 shell 提示符和下面的一组基本命令可以完成这些操作。

git remote add origin "https://github.com/asjadnaqvi/github-tutorial.git"git status
git add --all
git commit -m "minor fixes"
git push

在 Stata 中,我们遇到了一个技术问题。每次我们使用 !shell 调用 DOS shell 时,都会执行并关闭实例。对于 git,我们需要确保所有命令在同一个实例中运行,因为每个命令都存储有关要同步什么、如何同步以及如何处理版本控制的新信息。随着人们朝着更高级的同步发展,也可以添加各种命令。

为了规避这个批处理命令问题,我们回到 DOS 功能的基础。在这里,我们可以定义一个 DOS 批处理文件或 .bat 文件,其中包含许多不同的基于语法的命令。我们可以在 Stata 中编写这个批处理文件,也可以在 Stata 中使用 shell 命令执行它。

首先,让我们使用 file (参见 help file) 命令来编写批处理文件:

file close _all

file open git using mygit.bat, write replace

file write git "git remote add origin " `"""' "https://github.com/asjadnaqvi/github-tutorial.git" `"""' _n
file write git "git add --all" _n
file write git "git commit -m "
file write git `"""' "minor fixes" `"""' _n
file write git "git push" _n

file close git

我们关闭所有打开的文件 (也适用于 Stata 日志)。然后,我们打开一个名为 mygit.bat 的新批处理文件。这只是一个参考名称,以防打开多个文本文件。然后,作者编写了一堆想要运行的 git 语法。完成所有命令后,关闭 git 文件。我们还可以在文本编辑器中查看 mygit.bat 文件。它只是我们想要按顺序运行的一堆 git 命令:

可以在 Stata 中执行 mygit.bat 文件,只需输入:



    
! mygit.bat

就可以看到如下同步的样式:

在操作成功后,更改也会显示在 GitHub 上。我们也可以使用 git 命令来拉取、合并、删除、修改文件。Git 非常广泛,本文只是一个介绍,如果你有其他建议、意见和反馈,可以与我们分享。

5. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh github, m
安装最新版 lianxh 命令:
ssc install lianxh, replace

  • 专题:Stata命令
    • GitHub中最受欢迎的Stata仓库
    • 如何通过-GitHub-发布自己的-Stata-命令?
  • 专题:Stata资源
    • Github使用方法及Stata资源
  • 专题:工具软件
    • 如何搭建个人主页-GitHub / Gitee

课程推荐:CGE 专题 - 理论与实操
主讲老师:贾智杰 (西安交通大学)
课程时间:2024 年 4 月 13/20/27 日 (三个周六)
🍓 课程主页:https://www.lianxh.cn

New! Stata 搜索神器:lianxh 和 songbl  GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
  . ssc install lianxh
  . ssc install songbl
👉  使用:
  . lianxh DID 倍分法
  . songbl all

🍏 关于我们

  • 连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 直通车: 👉【百度一下: 连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。



Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/167486
 
319 次点击