1. 建立与github的链接

需要先在命令行中生成SSH密钥

cd ~/.ssh  ## 没有就创建
ssh-keygen -t rsa -C 'myy@sinh.ac.cn'
# 然后会生成两个文件,id_rsa  id_rsa.pub分别是私钥和公钥

打印id_rsa的内容,填写到github上,即SSH key

然后就可以从服务器中链接到github上

ssh -T git@github.com

正确输出

# Hi username! You've successfully authenticated...

× 若实际输出是

# /etc/ssh/ssh_config: line 69: Bad configuration option: allowgroups
# /etc/ssh/ssh_config: terminating, 1 bad configuration options

这种情况说明程序自动首先启用的是系统config,也就是etc下ssh的设置,且该文件报错了,需要管理员权限才能修改内容,不可行! 因此需要自己构建一个home下的ssh config文件,并让SSH客户端能正确 读取用户级配置(`~/.ssh/config`)

#首先配置文件的内容是:
vim ~/.ssh/config

# GitHub 专用配置
Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa
# 创建的密钥文件,私钥
  IdentitiesOnly yes
# 添加以下两行解决连接问题
  IPQoS throughput
  ServerAliveInterval 60

## 注意有些需要空两个空格
## vim编辑时,i可以插入内容,然后Esc : wq ,保存并退出

配置好config文件后,还要确保SSH程序每次调用的是用户级配置的config文件,而不是自动定位到系统config,因此需要设置:

ssh -F ~/.ssh/config -T git@github.com
## 这里可以让ssh命令定位到自定义的config文件
## Hi myy! You've successfully authenticated, but GitHub does not provide shell access.

git config --global core.sshCommand "ssh -F $HOME/.ssh/config"
# 设置 Git 全局使用自定义 SSH 命令,当调用git 链接github时,就不需要再定位ssh的config文件

# 验证配置
git config --global --get core.sshCommand
# 应返回: ssh -F ~/.ssh/config

# 查看全局配置位置
cat ~/.gitconfig
# [core]
#    sshCommand = ssh -F /home/myy/.ssh/config

# 短期:使用 -F 参数显式指定配置文件
# 长期:为 Git 设置专用 SSH 命令 和 设置 Git 全局
# git add 等命令只操作本地仓库,不涉及任何网络通信
# git push 需要连接远程服务器(GitHub)

2. 将目录转换为repository并上传

# 进入需要上传的目录

# 正确顺序:
# 1. 在GitHub创建空仓库(不添加任何文件)
# 2. 本地初始化
git init

git remote -v
# 查看远程分支信息

git branch -M main 
# 将当前branch名称改为main

git add .
# 将所有文件添加到github空间

git status
# 查看当前状态

git commit -m "Initial commit"
# -m类似该次上传操作的一个说明

# 3. 添加远程并推送
git remote add origin git@github.com:myy/test.git
# 这里是在github的项目中复制的ssh链接

git push -u origin main
# 将本地github空间内容push到github上

这里只能用ssh的git链接,因为我们上面配置的是ssh的,不能用http的,需要重新配置-用其它密码啥的

在根目录上添加一个文件.gitignore,里面的目录或文件在git add .的时候会被忽略,不会被追踪

source/Tutorials/data/
build/
# 清除所有缓存
git rm -r --cached .

# 清除某一个文件
git rm -r --cached source/Tutorials/data/1_within_sample/

# 然后重新追踪
git add .

如果后续有新的文件,或者将当前文件修改了,需要重新更新github repository网页上的文件内容

# 创建新文件/修改文件vim/重命名文件mv
# 添加到暂存区
git add new_file.py
git commit -m "添加新文件:new_file.py"
git pull origin main  # 确保同步
git push origin main

# 删除本地文件
rm obsolete_file.txt
# 从Git中删除
git rm obsolete_file.txt
git commit -m "删除不再使用的文件"
git pull origin main
git push origin main

如果你手动更改了Github页面上的文件,如README,可以使用git pull origin main 命令,GitHub 上的 README.md 文件会自动覆盖了你本地的版本

如果想增加.gitignore内容,即不想继续追踪某些文件,如.ipynb.checkpoint这种,可以将其添加到.gitignore中,然后执行:

git rm -r --cached .
## 会将所有内容都移除,把文件从 Git 的“索引/暂存区”里移除,不会删磁盘上的文件
git add .
## 重新追踪所有文件,除了.gitignore的内容
git commit -m "Stop tracking Jupyter checkpoints"
git push orgin main

一些check 

# 查看与远程的差异
git diff origin/main

# 查看提交历史
git log --oneline --graph

如果已经完成了并且生成好了github整个页面,但此时想要在github页面上删除一个文件-如大文件,注意:已跟踪大文件无法通过.gitignore忽略,就算你再次重新追踪.gitignore也是没用的

可以

git rm --cached file_name  ## 从Git中移除跟踪,但保留本地文件
echo "file_name" >> .gitignore
# 或者手动编辑 .gitignore 文件,添加文件名/模式## 确保文件已在 .gitignore 中,避免被再次添加
git add .gitignore
git commit -m "remove file_name and add to .gitignore"  ## 重新提交
git pull origin main ## --rebase
git push origin main ## 推送更改

但这只是让今后不再追踪这个文件的变化了,但是最初的文件还是会保留在github中,最简单的是直接在github页面上删除,

然后还是需要执行上述不再追踪的代码

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐