当前位置: 首页 > article >正文

【持续更新】Github实用命令

Intro

最近高强度使用github,遂小计于此作为备忘。

Basic

github是一个代码管理软件,能够track文件变动并且管理版本,是当代coding必不可少的工具。当你安装好github在本地以后,你可以通过以下命令初始化当前文件夹(假设是/WorkingSpace)的github管理

cd WorkingSpace 
git init

此时/WorkingSpace下会创建一个隐藏文件夹.git,它负责储存所有有关github的内容。
在初始化之后,当前的仓库并没有track任何文件。运行以下命令将file加入track列表中

git add file

正如linux的文件操作,你可以使用.来代表当前文件夹下的所有文件,通过以下操作你可以一键加入当前文件夹下的所有文件

git add .

但是在复杂仓库的管理时切忌直接使用以上命令,很容易track很多无意义的文件,导致不必要的冗余与开销。你可以创建.gitignore文件在/WorkingSpace下,直接将忽略的文件写在.gitignore中,每个文件一行,如

file

每一次git add操作会将文件放入缓存区,使用git commit将当前缓存区的内容记录为一个新的版本

git commit -m "This is your commit message."

每一次commit都有对应的ID,你可以通过reset命令回到某个历史的版本中

git reset XXXXXXXXXXXXXXXXX

此类reset为soft reset,只会改变当前的版本号,并不会改变本地的文件。
推荐使用VS Code的github功能,你可以直观地使用进行管理、查看版本号。VS Code在此命令后会显示旧版本与本地文件的区别。

你还可以使用hard reset改变本地的代码(本地代码将强制更改为某个版本的代码,很难找回!!!)。

git reset --hard XXXXXXXXXXXXXXXXX

你还可以使用HEAD表示当前最新的版本号,这个命令可以帮助你快速清空缓存区。

git reset --hard HEAD

事已至此你成功维护了本地的github仓库。

照着github的Create Repository,你可以创建一个线上的github仓库,便于备份与合作。你也可以直接clone一个远程仓库到本地

git clone git@github.com:UserName/RepoName.git
git clone https://github.com/UserName/RepoName.git

你可以用pull将线上拉取到本地,用push将本地更新到线上

git pull
git push

由于git的要求,你必须从当前git的最新版本进行更新,再push,否则你需要先与最新的版本进行手动的commit。由于这个特性更多时候版本更新是线性的,在最后再merge起来。

Merge:你可以使用git pull拉取远程仓库,此时相同的文件将会存在本地和远程两个版本,你需要逐行确认保留远程版本还是本地版本(在VS Code上)。

你也可以使用hard命令强制覆盖Remote仓库(非常危险,很难找回!!!)

git push --hard

Branch

获取当前Local与Remote的Branch list.

git branch -a 

从remote上新建分支(LocalBranch的名字尽量与RemoteBranch名字相同,否则有可能会出现问题)

git checkout -b LocalBranch origin/RemoteBranch

切换至LocalBranch(需先将缓存区清空,如git reset --hard HEAD

git checkout LocalBranch

同一份代码也可以有不同的remote repo,你可以将本地仓库与某个远程仓库绑定,你可以用这个方法clone别人的代码并维护一个属于自己的仓库

git remote set-url origin git@github.com:UserName/RepoName.git

http://www.kler.cn/a/441162.html

相关文章:

  • [HOT 100] 0003. 无重复字符的最长子串
  • Linux二进制部署K8s集群的平滑升级教程
  • 尚硅谷spring框架视频教程——学习笔记一(IOC、AOP)
  • 如何监控ubuntu系统某个程序的运行状态,如果程序出现异常,对其自动重启。
  • 巴塞尔问题详解:计算所有正整数平方的倒数之和
  • deepseek R1的确不错,特别是深度思考模式
  • ‌HBase是什么,‌HBase介绍
  • 以太坊项目日渐冷门:以太坊链项目开发的现状与未来
  • 前端面试汇总(不定时更新)
  • Redis过期key删除策略是什么
  • 前景物体提取
  • 【华为OD机试真题】【2024年E卷】虚拟理财游戏-模拟贪心(C++/Java/Python)
  • JVM(Java虚拟机)的虚拟机栈
  • 在Linux系统安装配置 MySQL 和 hive,hive配置为远程模式
  • 神州数码 DCME-320出口网关 online_list.php 任意文件读取漏洞复现
  • LeetCode hot100-79
  • workman服务端开发模式-应用开发-gateway的onWebSocketConnect开发
  • 前端入门之VUE--ajax、vuex、router,最后的前端总结
  • 远程桌面防护的几种方式及优缺点分析
  • [代码随想录20二叉树]二叉树的公共祖先问题
  • MIPS指令集(一)基本操作
  • 每日算法Day08【删除字符串中的所有相邻重复项、逆波兰表达式求值、滑动窗口最大值、前 K 个高频元素】
  • iOS Delegate模式
  • 微信小程序跑腿平台的设计与实现
  • transformer学习笔记-自注意力机制(2)
  • 导致服务器数据包丢失的原因有哪些?