Git:本地项目提交到GitHub及仓库管理

1. 远程库

关于在GitHub上创建仓库,fork之类的教程有很多,在此不再赘述。
想要修改他人的代码,需要先Fork到自己的仓库里,然后 git clone到本地。

2.初始化本地项目,提交本地

git clone https://github.com/xxx/example.git #远程库克隆到本地
cd example # 进入项目文件夹
torch README.md # 如果在GitHub上创建仓库的时候没有创建README文件,此时先创建
git init #
git add * # 添加所有文件;  
#git add . # 添加全部已经修改的文件,准备commit 提交 该命令效果等同于 Git add -A
git commit -m "注释" #提交注释

3.连接并同步到远程仓库

git remote add origin https://github.com/xxx/example.git

连接到远程仓库并为该仓库创建别名 , 别名为origin . 这个别名是自定义的,通常用origin ;
远程仓库地址,就是新建的那个仓库的地址。之后push 或者pull 的时候就需要使用到这个 origin 别名)

git push -u origin master

创建一个 upStream (上传流),并将本地代码通过这个 upStream 推送到 别名为 origin 的仓库中的 master 分支上.

-u ,就是创建 upStream 上传流,如果没有这个上传流就无法将代码推送到 github;同时,这个 upStream 只需要在初次推送代码的时候创建,以后就不用创建了。

4.继续修改本地代码并同步到GitHub

git add . # 添加全部修改,准备提交
git commit -m '提交修改说明'
git pull #取回远程主机某个分支的更新,再与本地的指定分支合并,默认拉取到 master分支(如果只是自己做这个项目,可以忽略pull)
git push #将代码推送到 github , 默认推送到别名为 origin 的仓库中的 master 分支上。

5.其他

  1. 如果有多个远程仓库 或者 多个分支, 并且需要将代码推送到指定仓库的指定分支上,那么在 pull 或者 push 的时候,就需要 按照下面的格式书写:
    git pull 仓库别名 仓库分支名
    git push 仓库别名 仓库分支名
  2. git log查看历史记录
相关错误

fatal: unable to access ‘https://github.com/xxx/xxxxxxx.git/’: The requested URL returned error: 403
需要添加秘钥



仓库管理


1. 版本回退

首先,git log查看历史记录,能看到之前提交的各个版本。
Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。例如退回到上一个版本:
git reset --hard HEAD^
倘若后悔了刚刚的回退,那么git reflog查看历史命令,以便确定退回到哪个版本。

另外(Your branch is ahead of ‘origin/master’ by 1 commit):
git reset HEAD^ --soft (Save your changes, back to last commit)

2. 工作区–>缓存区

3. 撤销修改

git checkout -- file

4. 分支管理

GitHub100M限制

git很多时候有文件大小限制,他们主要是代码仓库而不是网盘,要注意使用。有时候本地代码有一些 dataset 或者 训练好的神经网络等,特别大,但实际上不需要上传至GitHub,不但占地方还不美观,有时候还会带来麻烦。所以我们需要进行一些忽略上传。例如不慎上传了大文件,git push时候会报错:

error: GH001: Large files detected. this exceeds GitHub’s file size limit of 100 MB

1.To remove the file, enter git rm --cached:

$ git rm --cached giant_file
#Stage our giant file for removal, but leave it on disk

2.Commit this change using --amend -CHEAD:

$ git commit --amend -CHEAD
#Amend the previous commit with your change
#Simply making a new commit won’t work, as you need
#to remove the file from the unpushed history as well

3. .gitignore

此时最好新建一个.gitignore文件,来进行一些文件的忽略。一个简单的示例如下所示:

# 所有 .a 后缀的文件都忽略
*.a
# 不忽略lib.a, 尽管上面忽略了所有的 .a 文件
!lib.a

# 只忽略根目录下的TODO目录,不作用于子目录下的TODO
/TODO
# 忽略所有build目录下的文件 包括子目录下的build, 例如 /build  /lib/build
build/

# 只忽略doc下的.txt文件 doc子目录下的.txt不受影响
doc/*.txt
# 忽略doc下以及子目录下的.pdf
doc/**/*.pdf

不需要从头写.gitignore文件,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:github/gitignore

4. Push your commits to GitHub:

$ git push
#Push our rewritten, smaller commit

Reference:
[1] Git:将已有的项目添加到github

[2] git pull命令

[3] 廖雪峰关于版本回退
[4] 忽略特殊文件
[5] Removing files from a repository’s history

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烤粽子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值