Git | git的简单使用教程

简介: Git | git的简单使用教程

1. 本地上传代码到Github


  1. 获取公钥

获取公钥的指令是:

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


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

image.png

  1. 配置ssh keys

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

image.png

Title:自行设置

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

image.png

  1. 新建仓库进行push

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

image.png

这里由于我的模型还没有配置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


如此实现了我的需求:

image.png

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

image.png

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中,最后效果如下所示:

image.png


2. Github下载代码到本地


  1. 方法1:git clone下载

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

git clone https://github.com/Clichong/CTR.git


  1. 方法2:界面下载

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

image.png

  1. 方法3:DownGit下载

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

image.png

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


  1. 方法4:插件下载

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

image.png

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


  • 总结:

以上的方法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却还没有新文件,因为没合并。

image.png

  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 也存在了。

image.png

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       查看历史记录的版本号id
git 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标签的使用

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
目录
相关文章
|
7月前
|
开发工具 git
Git教程:深入了解删除分支的命令
【4月更文挑战第3天】
1157 0
Git教程:深入了解删除分支的命令
|
7月前
|
存储 Shell Linux
【Shell 命令集合 文件管理】Linux git命令使用教程
【Shell 命令集合 文件管理】Linux git命令使用教程
112 0
|
7月前
|
安全 开发工具 git
git使用教程
git使用教程
101 0
|
1月前
|
存储 开发工具 git
git工具使用教程全讲解
本文介绍了版本控制的概念及其重要性,详细对比了多种版本控制工具,如VSS、CVS、SVN和Git,重点讲解了Git的基本使用方法、工作原理及与SVN的区别。此外,文章还介绍了GitHub、GitLab和Gitee等流行的代码托管平台,以及如何在这些平台上注册账号、创建和管理仓库。最后,文章还提供了如何在IntelliJ IDEA中配置和使用Git的具体步骤。
48 1
|
2月前
|
编译器 开发工具 数据安全/隐私保护
Git——多人协作/版本控制,在一个gitee仓库下开发(Gitee版教程)手把手教学,包好用的!
本文提供了一个关于如何在Gitee上进行多人协作和版本控制的详细教程,包括新建和初始化仓库、克隆仓库、邀请好友共同管理仓库以及注意事项,旨在帮助用户顺利进行代码协作开发。
305 0
Git——多人协作/版本控制,在一个gitee仓库下开发(Gitee版教程)手把手教学,包好用的!
|
4月前
|
Linux 开发工具 git
|
5月前
|
数据可视化 程序员 开发工具
小白也能玩转Git:从入门到实战详细教程
小白也能玩转Git:从入门到实战详细教程
|
5月前
|
Ubuntu 开发工具 git
git 超实用教程【人人必会!】(含大厂的 git 操作规范)
git 超实用教程【人人必会!】(含大厂的 git 操作规范)
79 0
|
7月前
|
存储 开发工具 git
|
7月前
|
Ubuntu Linux 开发工具