如何在git命令中指定ssh-key文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在git命令中指定ssh-key文件相关的知识,希望对你有一定的参考价值。

可以写这样一个脚本,~/ssh-git.sh
#!/bin/bash
if [ -z "$PKEY" ]; then
# if PKEY is not specified, run ssh using default keyfile
ssh "$@"
else
ssh -i "$PKEY" "$@"
fi

注意用chmod +x ssh-git.sh命令设置可执行权限

然后设置GIT_SSH

export GIT_SSH=~/ssh-git.sh

最后

PKEY=~/.ssh/test.pem git clone user@server.com:/git/repo.git

上面的方法略显繁复,我们的目标是像ssh命令一样可以用-i参数来灵活的指定identity_file

再创建一个脚本,~/git.sh
#!/bin/bash

# The MIT License (MIT)
# Copyright (c) 2013 Alvin Abad

if [ $# -eq 0 ]; then
echo "Git wrapper script that can specify an ssh-key file
Usage:
git.sh -i ssh-key-file git-command
"
exit 1
fi

# remove temporary file on exit
trap \'rm -f /tmp/.git_ssh.$$\' 0

if [ "$1" = "-i" ]; then
SSH_KEY=$2; shift; shift
echo "ssh -i $SSH_KEY \\$@" > /tmp/.git_ssh.$$
chmod +x /tmp/.git_ssh.$$
export GIT_SSH=/tmp/.git_ssh.$$
fi

# in case the git command is repeated
[ "$1" = "git" ] && shift

# Run the git command
git "$@"

设置执行权限之后,即可像ssh一样自由的指定identity_file

~/git.sh -i ~/.ssh/test.pem clone user@server.com:/git/repo.git

文/四明羽客(简书作者)
原文链接:http://www.jianshu.com/p/477de2f00830
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
参考技术A 代码提交代码提交一般有五个步骤:
1.查看目前代码的修改状态
2.查看代码修改内容
3.暂存需要提交的文件
4.提交已暂存的文件
5.同步到服务器
1. 查看目前代码的修改状态
提交代码之前,首先应该检查目前所做的修改,运行git status命令
a) 已暂存 (changes to be committed)
new file //表示新建文件
modified //表示修改文件
deleted //表示删除文件
b) 已修改 (changed but not updated)
modified //表示修改文件
deleted //表示删除文件
另外,git 给出了可能需要的操作命令,git add/rm, gitcheckout --
c) 未跟踪 (untracked files)
2. 查看代码修改的内容
git diff <file>
比较某文件与最近提交节点的差异。
注意:如果该文件已暂存,那么应该使用git diff –cached<file>

git diff <hashcode> <hashcode> <file>
比较某文件在提交节点a,节点b的差异。
技巧:如果省略后面一个hashcode,则默认表示与上一提交节点比较。(也可以利用^运算符)

3. 暂存需要提交的文件
如果是新建的文件
则git add <file>
如果是修改的文件
则git add <file>
如果是删除的文件
则 git rm <file>
4. 提交已暂存的文件

在 CMakeLists 文件中指定构建目录

【中文标题】在 CMakeLists 文件中指定构建目录【英文标题】:Specifying build directory within CMakeLists file 【发布时间】:2021-12-21 21:37:40 【问题描述】:

是否可以?如果是,如何。

我的目标是能够在***源目录中调用“cmake”并让 cmake 找出构建目录。

【问题讨论】:

***.com/a/20611964/2288008 【参考方案1】:

Afaik,使用CMake,构建目录始终是您调用cmakeccmake 命令的目录。所以如果你想改变构建目录,你必须在运行 CMake 之前改变目录。

要控制完成后放置可执行文件、静态库和共享库的位置,您可以分别修改 CMAKE_RUNTIME_OUTPUT_DIRECTORYCMAKE_ARCHIVE_OUTPUT_DIRECTORYCMAKE_LIBRARY_OUTPUT_DIRECTORY

【讨论】:

是的,我同意你的第一点,但我的目的是能够避免每次我对 CMakeLists 进行更改时“cd”来构建目录。 你不能尝试一个源代码构建(虽然它通常不受欢迎,但在这种情况下它可能是你需要的)?除此之外,这实际上不是 cmake 的问题,而是 make 本身的问题 - 从您调用 make 的任何位置,这就是构建目录。【参考方案2】:

按照设计,没有办法在 CMakeLists.txt 中指定。它旨在让用户能够在他们想要的任何目录中构建项目。典型的工作流程是:

    查看项目源代码。 如果您打算进行源内构建,请转到所需的构建目录或源目录。 运行 cmake 或 ccmake 以在该构建目录中配置项目。 构建您的项目。

在 CMakeLists.txt 中指定的所有目录都应与 $PROJECT_BINARY_DIR 和 $PROJECT_SOURCE_DIR 变量相关。这样,您的代码就可以跨不同平台构建,这是 CMake 的目标。

【讨论】:

同意,但在我看来,能够在 CMakeLists.txt 中指定构建目录可以作为一个选项,它仍将保持跨不同平台的构建。例如而不是做“cmake ../build”,可以在 CMakeLists.txt 中有一个选项,类似于“set(CMAKE_BUILD_DIRECTORY ../build)”,因为这进入项目的顶部 CMakeLists.txt 它应该可以工作。 随时在我们的public issue tracker 上请求此功能。我不确定它是否会受到好评,因为它有点违背通常的 CMake 配置模型,但你可以在那里获得更多的社区讨论。

以上是关于如何在git命令中指定ssh-key文件的主要内容,如果未能解决你的问题,请参考以下文章

git 命令

git 命令

git添加ssh-key后免登陆未生效

git在本地项目中指定远程仓库地址并上传

解决git乱码

git ssh-key 及邮箱的配置