Git Remote Repository
Table of Contents
Section titled “Table of Contents”远程仓库是托管在网上的项目版本库, 需要在代码平台上创建, 常见的如
可以通过两种方式添加远程仓库
$ git clone <Repository url> # 克隆远端仓库到本地, 自动绑定链接对应的仓库 $ git remote -v # 查看本地仓库关联的所有远端仓库 > origin git@github.com:John/Learning.git (fetch) > origin git@github.com:John/Learning.git (push) $ git remote add origin <Repository url> # 将远程仓库命名为 origin 并关联本地仓库
- 一个本地仓库可以关联多个远程仓库
- 本地仓库可以提交代码到任意一个已关联的远程仓库
- 使用克隆后, 该远程仓库默认被命名为 origin
.gitignore
Section titled “.gitignore”忽略指定文件, 不对其追踪和提交, 文件名固定为 .gitignore
, 项目内可创建多个
$ cat .gitignore > *.pyc # 忽略当前项目内所有 .pyc 结尾的文件 > !main.pyc # 强制跟踪所有 main.pyc > /*.log # 忽略当前目录下 .log 结尾文件, 不影响上层的文件 > temp/ # 忽略整个项目内所有 temp 文件夹 > /lib/*.pyc # 忽略当前 lib 目录 下一级的 pyc 文件, lib 下多层目录不受影响 > lib/**/.pyc # 忽略项目内所有 lib 文件夹内的 pyc 文件 $ git check-ignore -v <file> # 验证 igtignore 忽略文件或者路径 $ git check-ignore -v log/report.log > .gitignore:4:log/* log/report.log $ git check-ignore -v utils/__pycache__/ > .gitignore:2:__pycache__ utils/__pycache__/
SSH key 密钥
Section titled “SSH key 密钥”本地仓库推送代码到远端时, git 会要求用户输入用户名和密码, 设置 ssh key 即可免密码推送
密钥 | linux | windows |
---|---|---|
id_rsa (私钥) | /root/.ssh/id_rsa | C:\Users\<user>\.ssh |
id_rsa.pub (公钥) | /root/.ssh/id_rsa.pub | C:\Users\<user>\.ssh |
生成两个密钥文件, 将公钥放到代码托管平台的账号设置中
$ ssh-keygen # 自动生成密钥 $ ssh-keygen -t rsa -C "key message" # 生成 rsa 类型带 key 注释信息的密钥 $ cat ~/.ssh/id_rsa.pub # 公钥以 ssh-rsa 开头, 注释信息结尾 > ssh-rsa xxx....xxx key message
- 密钥由系统生成, 放入用户设置, 所以是系统和账户绑定
- 系统下的本地仓库推送代码到该账户使用 ssh 链接时即可免密
Github 令牌
Section titled “Github 令牌”2021 年 8 月 13 号, GitHub 不再使用密码验证, 改用令牌验证
Github 账户 -> Settings -> Developer Settings -> Personal access tokens
注意: 创建令牌时需勾选令牌可用权限, 如可读, 可写的权限
# 使用 ssh 连接携带令牌可以直接下载 $ git clone https://{token}@github/{username}/{repo}.git # 已有仓库添加令牌 $ git remote set-url origin https://{token}@github.com/{username}/{repo}.git # 查看关联远端仓库(附带令牌) $ git remote -v > origin https://{token}@github.com/{username}/{repo}.git (fetch) > origin https://{token}@github.com/{username}/{repo}.git (push)
Error Resolve
Section titled “Error Resolve”$ git status error: object file .git/objects/f7/01097c53f5db20f18fa5edae4003c8bf9184ff is empty error: object file .git/objects/f7/01097c53f5db20f18fa5edae4003c8bf9184ff is empty fatal: loose object f701097c53f5db20f18fa5edae4003c8bf9184ff (stored in .git/objects/f7/01097c53f5db20f18fa5edae4003c8bf9184ff) is corrupt # 删除 .git 本地仓库中的空文件, 重新拉取 $ find .git/objects/ -size 0 -exec rm -f {} \; $ git fetch origin