首页 > 其他分享 >Git基础(Based on ProGit)

Git基础(Based on ProGit)

时间:2023-10-07 22:00:59浏览次数:34  
标签:git Based ProGit -- 仓库 Git 提交 分支

Git

Git的配置信息

使用git config命令对Git做一些配置。

Git的配置文件等级

Git的配置文件有三个,分别对应不同的影响等级:

  • Linux下

    • /etc/gitconfig:包含系统上每个用户及他们仓库的通用配置,使用git config --system更改

    • ~/.gitconfig~/.config/git/config:针对当前用户的配置文件,使用git config --global修改

    • .git/config:针对当前仓库的配置文件,使用git config修改

  • Windows下

    • $Git/etc/gitconfig
    • $HOME/.gitconfig
    • .git/config

读取配置时优先读取当前仓库的配置,如果没有就往上找

修改Git配置

  • 修改全局配置:git config --global user.name "zhangsan"

查看当前的Git配置

git config --list

Git基础

初始化Git仓库

将当前目录初始化为Git仓库:git init

如果当前目录中已经有一些文件存在,使用git add <filename>来跟踪某个文件即将其提交到暂存区,或者git add .跟踪当前目录所有文件并提交到暂存区

克隆已有的仓库

克隆github上某个仓库:git clone <url>

git commit -a提交所有已修改的文件,不管有没有在暂存区

从git中移除文件

git rm $FILENAME:要求文件当前没有被暂存,如果被暂存需要添加-f选项,这样强制删除后无法被Git恢复。也可以添加--chached选项直接从暂存区移除(不会从磁盘上移除),移除后是untracked状态

比较差异

文件已修改且未提交到暂存区,与修改前作对比:git diff <filename>

文件已提交到暂存区,与上次提交作对比:git diff --cached or git diff --staged

移动文件

git mv <src> <dst>

运行一次git mv命令相当于

  • mv <src> <dst>
  • git rm <src>
  • git add <dst>

查看提交历史

git log [option]

option

  • -p :显示每次提交的diff

  • -n:显示最近n次提交log

  • --oneline:只显示每次提交的SHA-1和提交信息

提交参数

git commit --amend:提交暂存区修改,并将上次提交与本次提交合并

取消暂存

git reset HEAD <filename>:撤销对某文件的暂存操作,变为已修改未暂存状态

恢复到上次提交的状态

git checkout -- <filename> or git restore <filename>:丢弃所有修改,将文件恢复到暂存区的状态(如果已暂存未提交),否则恢复到上次提交的状态

Git别名

git config --global alias.co checkout

git别名只是简单的文本替换

Git分支

​ Git 和其它版本控制系统(包括 Subversion 和近似工具)的主要差别在于 Git 对待数据的方法。概念上来区分,其它大部分系统以文件变更列表的方式存储信息。 这类系统(CVS、Subversion、Perforce、Bazaar 等等)将它们保存的信息看作是一组基本文件和每个文件随时间逐步累积的差异。

​ 每次提交更新,Git都会保存所有被跟踪文件的快照并将快照索引保存在本次提交创建的提交对象中,而不是记录本次修改与上次的差异。提交对象保存了快照索引、提交信息、父对象等信息。git init后会自动创建一个master分支,每次commit后会创建新的提交对象,master自动向前移动。

一个简单的提交历史。

​ 新建分支实质上是创建一个指向当前分支的最后一个提交对象的指针(Git通过一个HEAD指针记录当前所在的分支,并指向最后一次提交的快照,当切换分支时,HEAD指针也随之变动),由于 Git 的分支实质上仅是包含所指对象校验和(长度为 40 的 SHA-1 值字符串)的文件,所以它的创建和销毁都异常高效。,创建一个新分支就相当于往一个文件中写入 41 个字节(40 个字符和 1 个换行符)

Git创建分支

git branch <branch_name>

下图展示了执行git branch testing创建testing分支的结果。

HEAD 指向当前所在的分支。

Git删除分支

git branch -d <branch_name>如果该分支没有被合并则删除失败,使用-D强制删除

Git切换分支

git checkout [option] <branch_name>

option

  • -b:创建分支后切换到该分支

Git合并分支

将两个分支合并会产生一个新的提交对象。

git merge <branch_name>:将brance name合并到当前分支,如果没有文件冲突发生,则合并完成;如果发生文件冲突,Git会提示合并未完成,使用git st命令查看未merge的文件并手动修改,未merge的文件分为上下两部分,用======分割,手动选择要保存的内容并删除>>>>>>>=======<<<<<<<<<<后执行git add <filename>git commit后自动完成合并

git branch --merged:查看已合并到当前分支的分支

git branch --no-merged:查看所有未合并工作的分支

如果要合并的分支与当前分支在一条大分支上,也就是当前分支落后于要合并的分支,那么只需要将当前分支的指针快进即可。

接下来将iss53分支合并到master分支上:

一次典型合并中所用到的三个快照。

git checkout master

git merge iss53

一个合并提交。

Git查看所有分支

git branch [option]

option

  • -vv:查看详细信息

远程仓库

添加远程仓库

git remote add <shortname_for_remote> <remote_url>

查看已添加的远程仓库

git remote [option] :打印所有已添加的远程仓库名称

option: 使用-v选项显示远程仓库的url

git remote show <remote_name>:查看某个远程仓库的详细信息

拉取远程仓库的更新

git fetch <remote_name>

fetch仅拉取远程仓库的更新,不会自动和本地分支合并,需要手动merge

git pull <remote_name>:拉取远程仓库的更新并与自动本地分支合并

推送到远程仓库

git push <origin_repo> <local_branch[:remote_branch]>

只有当你有所克隆服务器的写入权限,并且之前没有人推送过时,这条命令才能生效。 当你和其他人在同一时间克隆,他们先推送到上游然后你再推送到上游,你的推送就会毫无疑问地被拒绝。 你必须先将他们的工作拉取下来并将其合并进你的工作后才能推送。

删除远程分支

git push origin --delete <branch_name>

远程仓库的重命名与移除

git remote rename <src> <dest>

git remote rm <remote_name>

变基

使用 rebase 命令将提交到某一分支上的所有修改都移至另一分支上,就好像“重新播放”一样

据说rebase可以让提交历史更简洁,目前没看出来

rebase的原则:只对尚未推送或分享给别人的本地修改执行变基操作清理历史,从不对已推送至别处的提交执行变基操作

标签:git,Based,ProGit,--,仓库,Git,提交,分支
From: https://www.cnblogs.com/ptrzs/p/17747590.html

相关文章

  • 将最近的提交移动到Git的新分支
    内容来自DOChttps://q.houxu6.top/?s=将最近的提交移动到Git的新分支如何将主分支上的最近提交移动到新分支,并将主分支重置为这些提交之前的状态?例如,从以下状态:masterA-B-C-D-E变成这样:newbranchC-D-E/masterA-B移动到现有分......
  • CentOS环境:离线安装配置gitlab(适用于内网环境)
    前言:  此篇是为了完结真实的物理隔离环境下、验证yum缓存的文件包安装配置是否成功,对上篇在线安装文章的补充。1.互联网电脑环境准备1.1电脑环境配置信息IP:192.168.31.164OS:CentOSLinuxrelease7.9.2009(Core)1.2清除yum的rpm包缓存数据包清除前的数据记录:[root@bdlab......
  • Gitlab管理员忘记密码
    目录Gitlab管理员忘记密码一、背景二、邮箱方式找回1.在gitlab登录窗口2.输入邮箱账号找回3.重设密码三、Bash命令方式找回1.切换到git用户2.查看gitlab命令文件3.进入gitlab控制台4.查询gitlab超级管理员信息4.重置密码并报存用户对象5.返回gitlab登录界面重新登录Gitlab管理员......
  • 【好玩】如何在github主页放一条贪吃蛇
    前言......
  • 【好玩】如何在github主页放一条贪吃蛇
    前言......
  • GitBooK使用教程存档
    Gitbook使用教程GitBook文档(中文版)Gitbook简单介绍......
  • 第一次git上传的完整流程
    第一次git上传的完整流程使用git简单命令上传代码push到远程仓库+简单介绍了一个.git文件结构。代码上传到gitee和github流程一样的,不过你上传到github可能网不行失败,所以我们使用gitee*前置说明你必须有git工具并且配置了环境变量。配置环境变量使用git会更方便。测......
  • Git .gitattributes 配置
    .gitattributes文件是一个用来配置Git版本控制系统的文件,它的作用主要包括以下几个方面:定义文件属性:.gitattributes文件可以用来指定特定文件或文件类型的属性,例如文本文件、二进制文件、合并策略等。这可以帮助Git更好地处理不同类型的文件。控制行尾格式:你可以使用......
  • 怎么更改git仓库地址
    1.显示当前Git仓库的远程仓库地址gitremote-V2.更改Git仓库的远程仓库地址gitremoteset-urlorigin[new-remote-url]3. 验证是否更改成功,显示Git仓库的远程仓库地址gitremote-v4.将更改后的代码提交到新的远程仓库地址gitpushoriginmaster参考:https......
  • 2023中大厂Android面试八股文合集,GitHub,牛客,leetcode已爆火!
    前言金九银十已过半,不知道大家现在都到哪个阶段了,有没有已经找到心仪的工作的朋友?有没有还没准备好面试在各大平台找资料临时抱佛脚的朋友?或是现在在准备,想要明年金三银四跳槽的朋友?不管你是现在急切找工作还是找资料备战,我都非常推荐你看看我花2个多月从GitHub,牛客,leetcode上为大......