另起页
指针
GitBash
本篇隶属与Gitbash补充
配置.bashrc用来自动添加密钥
vim ~/.bashrc
使用这个命令来编辑gitbash
环境变量
eval $(ssh-agent)
ssh-add ~/.ssh/id_rsa
ssh-add ~/.ssh/gitee
ssh-add ~/.ssh/github
你只需要再集成开发环境里(IDEA/AndroidStudio)添加仓库的(remote)链接就可以直接建立ssh链接来推送仓库了
本地仓库回滚和远程仓库拉取历史版本
-
本地仓库回滚会作为最新一次的提交
-
回滚的基本操作
git log
获取历史版本的哈希值 git reset --hard commit_hash
该命令会将当前分支指针移动到指定的提交,并删除所有后续提交。这样就回滚到了以前未合并的状态。
注意:使用 –hard 参数会丢失回滚提交之后的所有更改,请确保你不再需要这些更改。
-
回滚后的推送:
git push
:将本地分支状态推送到远程仓库,不会覆盖远程仓库的历史记录。
git push -f
:强制推送,将本地分支状态强制覆盖远程分支,可能会导致远程仓库历史的丢失。
-
远程仓库的历史版本
git log origin/<branch_name>
显示本分支的所有提交历史
远程仓库和本地仓库
- 远程仓库已经独立出来作为一个副本 和本地仓库并不相同
具体体现在远程仓库 git pull
只能拉取最新的 远程仓库的历史版本拉取到本地仓库
git fetch
通过执行命令,你可以获取远程仓库中的所有提交历史,而不仅仅是最后一次提交
git reset
/git rebase
将这些远程分支合并到你的当前分支,以将远程仓库的历史版本合并到你的本地仓库中。
- 拉取远程仓库的历史版本就相当于获取新的代码版本,因此可能和本地仓库发生冲突从而需要合并,而本地历史版本则直接恢复代码以前的状态不会产生冲突,远程仓库已经独立出来作为本地仓库的副本,但是不完全和本地仓库重合,因此本地仓库无法直接恢复到远程仓库的某个历史版本是吗
i-
关于覆盖本地仓库的版本,如果你想完全覆盖本地仓库的提交历史,并将其变为与远程仓库完全一致,你可以使用 git reset 命令或 git checkout 命令,将本地分支指向远程分支的引用。这样做将会删除本地分支的历史提交,将其重置为远程分支的最新提交。
为应用程序指定私钥以对接网站公钥
- 查看本地私钥
C:\Users\YourUserName\.git\.ssh\gitee
根据应用程序设置中ssh调整私钥目录
Find批处理
你可以使用以下命令在当前文件夹及其子目录下查找 .html
文件,并将其复制到当前文件夹下的 html
文件夹中:
find . -type f -name "*.html" -exec cp {} ./html/ \;
解释一下这个命令:
.
表示当前文件夹,即搜索的起始路径。
-type f
表示只搜索普通文件,不包括目录。
-name "*.html"
表示搜索文件名以 .html
结尾的文件。
-exec cp {} ./html/ \;
表示执行 cp
命令将找到的文件复制到 ./html/
目录下。{}
表示找到的每个文件,\;
表示命令结束。
在执行命令之前,请确保当前文件夹下已经存在名为 html
的文件夹,否则可以先使用 mkdir
命令创建它:
mkdir html
请注意,如果复制的文件名在目标文件夹中已存在,将会被覆盖。如果你希望保留原文件名,可以使用 cp -n
命令,即 -exec cp -n {} ./html/ \;
。
奇怪的是 find
是linux使用的命令
Linux批处理
在 Linux 系统中,有许多常用的文件批处理命令可用于对文件进行操作。以下是一些常见的 Linux 文件批处理命令:
ls
: 列出目录中的文件和子目录。
pwd
: 显示当前工作目录的路径。
cd
: 更改当前工作目录。
mkdir
: 创建新的目录。
touch
: 创建新文件或更新现有文件的访问和修改时间。
cp
: 复制文件或目录。
mv
: 移动或重命名文件或目录。
rm
: 删除文件或目录。
cat
: 连接文件并显示其内容,或将内容重定向到其他文件。
head
: 显示文件的前几行。
tail
: 显示文件的后几行。
grep
: 在文件中搜索指定的模式。
find
: 在文件系统中搜索文件或目录。
chmod
: 修改文件或目录的权限。
chown
: 修改文件或目录的所有者。
chgrp
: 修改文件或目录的所属组。
wc
: 统计文件中的行数、单词数和字节数。
sort
: 对文件的行进行排序。
uniq
: 从排序后的文件中去除重复的行。
sed
: 对文件中的文本进行流编辑操作。
awk
: 在文件中查找和处理文本模式。
这些命令可以根据你的需求进行组合和使用,以实现各种文件批处理操作,如文件查找、过滤、排序、修改权限等。请注意,对文件进行批处理操作时,请谨慎操作,以免意外删除或修改了重要文件。在使用这些命令之前,建议先了解其用法和选项,可以通过相应的命令的帮助文档或手册来获取更详细的信息。
Vim操作命令
Vim 是一款强大的文本编辑器,以下是一些常用的 Vim 操作命令:
- 进入编辑模式:
i
: 在光标当前位置前插入文本。
a
: 在光标当前位置后插入文本。
o
: 在当前行下方插入新行并进入编辑模式。
-
O
: 在当前行上方插入新行并进入编辑模式。
-
退出编辑模式:
-
Esc
: 退出编辑模式,回到命令模式。
-
保存和退出:
:w
: 保存文件。
:q
: 退出 Vim。
-
:wq
或 :x
: 保存文件并退出 Vim。
-
光标移动:
h
: 左移一个字符。
j
: 下移一行。
k
: 上移一行。
l
: 右移一个字符。
gg
: 跳转到文件开头。
G
: 跳转到文件末尾。
0
或 ^
: 跳转到行首。
$
: 跳转到行尾。
Ctrl + f
: 向下翻页。
-
Ctrl + b
: 向上翻页。
-
删除和复制:
x
: 删除光标所在位置的字符。
dd
: 删除当前行。
yy
: 复制当前行。
-
p
: 粘贴复制的文本。
-
撤销和重做:
u
: 撤销上一次操作。
-
Ctrl + r
: 重做上一次撤销的操作。
-
查找和替换:
/pattern
: 向前查找指定模式的文本。
?pattern
: 向后查找指定模式的文本。
:s/old/new
: 将当前行第一个匹配到的 old 替换为 new。
:s/old/new/g
: 将当前行所有匹配到的 old 替换为 new。
这只是 Vim 的一小部分命令,Vim 具有非常丰富的功能和命令。可以通过 vimtutor
命令在终端中启动 Vim 教程来学习更多关于 Vim 的使用技巧和命令。
关于GitBash
Git Bash 是在 Windows 系统上运行的 Git 命令行工具,它提供了一个类似于 Linux 终端的环境,并且集成了一些常用的 Linux 命令和 Vim 编辑器。
在 Git Bash 中,你可以使用许多常用的 Linux 命令,例如 ls
(列出文件和目录)、cd
(切换目录)、mkdir
(创建目录)、rm
(删除文件或目录) 等等。这些命令在 Git Bash 中具有与 Linux 系统相似的行为和语法。
此外,Git Bash 也集成了 Vim 编辑器,你可以使用 vim
命令来启动 Vim 编辑器,并进行文件的编辑和保存操作。
需要注意的是,尽管 Git Bash 提供了一些常用的 Linux 命令和 Vim 编辑器,但它并不是一个完整的 Linux 环境,一些特定的 Linux 命令或功能可能会有所差异或缺失。如果需要更全面的 Linux 环境和功能,建议使用专门的 Linux 操作系统或虚拟机。
总之,Git Bash 提供了一种在 Windows 系统上进行 Git 和部分 Linux 操作的方便方式,并集成了 Vim 编辑器供你使用。
ssh-agent
ssh-agent是一个SSH密钥管理器,它用于在操作系统的后台运行并管理你的SSH密钥。它负责在需要时提供SSH密钥,以进行身份验证,而无需每次连接时都输入密码。
在大多数操作系统上,ssh-agent通常已经包含在SSH客户端软件中,例如OpenSSH。如果你已经安装了Git Bash,它通常会捆绑了OpenSSH,其中包括ssh-agent。
所以,你不需要单独下载ssh-agent,只需确保你的Git Bash安装中包含了OpenSSH。
要使用ssh-agent,你可以按照以下步骤进行操作:
-
打开Git Bash终端。
-
运行以下命令来启动ssh-agent:
eval $(ssh-agent)
这将在当前终端会话中启动ssh-agent,并设置相关的环境变量。
- 然后,你可以使用
ssh-add
命令将私钥添加到ssh-agent中,如之前所述。(注意,需要进入~/.ssh
,即密钥所在目录)
请注意,ssh-agent在终端会话期间有效。如果你打开了新的终端会话或重新启动了计算机,你需要重新启动ssh-agent并再次添加密钥。
为什么gitbash启动的时候并不会启动ssh-agent
在某些情况下,Git Bash可能不会自动启动ssh-agent。这可能是因为Git Bash默认配置中没有包含自动启动ssh-agent的设置。
如果你希望在Git Bash启动时自动启动ssh-agent,可以按照以下步骤进行手动设置:
-
打开Git Bash终端。
-
在终端中创建或编辑~/.bashrc
文件:
nano ~/.bashrc
如果~/.bashrc
文件已经存在,请直接编辑它。
- 在文件中添加以下内容:
bash
eval $(ssh-agent)
这将在每次启动Git Bash时自动启动ssh-agent。
-
保存并关闭文件(按Ctrl + X,然后按Y保存)。
-
重新启动Git Bash终端。
现在,每次启动Git Bash时,ssh-agent将自动启动并在当前终端会话中运行。你可以使用ssh-add
命令将私钥添加到ssh-agent中,以进行身份验证。
请注意,~/.bashrc
是特定于用户的配置文件。如果你希望在所有用户之间共享此设置,可以编辑/etc/bash.bashrc
文件而不是~/.bashrc
。
希望这可以帮助你在Git Bash中自动启动ssh-agent。如果你有其他问题,请随时提问。
.bashrc配置文件
在Unix和类Unix系统中,.bashrc
是用于配置Bash shell的启动脚本文件之一。当你启动一个新的终端会话时,Bash shell会尝试读取并执行.bashrc
文件中的命令。
.bashrc
文件通常位于用户的主目录下(例如/home/username/.bashrc
)。这个文件可以包含自定义的环境变量、别名、函数和其他Bash命令,以满足你的个人需求。
每次新建终端会话时,默认情况下,Bash shell会自动执行.bashrc
文件中的命令。这使得你可以在每个终端会话中都有相同的自定义配置和环境设置。
你可以创建多个.bashrc
文件,但通常情况下,只需要一个位于主目录下的.bashrc
文件来配置你的个人设置。如果你需要针对不同的目录或用途创建不同的配置文件,可以考虑使用其他命名的文件,并在需要时手动加载它们。
在Linux系统中,还有其他几个类似的启动脚本文件,如.bash_profile
、.bash_login
和/etc/profile
,它们也可以用于配置Bash shell的启动行为。它们的具体用途和加载顺序可能因系统和设置而有所不同。
请注意,对于每个终端会话,只有登录shell(例如通过SSH登录的shell)才会执行.bash_profile
或.bash_login
文件。非登录shell会执行.bashrc
文件。但是,Git Bash在Windows上的行为可能会有所不同,具体取决于你的配置。
希望这解释清楚了.bashrc
文件和它在终端会话中的作用。
对应多个远程仓库
将多个密钥(用于对接多个远程仓库的情况),我希望每次只需要添加url就可以连接到远程仓库,身份验证由ssh-agent自动运行,该怎么做
如果你想在Git中使用多个SSH密钥,并希望根据远程仓库的URL自动选择正确的密钥进行身份验证,可以按照以下步骤进行操作:
- 确保已经为每个远程仓库设置了正确的SSH密钥。你可以使用
ssh-keygen
命令生成和管理多个SSH密钥。确保每个密钥对应一个不同的远程仓库。
ssh-keygen -t rsa -C "your_email@example.com" -f ~/.ssh/id_rsa_repo1
ssh-keygen -t rsa -C "your_email@example.com" -f ~/.ssh/id_rsa_repo2
在上述示例中,我们为两个不同的远程仓库生成了两个密钥,分别为id_rsa_repo1
和id_rsa_repo2
。
- 确保你的SSH密钥已经添加到ssh-agent中。你可以使用
ssh-add
命令将密钥添加到ssh-agent中。
ssh-add ~/.ssh/id_rsa_repo1
ssh-add ~/.ssh/id_rsa_repo2
这会将两个密钥添加到ssh-agent中,以便在需要时进行身份验证。
- 编辑
~/.ssh/config
文件,并添加以下内容:
```
# 远程仓库1
Host repo1.example.com
HostName repo1.example.com
User your_username
IdentityFile ~/.ssh/id_rsa_repo1
# 远程仓库2
Host repo2.example.com
HostName repo2.example.com
User your_username
IdentityFile ~/.ssh/id_rsa_repo2
```
在上述示例中,我们为两个远程仓库配置了主机别名、主机名、用户名和对应的SSH密钥文件路径。
这个用户名是@Gy-sherlock
账户姓名而非本地的
你可以根据需要添加更多的远程仓库配置。
- 保存并关闭文件。
现在,当你使用Git与远程仓库进行交互时,Git将根据远程仓库的URL自动选择正确的SSH密钥进行身份验证。你无需手动指定密钥。
例如,对于名为repo1
的远程仓库,你可以使用以下命令进行操作:
git remote add origin git@repo1.example.com:user/repo1.git
Git将自动使用~/.ssh/id_rsa_repo1
密钥与repo1.example.com
进行身份验证。
对于另一个远程仓库,你可以使用类似的命令进行操作。
通过这些设置,你可以轻松管理多个远程仓库,并让ssh-agent自动选择正确的密钥进行身份验证。
希望这可以帮助你在Git中使用多个SSH密钥进行身份验证。