如有错误,恳请指出。


这段时间在弄推荐系统的一个比赛,写了个算法模型,也算学习到了一些东西,这里想将其放在github中进行管理与保存,适当接触了一下Git的使用,这里就用这篇博客记录一下。

应该会持续更新~~~

文章目录

  • 1. 本地上传代码到Github
  • 2. Github下载代码到本地
  • 3. Git中的tag标签使用
  • 4. Git中的branch分支管理
  • 5. Git基本常用命令

关于如何下载git这里就不再详述,以下是指令是在git bash环境中进行。


1. 本地上传代码到Github

  1. 获取公钥

获取公钥的指令是:

ssh-keygen  -t rsa –C “youremail@example.com”

命令运行之后,在路径C:\Users\Acer.ssh下,会出现两个文件,id_rsa是私钥,不能泄露出去;id_rsa.pub是公钥,可以放心地告诉任何人。

  1. 配置ssh keys

依次点击:Settings -> SSH and GPG keys -> New SSH key,如下所示:


Title:自行设置
Key:这里复制的是公钥,也就是id_rsa.pub的内容,然后点击Add SSH key即可

  1. 新建仓库进行push

新建仓库之后,github官方其实已经提供了些示例教程示范如何上传一个readme文件在github的远程仓库中。

这里由于我的模型还没有配置cuda加速,只能使用cpu来进行训练,在之后我会再上传一个gpu的训练版本。所以,现在的需求是想要独立的保存当前的cpu版本代码,以供后续回退。

以下是我的完整git命令操作:

# 1. 环境初始化
git init# 2. 增加一个远程服务器的别名,也是本地仓库名origin
# 这里测试添加一个别名为origin ,用户名为Clichong,仓库名为CTR的仓库
git remote add origin https://github.com/Clichong/CTR.git# 3. 添加需要上传的文件
# 这里我上次当前目录的所以代码,也就是整个项目
git add ./*# 4. 提交到本地库并进行描述
git commit -m "CrossDomianNet with CPU persion"# 5. 设置tag
git tag v1.0-cpu
# git tag -d v1.0-cpu可以进行删除
# git tag 可以查看当前环境的tag# 6. push代码到这个tag上面
git push -u origin v1.0-cpu# 7. 与主分支master合并, 并push到主分支上
git checkout master
git merge v1.0-cpu
git push origin master

如此实现了我的需求:


以下是输入命令的相关弹出信息:

ps:关于github环境配置的任何问题,或者上传的问题,可以参考我另外一篇博文:解决git clone与git push出现的若干问题:Failed to connect to github.com port 443: Timed out

后续,我又补充了一个gpu训练的模型版本(cpu实在是太慢了),然后使用同样的方法,创建另外的一个 v1.0-gpu 分支tag进行 git push 即可。如此既可以获得多分支的版本管理。

同时,需要注意把master分支更新至 我们的 v1.0-gpu 分支tag中,最后效果如下所示:


2. Github下载代码到本地

  1. 方法1:git clone下载

通过git下载项目比较简单,主要通过git clone指令就可以了,在git bash环境中执行

git clone https://github.com/Clichong/CTR.git
  1. 方法2:界面下载

也可以直接在github的界面上进行下载

  1. 方法3:DownGit下载

通过DownGit下载,网址如下:https://minhaskamal.github.io/DownGit/#/home?url=

只需要把需要下载的对应链接放在上面就可以下载了

  1. 方法4:插件下载

通过一些插件可以进行下载,比如扩展工具:GitZip for github

在右端直接勾选即可下载,非常方便

  • 总结:

以上的方法3和方法4直接解决了Github中无法下载目录下的某个单一文件或者单一目录的需求,而使用一些插件会让下载变得更加的方便。


3. Git中的tag标签使用

在上诉我的需求中,想要单独的将cpu与gpu划分为不同的tag版本,以供管理与后续的下载。这里参考资料3来进行详细了解一下Git中的tag使用。

  1. 创建tag
# 创建本地tag
git tag <tagName> # 推送到远程仓库
git push origin <tagName> # 若存在很多未推送的本地标签,想一次全部推送的话
git push origin --tags# 查看当前分支的提交历史 里面包含 commit id
git log --pretty=oneline
  1. 查看tag
# 查看本地某个 tag 的详细信息
git show <tagName># 查看本地所有 tag
git tag 或者 git tag -l# 查看远程所有 tag
git ls-remote --tags origin
  1. 删除tag
# 本地 tag 的删除
git tag -d <tagName># 远程 tag 的删除:
git push origin :refs/tags/<tagName># 把本地tag 推送到远程
git push origin <tagName>
  1. 检出tag
# 可以指定标签信息
git tag -a <tagname> -m "XXX..."# 创建附注标签
git tag -a v0.1.0 -m "release 0.1.0 version"# 切换标签
git checkout [tagname]
git checkout -b <branchName> <tagName>

4. Git中的branch分支管理

详细参考资料2.

  1. 创建分支

例子:在本地仓库目录创建一个branch.txt以分支提交。

git branch #显示当前分支是master
git branch new-txt  #创建分支命名为new-txt
git checkout new-txt  #切换到新分支
touch branch.txt
git add branch.txt
git commit -a -m "added branch.txt"
git push test_readme new-txt  ##把分支提交到远程服务器,只是把分支结构和内容提交到远程,并没有发生和主干的合并行为。

在github左上角可看到,new-txt分支已经上传成功,文件也存在了。主master却还没有新文件,因为没合并。

  1. 合并分支

如果new-feature分支成熟了,觉得有必要合并进master

git checkout master  #切换到新主干
git merge new-txt  ##把分支合并到主干
git branch #显示当前分支是master
git push test_readme master #此时主干中也合并了new-txt的代码,test_readme为别名

在github中成功合并,新文件 branch.txt 也存在了。

ps:这里其实和tag管理是类似的感觉

  1. 删除分支与其他命令
#更新远程分支列表
git remote update 别名 --prune#查看所有分支
git branch -a#删除远程分支
git push 别名 --delete 分支名#删除本地分支
git branch -d 分支名

5. Git基本常用命令

mkdir:         XX (创建一个空目录 XX指目录名)pwd:          显示当前目录的路径。git init          把当前的目录变成可以管理的git仓库,生成隐藏.git文件。git add XX       把xx文件添加到暂存区去。git commit –m “XX”  提交文件 –m 后面的是注释。git status        查看仓库状态git diff  XX      查看XX文件修改了那些内容git log          查看历史记录git reset  --hard HEAD^ 或者 git reset  --hard HEAD~ 回退到上一个版本(如果想回退到100个版本,使用git reset –hard HEAD~100 )cat XX         查看XX文件内容git reflog       查看历史记录的版本号idgit checkout -- XX  把XX文件在工作区的修改全部撤销。git rm XX          删除XX文件git remote add origin https://github.com/tugenhua0707/testgit 关联一个远程库git push –u(第一次要用-u 以后不需要) origin master 把当前master分支推送到远程库git clone https://github.com/tugenhua0707/testgit  从远程库中克隆git checkout –b dev  创建dev分支 并切换到dev分支上git branch  查看当前所有的分支git checkout master 切换回master分支git merge dev    在当前的分支上合并dev分支git branch –d dev 删除dev分支git branch name  创建分支git stash 把当前的工作隐藏起来 等以后恢复现场后继续工作git stash list 查看所有被隐藏的文件列表git stash apply 恢复被隐藏的文件,但是内容不删除git stash drop 删除文件git stash pop 恢复文件的同时 也删除文件git remote 查看远程库的信息git remote –v 查看远程库的详细信息git push origin master  Git会把master分支推送到远程库对应的远程分支上

参考资料:

1. Git使用教程

2. linux下git和github搭建使用教程

3. Git中tag标签的使用

Git | git的简单使用教程相关推荐

  1. Git和Github简单教程

    网络上关于Git和GitHub的教程不少,但是这些教程有的命令太少不够用,有的命令太多,使得初期学习的时候需要额外花不少时间在一些当前用不到的命令上. 这篇文章主要的目标是用较少的时间学习Git和Gi ...

  2. Git快速入门篇—— Windows版本淘宝镜像快速下载安装详细步骤及简单入门教程(附带图文教程)

    Git快速入门篇-- Windows版本淘宝镜像快速下载安装详细步骤及简单入门教程(附带图文教程) 前言:我们平时在整理代码的时候,尤其是与别人一起开发项目的时候,常常涉及到代码的更新,因此代码版本问 ...

  3. Git简单通俗易懂教程(包含常见问题与实战运用)

    1.版本控制 版本控制(Revision control)是一种在开发的过程中用于管理我们对文件.目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术. 实现跨区域多 ...

  4. Git和Github简单教程【转】

    转自:https://www.cnblogs.com/schaepher/p/5561193.html#clone 原文链接:Git和Github简单教程 网络上关于Git和GitHub的教程不少,但 ...

  5. Git的简单使用教程(上)

    参考博客:https://blog.csdn.net/Cheny_Yang/article/details/89047680 1. 下载git 下载链接:https://gitforwindows.o ...

  6. JAE京东云引擎Git上传管理代码教程和京东云数据库导入导出管理

    文章目录 Git管理准备工作 Git工具上传代码 发布代码装程序 mywebsql管理 京东云引擎小结 JAE京东云引擎是京东推出的支持Java.Ruby.Python.PHP.Node.js多语言. ...

  7. git 32位_完整的GIT笔记 快速上手小白教程

    GIT 是什么? Git 是目前世界上最先进的分布式版本控制系统.并且它是一个免费的.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. 什么是版本控制系统 版本控制是一种系统,它跟踪一 ...

  8. git推送代码详细教程

    前言: 在写这篇文章之前,其实我已经写过一次教程:git码云的一次配置全记录,但是当时写那个教程的时候,对于git的使用还是懵懵懂懂的,如果是新手完全照着做可能会出现一些意想不到的问题,所以在经历N次 ...

  9. Git最详细的基础教程

    Git最详细的基础教程 Git简介 Git是什么 SVN与Git的最主要的区别 在windows上安装Git 下载安装Git 配置Git Git的基本使用 创建版本库. 版本回退 理解工作区与暂存区的 ...

  10. git笔记(本地操作教程)

    git笔记(本地操作教程) git笔记(团队协作教程,GitHub操作) git笔记(IDEA 集成 Git) git笔记(IDEA 集成 GitHub) 自建代码托管平台-GitLab 官网地址: ...

最新文章

  1. AAAI2021论文:一个高性能3-D目标两步检测法Voxel R-CNN
  2. linux那点事儿(五)----用户管理常用命令 (转)
  3. Helios与Katana的区别
  4. C++中利用WebService下载文件
  5. wordpress 静态化 linux,WordPress如何静态化
  6. 最受欢迎中国技术博客? 我才狂写4周唉
  7. C#中谁最快:结构还是类?
  8. Struts2 - Action 基础用法
  9. 面试官:Redis 主从复制时网络开小差了怎么整?
  10. 使用IDEA在引入Schema空间时报错URI is not registered解决方法
  11. 物联网卡为什么会这么火,主要有哪些优势?
  12. 彻底理解Python切片
  13. 登顶AI服务器全球第一后,浪潮发布AI系统浪潮元脑
  14. 基于STEP7 V5.xWinCC V7.x快速开发项目
  15. 2021最新最细致的IDEA集成SVN工具的使用 (入门到精通)
  16. whl的文件怎么用python打开_windows - 如何使用.whl文件安装Python包?
  17. 如何免费下载百度指数数据
  18. 上传身份证照片js_web端上传图片,截取证件照
  19. python列表生成器语法_Python 列表生成式\生成器
  20. 流图(程序图)表示程序的控制流——McCabe方法度量程序空间复杂度

热门文章

  1. 见习后的感想之关于献血
  2. 安全合规/等级保护--10--等级保护介绍及流程
  3. python 统计检验_常用统计检验的Python实现(附完整代码)
  4. angr符号执行用例解析——0ctf_momo_3
  5. 大学物理实验长度的测量实验报告_大学物理长度测量实验报告
  6. jQuery类似QQ空间时间轴效果_事件展示时光轴js特效代码
  7. python3网络爬虫(2.1):爬取堆糖美女
  8. Python 缩写月份单词
  9. 本地化部署方案 VS 云托管方案
  10. 如何在PDF中修改内容?这个方法免费编辑