记一次git使用,把本地工程上传至github下指定repo
1.安装git
2.定位到工程目录下,右键打开git bash
3.执行
>git init
>git config --global user.name "secondwatchCH"
>git config --global user.email watch_ch@163.com
>ssh-keygen -t rsa -C "watch_ch@163.com"
回车,y,回车,回车,回车
4.在github上建立新的repo,例如https://github.com/secondwatchCH/EFS.git
打开上图中所示的文件夹,找到id_rsa.pub
打开并复制到https://github.com/settings/keys下的SSH keys中。
做完之后,验证下是否成功。
>ssh -T git@github.com
5.上传本地工程
>git init
>git add .
>git commit -m "first"
>git remote add origin https://github.com/secondwatchCH/EFS.git
>git push origin master
(在第一次上传时,可能会遇到错误,error: failed to push some refs to)
原因是,github中建立工程时,有时会默认建立README.md文件,而此文件可能在你本地工程中不存在。
解决办法:执行合并,合并完成后再提交即可。
> git pull --rebase origin master
6.在不同机器上同步开发
我有一台笔记本,还有一个台式,我想一同开发,并用git进行同步。
当每次开发完代码,可以使用git更新远程的仓库。
>git add .
>git commit -m "experimnt"
>git push origin master
而用台式时,首先需要更新下本地的仓库
>git pull
如果有时候台式机上的代码被我们修改了部分,这时候会报错,因为检测到本地代码已经更改。
此时可用下面指令,忽略本地代码更新,而直接与云端代码同步。
>git reset --hard
>git pull
6.1下载
pull时碰到了一问题
RPC failed; HTTP 504 curl 22 The requested URL returned error: 504 Gateway Time-out The
可能是我在该文件下面放了数据集和结果集,导致文件过大无法下载。我通过下面两条语句完成了想要的功能。
>git config --global http.postBuffer 1024000000
>git pull --depth=1
6.2merge问题。
fatal: refusing to merge unrelated histories
>git pull --allow-unrelated-histories
>git reset --hard FETCH_HEAD
>git pull
6.3大文件上传问题
碰到一个问题,在台式机上代码生成了一个大的数据文件。使用git上传时提示超过100M限制。最初设想把它移出到外面去,但是任然报错,解决,删除本地的缓存。且可使用ignore方法,直接放在文件夹内,不需要移出。
>git rm -r --cached .
>git commit --amend -CHEAD
>git add .
>vi
|exp3.sql
>git commit -m "ignore"
>git push origin master
如果你已经使用git push提交过很多次,且报了上述文件太大的错误,这些操作会被记录下来,且需要用下面的方式清除历史记录并重新扫描上传。
我最终解决是通过以下方式,
>git rebase -i
在vi编辑器中,按dd删除2行历史增加数据,然后!wq退出保存。
>git add .
>git commit m "ignore"
>git push origin master
一定注意!!这里一定要再次扫描全部文件,不然你辛辛苦苦新增的东西会被丢弃掉。lz中招了!
6.4clone问题
git克隆的工程太大用https的方式会有如下问题
error: RPC failed; result=22, HTTP code = 502
fatal: The remote end hung up unexpectedly
解决办法是,增加--depth=1,只拉取master分支的最新commit。
--depth=1