与 Subversion 不同,git 没有cp命令。对于文件,这不是问题:如果我想将文件复制a到b,我可以这样做:
cp -a a b
git add b
Run Code Online (Sandbox Code Playgroud)
但是,假设我想复制一个目录d以给它另一个名称e。我仍然可以做同样的事情。但是,d可能包含git没有跟踪的文件,例如编译后的二进制文件等。在这种情况下,我不想做上面的事情,因为我不想让git跟踪这些额外的文件。
使用 Subversion,我可以做到svn cp,它只会复制和添加 Subversion 跟踪的文件。我怎样才能用 git 做到这一点?
我有两台机器,m1 和 m2,机器 m2 可以使用 SSH 连接到 m1。有一台机器m1bis只能连接到m1,还有一台机器m2bis只能连接m2。我想让 m1bis 通过连接到机器 m1 的某个端口 p 来到达某个端口 q 上的机器 m2bis。假设 p 和 q 都是非特权端口,即它们大于 1024。在图片中:
+-------+ q +----+ SSH +----+ p +-------+
| m1bis | ----> | m1 | <------ | m2 | ----> | m2bis |
+-------+ +----+ +----+ +-------+
Run Code Online (Sandbox Code Playgroud)
我可以通过 shell 访问 m1 和 m2。我通常的做法是使用 SSH 反向端口转发,通过在 m2 上运行以下命令:
ssh -R *:q:m2bis:p m1
Run Code Online (Sandbox Code Playgroud)
这使得 m1 上的 SSH 守护进程侦听所有接口上的端口 q,并将任何传入连接中继到机器 m2bis 的端口 p。这样,当 m1bis 连接到机器 m1 的端口 q 时,连接通过 SSH 从 m1 …