原因
是想上传一个包含多个子文件夹的文件夹到Github的repository里,但是无法直接从网页一次上传,需要借助代码。随便写点自己的发现,不一定对。
流程
创建了repository 以后,想要复制的话,可以通过 HTTPS,也可以通过 SSH,但是对应的代码略有不同。
HTTPS: $ git clone https://github.com/github_name/repository_name.git
SSH: ~/.ssh $ git clone git@github.com:github_name/repository_name.git
但在这之前,ssh方法需要设置ssh key, 通过
$ ssh-keygen -t rsa -C “your email” -f id_rsa_name
其中,-f 后面是设置的私钥名称,不加的话默认是 id_rsa, 每一个私钥都有配对的公钥,比如 id_rsa.pub, 可以在 ssh 文件夹中找到,mac/linux 在 cd ~/.ssh
后, ls
即可查看。 在repository中将sshkey 添加 id_rsa.pub 即可。
先说一些git常用命令:
$ git config --global user.name 'Github_name'
告诉github你是谁
$ git config --global user.name 'Github_name'
同上
$ git config --global --list
查看上述当前信息
$ git rm file_name
移除文件
$ git rm -r --cached .
删除目录的所有缓存
$ git ls-files
查看当前在暂存区的文件
假如需要将本地文件夹 files 中的所有文件传入 Github, 操作如下:
- 在终端指定刀files目录
- $ git init 生成一个 git隐藏文件
- $ git add . 将当前files目录里的所有文件(夹)添加到缓存区
- $ git status 查看状态,即添加的文件
- $ git commit - ‘注释’: 将缓存区文件提交
- $ git remote add git_name git@github.com:github_name/repository_name.git` 关联Github Repository 与本地文件夹(所在目录)。
- $ git remote -v 查看当前关联
- $ git push git_name master 上传本地文件
在其中,使用mac时,在 git add 时会出现 .DS_Store文件,需要删除,最好可以使其被忽略:
$ find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
删除 .DS_Store, 然后在vi ~/. gitignore
后输入:echo .DS_Store >> ~/.gitignore 完成后 esc 接 “:wq” 保存退出。
更新项目 $ git add --all
$ git commit -m '.DS_Store banished!'
其他tips
清缓存,进入目录, $ git rm -r cached . 然后 $ git add .
删除 remote , $ git remote remove remote_name(一般是origin)
碰到 error: failed to push some refs to [remote repo] $ git pull --rebase origin [branch]
$ git branch -M main 换到main branch
$ git push origin main 的时候,遇到 authentication faile是因为你还需要用ssh 设置你的关联(origin) $ git remote set-url origin git@github.com:USERNAME/REPONAME.git
想移动文件时,先克隆repo到本地,手动自动文件位置,然后在对应目录打开terminal, $ git add .
$ git commit -m 'annotation'
$ git push origin [branch]