<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://info.stat.cmu.edu/index.php?action=history&amp;feed=atom&amp;title=Overleaf_Git_Integration</id>
	<title>Overleaf Git Integration - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://info.stat.cmu.edu/index.php?action=history&amp;feed=atom&amp;title=Overleaf_Git_Integration"/>
	<link rel="alternate" type="text/html" href="https://info.stat.cmu.edu/index.php?title=Overleaf_Git_Integration&amp;action=history"/>
	<updated>2026-11-05T15:32:04Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://info.stat.cmu.edu/index.php?title=Overleaf_Git_Integration&amp;diff=1008&amp;oldid=prev</id>
		<title>Ajshen: /* Sending new results to the paper */</title>
		<link rel="alternate" type="text/html" href="https://info.stat.cmu.edu/index.php?title=Overleaf_Git_Integration&amp;diff=1008&amp;oldid=prev"/>
		<updated>2026-10-18T23:31:43Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Sending new results to the paper&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 23:31, 18 October 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l181&quot;&gt;Line 181:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 181:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;That&amp;#039;s it. Refresh the Overleaf editor and recompile, and the new figures are there.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;That&amp;#039;s it. Refresh the Overleaf editor and recompile, and the new figures are there.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;!-- SCREENSHOT: Overleaf file tree / editor right after a push, showing the updated figure (optionally with the History panel open). --&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[File:Overleaf-after-git-push.png|thumb|center|600px|Pushed figures appear in Overleaf immediately.]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div style=&amp;quot;background-color: #e8f4f8; border-left: 5px solid #17a2b8; padding: 15px; margin-bottom: 20px; margin-top: 15px; overflow: hidden;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div style=&amp;quot;background-color: #e8f4f8; border-left: 5px solid #17a2b8; padding: 15px; margin-bottom: 20px; margin-top: 15px; overflow: hidden;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key infowiki:diff:1.41:old-1007:rev-1008:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Ajshen</name></author>
	</entry>
	<entry>
		<id>https://info.stat.cmu.edu/index.php?title=Overleaf_Git_Integration&amp;diff=1007&amp;oldid=prev</id>
		<title>Ajshen: /* Step 3: Clone the paper inside your experiment repository */</title>
		<link rel="alternate" type="text/html" href="https://info.stat.cmu.edu/index.php?title=Overleaf_Git_Integration&amp;diff=1007&amp;oldid=prev"/>
		<updated>2026-10-18T23:30:44Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Step 3: Clone the paper inside your experiment repository&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 23:30, 18 October 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l97&quot;&gt;Line 97:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 97:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;!-- SCREENSHOT: Terminal showing both `git status` outputs (outer repo clean, inner repo on master). --&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[File:Nested-clone-git-status.png|thumb|center|600px|The outer repository ignores &amp;lt;code&amp;gt;paper/&amp;lt;/code&amp;gt;; the inner repository is independent.]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div style=&amp;quot;background-color: #f8d7da; border-left: 5px solid #721c24; padding: 15px; margin-bottom: 20px; margin-top: 15px; overflow: hidden;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div style=&amp;quot;background-color: #f8d7da; border-left: 5px solid #721c24; padding: 15px; margin-bottom: 20px; margin-top: 15px; overflow: hidden;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key infowiki:diff:1.41:old-1006:rev-1007:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Ajshen</name></author>
	</entry>
	<entry>
		<id>https://info.stat.cmu.edu/index.php?title=Overleaf_Git_Integration&amp;diff=1006&amp;oldid=prev</id>
		<title>Ajshen: /* Step 2: Find your project&#039;s clone URL */</title>
		<link rel="alternate" type="text/html" href="https://info.stat.cmu.edu/index.php?title=Overleaf_Git_Integration&amp;diff=1006&amp;oldid=prev"/>
		<updated>2026-10-18T23:29:58Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Step 2: Find your project&amp;#039;s clone URL&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 23:29, 18 October 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l75&quot;&gt;Line 75:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 75:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;!-- SCREENSHOT: Overleaf project Menu, with the &amp;quot;Sync → Git&amp;quot; entry highlighted. --&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;!-- SCREENSHOT: Overleaf project Menu, with the &amp;quot;Sync → Git&amp;quot; entry highlighted. --&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:Overleaf-menu-sync-git.png|thumb|center|300px|The Git entry in the Overleaf project menu.]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:Overleaf-menu-sync-git.png|thumb|center|300px|The Git entry in the Overleaf project menu.]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;!-- SCREENSHOT: The Git dialog showing the clone command (blur or crop the project ID if you prefer). --&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[File:Overleaf-git-clone-url.png|thumb|center|500px|The project&#039;s Git clone URL.]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Step 3: Clone the paper inside your experiment repository ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Step 3: Clone the paper inside your experiment repository ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key infowiki:diff:1.41:old-1002:rev-1006:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Ajshen</name></author>
	</entry>
	<entry>
		<id>https://info.stat.cmu.edu/index.php?title=Overleaf_Git_Integration&amp;diff=1002&amp;oldid=prev</id>
		<title>Ajshen: Ajshen moved page Overleaf GitHub Integration to Overleaf Git Integration</title>
		<link rel="alternate" type="text/html" href="https://info.stat.cmu.edu/index.php?title=Overleaf_Git_Integration&amp;diff=1002&amp;oldid=prev"/>
		<updated>2026-10-18T23:27:23Z</updated>

		<summary type="html">&lt;p&gt;Ajshen moved page &lt;a href=&quot;/index.php?title=Overleaf_GitHub_Integration&quot; class=&quot;mw-redirect&quot; title=&quot;Overleaf GitHub Integration&quot;&gt;Overleaf GitHub Integration&lt;/a&gt; to &lt;a href=&quot;/index.php?title=Overleaf_Git_Integration&quot; title=&quot;Overleaf Git Integration&quot;&gt;Overleaf Git Integration&lt;/a&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 23:27, 18 October 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key infowiki:diff:1.41:old-1000:rev-1002 --&gt;
&lt;/table&gt;</summary>
		<author><name>Ajshen</name></author>
	</entry>
	<entry>
		<id>https://info.stat.cmu.edu/index.php?title=Overleaf_Git_Integration&amp;diff=1000&amp;oldid=prev</id>
		<title>Ajshen at 23:24, 18 October 2026</title>
		<link rel="alternate" type="text/html" href="https://info.stat.cmu.edu/index.php?title=Overleaf_Git_Integration&amp;diff=1000&amp;oldid=prev"/>
		<updated>2026-10-18T23:24:07Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://info.stat.cmu.edu/index.php?title=Overleaf_Git_Integration&amp;amp;diff=1000&amp;amp;oldid=999&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Ajshen</name></author>
	</entry>
	<entry>
		<id>https://info.stat.cmu.edu/index.php?title=Overleaf_Git_Integration&amp;diff=999&amp;oldid=prev</id>
		<title>Ajshen: /* Step 1: Link Overleaf to GitHub */</title>
		<link rel="alternate" type="text/html" href="https://info.stat.cmu.edu/index.php?title=Overleaf_Git_Integration&amp;diff=999&amp;oldid=prev"/>
		<updated>2026-10-18T23:23:52Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Step 1: Link Overleaf to GitHub&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 23:23, 18 October 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l62&quot;&gt;Line 62:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 62:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Step 1: Link Overleaf to GitHub ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Step 1: Link Overleaf to GitHub ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In Overleaf, open &#039;&#039;&#039;Account Settings&#039;&#039;&#039; and find the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;GitHub &lt;/del&gt;entry under the project synchronization section. Click &#039;&#039;&#039;Link&#039;&#039;&#039; and &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;authorize Overleaf &lt;/del&gt;in the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;GitHub dialog &lt;/del&gt;that pops up.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In Overleaf, open &#039;&#039;&#039;Account Settings&#039;&#039;&#039; and find the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Git &lt;/ins&gt;entry under the project synchronization section. Click &#039;&#039;&#039;Link&#039;&#039;&#039; and &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;set up access &lt;/ins&gt;in the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;dialogue &lt;/ins&gt;that pops up.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;!-- SCREENSHOT: Overleaf Account Settings page with the GitHub &amp;quot;Link&amp;quot; button visible. --&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;!-- SCREENSHOT: Overleaf Account Settings page with the GitHub &amp;quot;Link&amp;quot; button visible. --&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key infowiki:diff:1.41:old-984:rev-999:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Ajshen</name></author>
	</entry>
	<entry>
		<id>https://info.stat.cmu.edu/index.php?title=Overleaf_Git_Integration&amp;diff=984&amp;oldid=prev</id>
		<title>Ajshen: Created page with &quot;&lt;!-- TODO: set the category (and sort key) to match where this article lives in the wiki --&gt; XX  If your experiment code lives in a GitHub repository and your paper lives on Overleaf, you have probably done &#039;&#039;&#039;the upload dance&#039;&#039;&#039;: rerun an experiment, hunt down the regenerated figure on disk, open Overleaf, delete the old file, upload the new one, and repeat for every figure and table that changed. It is slow, it is easy to le...&quot;</title>
		<link rel="alternate" type="text/html" href="https://info.stat.cmu.edu/index.php?title=Overleaf_Git_Integration&amp;diff=984&amp;oldid=prev"/>
		<updated>2026-10-18T22:51:47Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;lt;!-- TODO: set the category (and sort key) to match where this article lives in the wiki --&amp;gt; &lt;a href=&quot;/index.php?title=Category:Beginner%27s_Guide_Implementation&quot; title=&quot;Category:Beginner&amp;#039;s Guide Implementation&quot;&gt;XX&lt;/a&gt;  If your experiment code lives in a GitHub repository and your paper lives on Overleaf, you have probably done &amp;#039;&amp;#039;&amp;#039;the upload dance&amp;#039;&amp;#039;&amp;#039;: rerun an experiment, hunt down the regenerated figure on disk, open Overleaf, delete the old file, upload the new one, and repeat for every figure and table that changed. It is slow, it is easy to le...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;!-- TODO: set the category (and sort key) to match where this article lives in the wiki --&amp;gt;&lt;br /&gt;
[[Category:Beginner&amp;#039;s_Guide_Implementation|XX]]&lt;br /&gt;
&lt;br /&gt;
If your experiment code lives in a GitHub repository and your paper lives on Overleaf, you have probably done &amp;#039;&amp;#039;&amp;#039;the upload dance&amp;#039;&amp;#039;&amp;#039;: rerun an experiment, hunt down the regenerated figure on disk, open Overleaf, delete the old file, upload the new one, and repeat for every figure and table that changed. It is slow, it is easy to leave a stale figure behind, and it leaves no record of which version of your code produced which figure in the paper.&lt;br /&gt;
&lt;br /&gt;
Overleaf Premium&amp;#039;s &amp;#039;&amp;#039;&amp;#039;GitHub Synchronization&amp;#039;&amp;#039;&amp;#039; feature removes most of this busywork. This article describes one particular way to use it: cloning the paper&amp;#039;s repository &amp;#039;&amp;#039;&amp;#039;inside&amp;#039;&amp;#039;&amp;#039; your experiment repository, in a directory that the experiment repository ignores. Your analysis scripts then write figures and tables straight into the paper, and a single push sends them to Overleaf.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #e8f4f8; border-left: 5px solid #17a2b8; padding: 15px; margin-bottom: 20px; margin-top: 15px; overflow: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Important: Overleaf Premium is required&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
GitHub Synchronization is a paid Overleaf feature. Check whether you already have access through an institutional license before paying for it yourself. If you don&amp;#039;t use Git yet, read up on the basics first, since this workflow assumes you are comfortable with &amp;lt;code&amp;gt;clone&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;commit&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;push&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;pull&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How It Works ==&lt;br /&gt;
There are several ways to connect a code repository to an Overleaf project. In this one, the two repositories stay &amp;#039;&amp;#039;&amp;#039;completely independent&amp;#039;&amp;#039;&amp;#039;. The paper repository is cloned into a subdirectory (here called &amp;lt;code&amp;gt;paper/&amp;lt;/code&amp;gt;), and that subdirectory is listed in the experiment repository&amp;#039;s &amp;lt;code&amp;gt;.gitignore&amp;lt;/code&amp;gt;. The experiment repository never records anything about the paper, and the paper repository never sees your experimental code. Your scripts simply write files into a folder that happens to be a different Git repository.&lt;br /&gt;
&lt;br /&gt;
The final layout looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
my-experiments/                 ← experiment repo (github.com/you/my-experiments)&lt;br /&gt;
├── .gitignore                  ← contains &amp;quot;paper/&amp;quot;&lt;br /&gt;
├── src/&lt;br /&gt;
├── scripts/&lt;br /&gt;
│   └── make_figures.py         ← writes into paper/figures and paper/tables&lt;br /&gt;
├── Makefile&lt;br /&gt;
└── paper/                      ← SEPARATE git repo, ignored by the outer repo&lt;br /&gt;
    ├── .git/                   ← points to github.com/you/my-paper&lt;br /&gt;
    ├── main.tex&lt;br /&gt;
    ├── refs.bib&lt;br /&gt;
    ├── figures/                ← written by code&lt;br /&gt;
    │   └── coverage.pdf&lt;br /&gt;
    └── tables/                 ← written by code&lt;br /&gt;
        └── results.tex&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Generated figures and tables flow from your code to Overleaf, and prose written on Overleaf flows back to your local copy:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scripts/make_figures.py ──writes──▶ paper/figures, paper/tables&lt;br /&gt;
paper/   ──git push──▶  GitHub (my-paper)  ──&amp;quot;Pull GitHub changes&amp;quot;──▶  Overleaf&lt;br /&gt;
Overleaf ──&amp;quot;Push Overleaf changes&amp;quot;──▶  GitHub (my-paper)  ──git pull──▶  paper/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width: 100%; border-collapse: collapse; margin-bottom: 10px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 50%; background-color: #d4edda; color: #155724; padding: 10px; text-align: left;&amp;quot; | Strengths&lt;br /&gt;
! style=&amp;quot;width: 50%; background-color: #f8d7da; color: #721c24; padding: 10px; text-align: left;&amp;quot; | Weaknesses&lt;br /&gt;
|- style=&amp;quot;vertical-align: top; background-color: #f8f9fa;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding: 15px; border-right: 2px solid white;&amp;quot; |&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;No More Uploading:&amp;#039;&amp;#039;&amp;#039; Regenerated figures and tables reach the paper with one commit and one push, no manual file shuffling required.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Clean Histories:&amp;#039;&amp;#039;&amp;#039; Paper edits never clutter your code history, and code changes never clutter your paper history.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;No Coupled Tracking:&amp;#039;&amp;#039;&amp;#039; Unlike git submodules, you never need an extra &amp;quot;update the paper pointer&amp;quot; commit in your experiment repository every time the paper changes.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Collaborator Friendly:&amp;#039;&amp;#039;&amp;#039; Co-authors can keep writing on Overleaf as usual. Nothing about their workflow changes.&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot; |&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Sync Is Manual:&amp;#039;&amp;#039;&amp;#039; Overleaf does not watch GitHub. Someone has to click a button in Overleaf to pull new changes in (and to push Overleaf edits out).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Provenance Is Up to You:&amp;#039;&amp;#039;&amp;#039; Because the repositories are not linked, the only record of which code produced a figure is whatever you write in the paper&amp;#039;s commit messages. A small script (below) handles this for you.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;One More Thing to Clone:&amp;#039;&amp;#039;&amp;#039; Anyone who wants to regenerate the paper&amp;#039;s figures needs to clone the paper repository separately.&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color: #e9ecef; text-align: center; padding: 10px;&amp;quot; | 🔗 &amp;#039;&amp;#039;&amp;#039;[https://www.overleaf.com/learn/how-to/GitHub_Synchronization Overleaf Documentation: GitHub Synchronization]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Setting It Up ==&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Link Overleaf to GitHub ===&lt;br /&gt;
In Overleaf, open &amp;#039;&amp;#039;&amp;#039;Account Settings&amp;#039;&amp;#039;&amp;#039; and find the GitHub entry under the project synchronization section. Click &amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039; and authorize Overleaf in the GitHub dialog that pops up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- SCREENSHOT: Overleaf Account Settings page with the GitHub &amp;quot;Link&amp;quot; button visible. --&amp;gt;&lt;br /&gt;
[[File:Overleaf-account-settings-github-link.png|thumb|center|600px|Linking a GitHub account from Overleaf&amp;#039;s account settings.]]&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Create a GitHub repository from your Overleaf project ===&lt;br /&gt;
Open your paper in Overleaf, click &amp;#039;&amp;#039;&amp;#039;Menu&amp;#039;&amp;#039;&amp;#039; in the top left, and choose &amp;#039;&amp;#039;&amp;#039;GitHub&amp;#039;&amp;#039;&amp;#039; under the &amp;#039;&amp;#039;Sync&amp;#039;&amp;#039; section. Select &amp;#039;&amp;#039;&amp;#039;Create a GitHub repository&amp;#039;&amp;#039;&amp;#039;, give it a name (e.g. &amp;lt;code&amp;gt;my-paper&amp;lt;/code&amp;gt;), and make it private. Overleaf then pushes the current contents of your project to the new repository.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- SCREENSHOT: Overleaf project Menu, with the &amp;quot;Sync → GitHub&amp;quot; entry highlighted. --&amp;gt;&lt;br /&gt;
[[File:Overleaf-menu-sync-github.png|thumb|center|300px|The GitHub entry in the Overleaf project menu.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- SCREENSHOT: The &amp;quot;Create a GitHub repository&amp;quot; dialog filled in with name and private visibility. --&amp;gt;&lt;br /&gt;
[[File:Overleaf-create-github-repo.png|thumb|center|500px|Creating the paper repository from Overleaf.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #e8f4f8; border-left: 5px solid #17a2b8; padding: 15px; margin-bottom: 20px; margin-top: 15px; overflow: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Tip: Already have the paper on GitHub?&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
You can go the other direction instead. In Overleaf, choose &amp;#039;&amp;#039;&amp;#039;New Project → Import from GitHub&amp;#039;&amp;#039;&amp;#039; and select your existing repository.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Clone the paper inside your experiment repository ===&lt;br /&gt;
From the root of your experiment repository, tell Git to ignore the &amp;lt;code&amp;gt;paper/&amp;lt;/code&amp;gt; directory &amp;#039;&amp;#039;&amp;#039;before&amp;#039;&amp;#039;&amp;#039; you clone into it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd my-experiments&lt;br /&gt;
echo &amp;quot;paper/&amp;quot; &amp;gt;&amp;gt; .gitignore&lt;br /&gt;
git add .gitignore&lt;br /&gt;
git commit -m &amp;quot;Ignore nested paper clone&amp;quot;&lt;br /&gt;
&lt;br /&gt;
git clone git@github.com:you/my-paper.git paper&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then check that the two repositories don&amp;#039;t see each other:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status          # should NOT list paper/&lt;br /&gt;
git -C paper status # shows the paper repo, on its own branch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- SCREENSHOT: Terminal showing both `git status` outputs (outer repo clean, inner repo on its own branch). --&amp;gt;&lt;br /&gt;
[[File:Nested-clone-git-status.png|thumb|center|600px|The outer repository ignores &amp;lt;code&amp;gt;paper/&amp;lt;/code&amp;gt;; the inner repository is independent.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f8d7da; border-left: 5px solid #721c24; padding: 15px; margin-bottom: 20px; margin-top: 15px; overflow: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Warning: Don&amp;#039;t skip the &amp;lt;code&amp;gt;.gitignore&amp;lt;/code&amp;gt; entry&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Without it, a careless &amp;lt;code&amp;gt;git add .&amp;lt;/code&amp;gt; in the experiment repository will register &amp;lt;code&amp;gt;paper/&amp;lt;/code&amp;gt; as an &amp;quot;embedded repository,&amp;quot; which confuses collaborators and anything else that clones your code. If this happens, &amp;lt;code&amp;gt;git rm --cached paper&amp;lt;/code&amp;gt; undoes it.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Point your code at the paper directory ===&lt;br /&gt;
Rather than hard-coding paths in every script, define the paper location once. Using an environment variable with a sensible default means the code still runs for people who haven&amp;#039;t cloned the paper (their figures just land in an ignored folder).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# src/paths.py&lt;br /&gt;
import os&lt;br /&gt;
from pathlib import Path&lt;br /&gt;
&lt;br /&gt;
REPO_ROOT = Path(__file__).resolve().parents[1]&lt;br /&gt;
PAPER_DIR = Path(os.environ.get(&amp;quot;PAPER_DIR&amp;quot;, REPO_ROOT / &amp;quot;paper&amp;quot;))&lt;br /&gt;
FIG_DIR = PAPER_DIR / &amp;quot;figures&amp;quot;&lt;br /&gt;
TAB_DIR = PAPER_DIR / &amp;quot;tables&amp;quot;&lt;br /&gt;
&lt;br /&gt;
FIG_DIR.mkdir(parents=True, exist_ok=True)&lt;br /&gt;
TAB_DIR.mkdir(parents=True, exist_ok=True)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For &amp;#039;&amp;#039;&amp;#039;figures&amp;#039;&amp;#039;&amp;#039;, save vector PDFs directly into the paper. Removing the creation timestamp means a figure that didn&amp;#039;t actually change produces an identical file, so Git won&amp;#039;t report a pointless change:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import matplotlib.pyplot as plt&lt;br /&gt;
from src.paths import FIG_DIR&lt;br /&gt;
&lt;br /&gt;
fig, ax = plt.subplots(figsize=(3.25, 2.4))   # match your template&amp;#039;s column width&lt;br /&gt;
...&lt;br /&gt;
fig.savefig(FIG_DIR / &amp;quot;coverage.pdf&amp;quot;, bbox_inches=&amp;quot;tight&amp;quot;,&lt;br /&gt;
            metadata={&amp;quot;CreationDate&amp;quot;: None})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For &amp;#039;&amp;#039;&amp;#039;tables&amp;#039;&amp;#039;&amp;#039;, write a LaTeX fragment rather than a full document:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from src.paths import TAB_DIR&lt;br /&gt;
&lt;br /&gt;
tex = df.to_latex(index=False, escape=True, float_format=&amp;quot;%.3f&amp;quot;)&lt;br /&gt;
(TAB_DIR / &amp;quot;results.tex&amp;quot;).write_text(tex)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and pull both into the paper as usual:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;latex&amp;quot;&amp;gt;&lt;br /&gt;
\includegraphics[width=\linewidth]{figures/coverage}&lt;br /&gt;
...&lt;br /&gt;
\input{tables/results}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For &amp;#039;&amp;#039;&amp;#039;numbers quoted in the text&amp;#039;&amp;#039;&amp;#039;, the same idea works. Have your code write LaTeX macros so the prose never goes stale:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
(TAB_DIR / &amp;quot;numbers.tex&amp;quot;).write_text(&lt;br /&gt;
    f&amp;quot;\\newcommand{{\\coverageNinetyFive}}{{{cov95:.1f}\\%}}\n&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;latex&amp;quot;&amp;gt;&lt;br /&gt;
% preamble&lt;br /&gt;
\input{tables/numbers}&lt;br /&gt;
% body&lt;br /&gt;
Our intervals achieve \coverageNinetyFive{} empirical coverage.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Day-to-Day Workflow ==&lt;br /&gt;
&lt;br /&gt;
=== Sending new results to the paper ===&lt;br /&gt;
After rerunning your experiments, commit and push from inside &amp;lt;code&amp;gt;paper/&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
python scripts/make_figures.py&lt;br /&gt;
&lt;br /&gt;
cd paper&lt;br /&gt;
git pull                         # pick up any text edits pushed from Overleaf first&lt;br /&gt;
git add figures tables&lt;br /&gt;
git commit -m &amp;quot;Regenerate figures from my-experiments@$(git -C .. rev-parse --short HEAD)&amp;quot;&lt;br /&gt;
git push&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, in Overleaf, open &amp;#039;&amp;#039;&amp;#039;Menu → GitHub&amp;#039;&amp;#039;&amp;#039; and click &amp;#039;&amp;#039;&amp;#039;Pull GitHub changes into Overleaf&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- SCREENSHOT: Overleaf GitHub sync dialog showing the &amp;quot;Pull GitHub changes into Overleaf&amp;quot; button, ideally with a pending commit listed. --&amp;gt;&lt;br /&gt;
[[File:Overleaf-pull-github-changes.png|thumb|center|500px|Bringing the regenerated figures into Overleaf.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #e8f4f8; border-left: 5px solid #17a2b8; padding: 15px; margin-bottom: 20px; margin-top: 15px; overflow: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Important: Overleaf does not sync automatically&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Overleaf only picks up changes from GitHub when someone clicks the pull button, and only sends its own changes to GitHub when someone clicks the push button. Forgetting the pull is by far the most common reason the paper still shows old figures.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The commit message above includes the short hash of your experiment repository. Since the two repositories aren&amp;#039;t linked, this message is your record of which code produced which figure. Running &amp;lt;code&amp;gt;git log -- figures/coverage.pdf&amp;lt;/code&amp;gt; inside &amp;lt;code&amp;gt;paper/&amp;lt;/code&amp;gt; will answer &amp;quot;where did this figure come from?&amp;quot; months later.&lt;br /&gt;
&lt;br /&gt;
=== Automating it with a Makefile ===&lt;br /&gt;
Once the steps above feel familiar, wrap them in a single command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;make&amp;quot;&amp;gt;&lt;br /&gt;
PAPER := paper&lt;br /&gt;
SHA   := $(shell git rev-parse --short HEAD)$(shell git diff --quiet || echo -dirty)&lt;br /&gt;
&lt;br /&gt;
.PHONY: figures paper-sync&lt;br /&gt;
&lt;br /&gt;
figures:&lt;br /&gt;
	python scripts/make_figures.py&lt;br /&gt;
&lt;br /&gt;
paper-sync: figures&lt;br /&gt;
	git -C $(PAPER) pull --rebase&lt;br /&gt;
	git -C $(PAPER) add figures tables&lt;br /&gt;
	git -C $(PAPER) diff --cached --quiet || \&lt;br /&gt;
	  git -C $(PAPER) commit -m &amp;quot;Regenerate figures from my-experiments@$(SHA)&amp;quot;&lt;br /&gt;
	git -C $(PAPER) push&lt;br /&gt;
	@echo &amp;quot;Now click &amp;#039;Pull GitHub changes into Overleaf&amp;#039; in the Overleaf GitHub menu.&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now &amp;lt;code&amp;gt;make paper-sync&amp;lt;/code&amp;gt; regenerates everything, skips the commit if nothing actually changed, marks the commit &amp;lt;code&amp;gt;-dirty&amp;lt;/code&amp;gt; if your experiment code had uncommitted changes, and reminds you to pull in Overleaf.&lt;br /&gt;
&lt;br /&gt;
=== When co-authors edit on Overleaf ===&lt;br /&gt;
Before regenerating figures locally, push any Overleaf edits out to GitHub (&amp;#039;&amp;#039;&amp;#039;Menu → GitHub → Push Overleaf changes to GitHub&amp;#039;&amp;#039;&amp;#039;) so that the &amp;lt;code&amp;gt;git pull&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;paper/&amp;lt;/code&amp;gt; picks them up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- SCREENSHOT: The same GitHub sync dialog, this time highlighting the &amp;quot;Push Overleaf changes to GitHub&amp;quot; button. --&amp;gt;&lt;br /&gt;
[[File:Overleaf-push-to-github.png|thumb|center|500px|Sending Overleaf edits back to GitHub.]]&lt;br /&gt;
&lt;br /&gt;
=== Avoiding conflicts ===&lt;br /&gt;
Conflicts are rare if every file has exactly one &amp;quot;owner&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f8f9fa; border-left: 4px solid #005A9C; padding: 15px; margin-bottom: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;figures/&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;tables/&amp;lt;/code&amp;gt; belong to your code.&amp;#039;&amp;#039;&amp;#039; Never edit them by hand on Overleaf; the next regeneration will silently overwrite your changes. Change the formatting in the code that generates them instead.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f8f9fa; border-left: 4px solid #228B22; padding: 15px; margin-bottom: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;.tex&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.bib&amp;lt;/code&amp;gt; files belong to people.&amp;#039;&amp;#039;&amp;#039; Write them on Overleaf (or locally, then push), and always pull before you push figures.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Why Not a Git Submodule? ==&lt;br /&gt;
Git submodules are the &amp;quot;official&amp;quot; way to put one repository inside another, so it is natural to ask why this workflow avoids them.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width: 100%; border-collapse: collapse; margin-bottom: 10px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color: #e9ecef; padding: 10px; text-align: left;&amp;quot; |&lt;br /&gt;
! style=&amp;quot;background-color: #e9ecef; padding: 10px; text-align: left;&amp;quot; | Gitignored Clone&lt;br /&gt;
! style=&amp;quot;background-color: #e9ecef; padding: 10px; text-align: left;&amp;quot; | Git Submodule&lt;br /&gt;
! style=&amp;quot;background-color: #e9ecef; padding: 10px; text-align: left;&amp;quot; | Git Subtree&lt;br /&gt;
|- style=&amp;quot;background-color: #f8f9fa;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding: 10px;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Experiment repo records the paper version&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;padding: 10px;&amp;quot; | No || style=&amp;quot;padding: 10px;&amp;quot; | Yes (a pointer) || style=&amp;quot;padding: 10px;&amp;quot; | Yes (full history)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 10px;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Extra commit in experiment repo per paper change&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;padding: 10px;&amp;quot; | No || style=&amp;quot;padding: 10px;&amp;quot; | Yes || style=&amp;quot;padding: 10px;&amp;quot; | Yes&lt;br /&gt;
|- style=&amp;quot;background-color: #f8f9fa;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding: 10px;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Paper history mixed into code history&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;padding: 10px;&amp;quot; | No || style=&amp;quot;padding: 10px;&amp;quot; | No || style=&amp;quot;padding: 10px;&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 10px;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Special clone instructions for collaborators&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;padding: 10px;&amp;quot; | No || style=&amp;quot;padding: 10px;&amp;quot; | &amp;lt;code&amp;gt;--recurse-submodules&amp;lt;/code&amp;gt; || style=&amp;quot;padding: 10px;&amp;quot; | No&lt;br /&gt;
|- style=&amp;quot;background-color: #f8f9fa;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding: 10px;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Link between figure and code version&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;padding: 10px;&amp;quot; | Commit message || style=&amp;quot;padding: 10px;&amp;quot; | Automatic || style=&amp;quot;padding: 10px;&amp;quot; | Automatic&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A submodule gives you exact, automatic provenance, but at a price: every change to the paper, including every typo fix a co-author pushes from Overleaf, needs a matching &amp;quot;bump the submodule&amp;quot; commit in your experiment repository. For a paper that is edited daily, that noise usually isn&amp;#039;t worth it. The gitignored clone trades automatic provenance for a scripted commit message, which is plenty in practice.&lt;br /&gt;
&lt;br /&gt;
== Variations ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f8f9fa; border-left: 4px solid #005A9C; padding: 15px; margin-bottom: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Skip GitHub with Overleaf&amp;#039;s Git integration:&amp;#039;&amp;#039;&amp;#039; Overleaf Premium also lets you clone a project directly (&amp;lt;code&amp;gt;git clone https://git.overleaf.com/&amp;lt;project-id&amp;gt;&amp;lt;/code&amp;gt;, using a Git token generated in Account Settings). Clone that into the gitignored directory instead, and a &amp;lt;code&amp;gt;git push&amp;lt;/code&amp;gt; lands in Overleaf immediately with no pull button. The catch is that you no longer get a GitHub copy of the paper for issues, reviews, or backups.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f8f9fa; border-left: 4px solid #FFD43B; padding: 15px; margin-bottom: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Generating figures on a cluster:&amp;#039;&amp;#039;&amp;#039; Clone the paper repository on the cluster as well and run &amp;lt;code&amp;gt;make paper-sync&amp;lt;/code&amp;gt; there. Alternatively, point &amp;lt;code&amp;gt;PAPER_DIR&amp;lt;/code&amp;gt; at a scratch directory on the cluster, copy the outputs back to your laptop, and push from there.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Common Pitfalls ==&lt;br /&gt;
{| style=&amp;quot;width: 100%; border-collapse: collapse; margin-bottom: 10px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background-color: #f8d7da; color: #721c24; padding: 10px; text-align: left;&amp;quot; | Things to Watch Out For&lt;br /&gt;
|- style=&amp;quot;vertical-align: top; background-color: #f8f9fa;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot; |&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Forgetting the Overleaf pull:&amp;#039;&amp;#039;&amp;#039; Your figures are on GitHub, but Overleaf still shows the old ones. The reminder in the Makefile helps.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Pushing from both sides at once:&amp;#039;&amp;#039;&amp;#039; If Overleaf has unpushed edits and GitHub has new figures, Overleaf has to merge them. Push from Overleaf first, pull locally, then push your figures.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bloating the paper repository:&amp;#039;&amp;#039;&amp;#039; PNGs and timestamped PDFs change on every run. Prefer vector PDFs with the timestamp removed, and only commit figures that actually changed.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Overleaf project limits:&amp;#039;&amp;#039;&amp;#039; Overleaf limits project size and file counts. Keep raw outputs, checkpoints, and intermediate data in the experiment repository (or out of Git entirely); only put paper-ready figures and tables in &amp;lt;code&amp;gt;paper/&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Working on branches:&amp;#039;&amp;#039;&amp;#039; Overleaf only syncs one branch. Stick to the default branch inside &amp;lt;code&amp;gt;paper/&amp;lt;/code&amp;gt;; anything on another branch won&amp;#039;t show up in Overleaf.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #e8f4f8; padding: 15px; text-align: center; margin-top: 20px; font-style: italic;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039; This is just one of several ways to connect your code and your paper. If the manual pull button bothers you, try the Git integration variation above; if you want airtight provenance, a submodule may be worth the extra commits.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajshen</name></author>
	</entry>
</feed>