我需要在离线机器上工作,我无法访问我的存储库.现在我也不想错过完全使用Git.
问题:
编辑:我应该说,我将不得不将记忆棒交给管理员,管理员将为我复制,即我不能用我的用户安装棒.
Aar*_*lla 12
要复制完整的Git仓库,您只需复制该文件夹.git
; 它包含一切.Git使用安全的文件名并忽略了repo中的时间戳,因此这些数据对于通常的文件系统怪癖是安全的.
在目标计算机上,创建一个文件夹,复制其中的.git
文件夹.现在git checkout <branch>
将为您提供工作副本.
如果要来回移动补丁而不是整个回购,则git format-patch <branch>
创建它们.该命令将创建更新远程仓库所需的所有补丁(即输出将包含尚未推送的所有内容).你也可以给它提交ID(=从这个提交开始)或范围.
要应用它们,请使用git am < 0001....
远程仓库.
有关:
该命令git bundle
就是为此而设计的。例如,要离线克隆存储库的 master 分支,
cd my-repository
git bundle create offline-repos master
Run Code Online (Sandbox Code Playgroud)
这会将整个master
分支存储在名为offline-repos
. 将文件复制到另一台计算机。在该计算机上,输入
git clone -b master offline-repos new-repos
Run Code Online (Sandbox Code Playgroud)
new-repos
这将创建从 检出的文件夹offline-repos
。您从中克隆的捆绑文件将被视为远程存储库。您甚至可以创建一个包来存储自引用以来的更改,如下所示:
git bundle create offline-repos e45ad329..master
Run Code Online (Sandbox Code Playgroud)
如果将捆绑文件替换offline-repos
为包含新更改的捆绑包,则可以git pull
从中进行更改,如下所示:
cd new-repos
git pull
Run Code Online (Sandbox Code Playgroud)
要将您的仓库复制到记忆棒,只需使用git clone
,然后使用git pull
它来更新它.
例如,在你的在线计算机上,安装了记忆棒,就可以了
cd <memory-stick-mount-point>
git clone <local-path-to-git-repo>
Run Code Online (Sandbox Code Playgroud)
现在<local-path-to-git-repo>
它将成为origin
你的usb-stick上的repo 的遥控器,所以稍后你可以简单地使用git push/pull
(当安装在在线机器上时)来同步你的离线工作.
记忆棒上的git repo是独立的,所以现在你可以在任何计算机上对抗它,然后在你的在线机器上安装它时如上所述同步.
编辑,重新:不允许自己安装棒:
如果你可以要求管理员把git clone
回购记录放到记忆棒上就可以了.否则,您的管理员可以简单地将整个project.git目录(如果它是一个简单的仓库)或项目/ .git(否则)复制到您的记忆棒,并且您可以反对它,需要注意的是遥控器等等将是在线机器的那些.
然后,拉动不是问题,但如果您不相信您的系统管理员为您解决合并冲突,推送可能需要进一步解决.如果你有自己的分支,那么合并不是问题.否则要进行"离线"合并,你可以有两个 repo的离线副本,一个是你工作的,一个是你的"origin",当你回来时,请求sysadm把git拉到"origin" repo,然后,在离线计算机上,执行两个记忆棒回购之间的合并,然后让sysadm将您的原始仓库合并到在线仓库中.
尽管如此,这感觉有点脆弱并且对竞争条件开放,所以我真的会尝试在"离线"之前创建单独的分支.