首页 > 其他分享 >GIT一节课

GIT一节课

时间:2024-05-15 17:43:56浏览次数:15  
标签:origin 文件 git -- GIT 提交 一节课 分支

这是第一篇一节课系列,会不断更新迭代。GIT是一个开源的分布式版本控制系统,

如上图先理解GIT的4个工作区域:
workspace: 工作区
index/Stage: 暂存区
Repository: 本地仓库
Remote: 远程仓库

刚写的代码都是在工作区,执行add命令后就是提交到了暂存区,再执行commit命令后就把代码提交到了版本库(本地仓库)了,最后再执行push命令把本地代码提交到远程版本库。

.gitconfig配置,mac配置到home目录下的.gitconfig即可,没有就创建一个

[alias]
    st = status
    co = checkout
    cm = commit
    br = branch
[color]
    diff = auto
    branch = auto
    interactive = auto
    status = auto

使用之前需要配置个人信息

git config --global user.name "Your Name Comes Here"
git config --global user.email [email protected]

通过log查看修改了哪些文件.
git log --stat

切分支
git checkout <分支名>

让文件恢复到最近一次commit或add的状态, "."表示指定为当前目录为恢复目录
git checkout -- .

建立本地的dev分支追踪远程仓库的develop分支
git checkout –b dev origin/develop

从指定tag建立对应的本地的ltag分支
git checkout –b ltag <tag名>

创建一个空的分支

git checkout --orphan <空分支名> //创建一具分支不会指向任何以前的提交,就是它没有历史
git rm -rf .  //把当前内容全部删除,‘.’不能少。
echo '# new branch' >> README.md  //创建一个空文件
git add README.md
git commit -m 'new branch'
git push origin <空分支名>

从origin拉下来一些更新,但是产生了很多冲突,你暂时没有这么多时间去解决这些冲突,因此你决定稍候有空的时候再重新pull。可以用以下命令恢复到合并之前。
git reset --hard

废弃这次提交
git reset --hard HEAD^

恢复到指定提交
git reset --hard <提交号(commit id)>

假设你已经使用git add .,将修改过的文件a、b加到暂存区,现在你只想提交a文件,不想提交b文件,应该这样
git reset HEAD b

创建本地分支
git branch <分支名>

删除本地分支,可以同时删除多个
git branch -D <分支名>

显示远程分支
git branch -r

查看远程仓库的信息
git remote show origin

对比工作区与暂存区指定文件的差异
git diff <文件名>

对比暂存区与最后一次commit指定文件的差异
git diff --cached <文件名>

两个分支上最后 commit 的内容的差别
git diff <分支名1> <分支名2>

显示出所有有差异的文件(不详细,没有对比内容)
git diff branch1 branch2 --stat

显示出所有有差异的文件的详细差异(更详细)
git diff branch1 branch2

显示指定文件的详细差异(对比内容)
git diff branch1 branch2 <具体文件路径>

找出自昨天之后你已经做了什么改变
git diff "@{yesterday}"

删除远程的分支,可以同时删除多个
git push origin :<分支名1> :<分支名2>

查看某个分支的创建者以及创建时间

git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' | sort -k5n -k2M -k3n -k4n

刷新本地仓库与远程仓库的同步相关改动,比如你远程删除了一个分支,到本地查看还有此分支,你需要用如下命令将本地仓库的对应的分支也清理掉
git remote prune origin

看有关于origin的一些信息,包括分支是否tracking(跟踪)。
git remote show origin

同时从工作区和索引中删除文件。即本地的文件也被删除
git rm

从索引中删除文件。但是本地文件还存在, 只是不希望这个文件被版本控制。
git rm --cached

将指定的提交(commit)应用于当前分支,commitHash是提交编号,cherry-pick常用于合并其他分支部分功能
git cherry-pick <commitHash>

一次应用多个提交。
git cherry-pick <HashA> <HashB>

应用一系列的连续提交,提交 A 必须早于提交 B,但不包含A提交
git cherry-pick A..B

应用一系列的连续提交,提交 A 必须早于提交 B,包含A提交
git cherry-pick A^..B

cherry-pick -m配置项告诉 Git,应该采用哪个分支的变动。它的参数parent-number是一个从1开始的整数,代表原始提交的父分支编号。
git cherry-pick -m 1 <commitHash>

标签:origin,文件,git,--,GIT,提交,一节课,分支
From: https://www.cnblogs.com/xrain9/p/18194369

相关文章

  • index.js from Terser Error: error:0308010C:digital envelope routines::unsupporte
    Vue报错error:0308010C:digitalenveloperoutines::unsupported出现这个错误是因为node.jsV17版本中最近发布的OpenSSL3.0,而OpenSSL3.0对允许算法和密钥大小增加了严格的限制,可能会对生态系统造成一些影响.方法1.打开终端(按健win+R弹出窗口,键盘输入cmd,然后敲回车)并......
  • Git基础操作
    #1.安装git请参考之前的步骤#2.配置gitgitconfig--globaluser.name"yourname"gitconfig--globaluser.email"[email protected]"#注册时用的邮箱#创建新仓库gitinit#初始化仓库gitclonehttps://github.com/user/repo#克隆远......
  • gitlab备份
    gitlab备份cronteb-e配置:02***/root/gitlab.sh03***/var/opt/gitlab/backups/gitlabbak.shgitlab.sh脚本(本机备份)#!/bin/bash/opt/gitlab/bin/gitlab-rakegitlab:backup:createCRON=1 gitlabbak.sh脚本,把备份复制到192.168.0.168设备上进行异地备份(两台设备......
  • git commit 撤销的三种方法
    一般在提交代码的时候,顺序是这样的gitstatus//查看修改文件状态(已添加至暂存区还是未添加至暂存区)gitadd.//添加所有已修改文件gitaddxxx/xxx//添加目录为xxx/xxx的文件至暂存区 gitcommit-m'xx功能全部完成'//提交暂存区代码至仓库中//在仓库中创......
  • git配置了 .gitignore 文件,但是不生效
    方法一.gitignore中已经标明忽略的文件目录下的文件,gitpush的时候还会出现在push的目录中,或者用gitstatus查看状态,想要忽略的文件还是显示被追踪状态。原因是因为在git忽略目录中,新建的文件在git中会有缓存,如果某些文件已经被纳入了版本管理中,就算是在.gitignore中已经声明了......
  • git仓库ssh连接
    1、创建ssh秘钥:1)设置git账户:gitconfig--globaluser.email"[email protected]"gitconfig--globaluser.name"zhouyehong"2)创建ssh公钥:ssh-keygen-trsa-C'[email protected]'2、添加到个人git账户:1)cat~/.ssh/id_r......
  • 使用Git命令从本地上传到码云
    Gitee创建仓库内没有内容本地:初始化Git仓库:gitinit提交文件到暂存区:gitadd.//.表示提交所有文件提交文件到工作区:gitcommit-m"此次提交的描述,简介明了的描述"关联码云仓库:gitremoteaddoriginhttps://gitee.com/xxxx/xxxxx.git推送到远程仓库:gitpush-uorigin......
  • GitLab 管理 NuGet 包
    1概览在服务器上构建项目时,需要引用nuget.org之外的包,如公司内部开发的、第三方未发布到nuget.org上的。怎么办?GitLab提供了PackageRegistry来解决这个问题。2上传NuGet包到指定项目中新建或使用一个已有项目,作为存放NuGet包的项目,为其他需要引用对应NuGet......
  • Gitee千Star优质项目解析: ng-form-element低开引擎解析
    好家伙,在写项目的时候,我发现自己的平台的组件写的实在是太难看了,于是想去gitee上偷点东西,于是我们本期的受害者出现了gitee项目地址https://gitee.com/jjxliu306/ng-form-elementplus-sample.git组件库以及引擎完全开源,非常牛逼的项目,非常牛逼的作者 项目名:ng-form-......
  • Windows下git配合Unity要设置autocrlf=false
    Unity的.asset文件的换行符一定是Unix(LF)格式的,哪怕在设置里选了用Windows(CRLF)也没用。这个选项貌似只对创建的C#Script有效。这些Unix换行文件提交上去没问题,但如果你想revert或者checkout,就会变成Windows换行,然后如果在Unity里面修改了,哪怕最后实际数值没有变化,也会给你......