git仓库与本地暂存区的同步问题

这篇具有很好参考价值的文章主要介绍了git仓库与本地暂存区的同步问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

向下同步

对于远程仓库的项目,初始化一个配置文件,配置远程仓库及相关信息,赋值远程仓库的地址,使用git pull命令即可拉取仓库代码。

git pull [remote_addr]

该部分完成向下同步

向上同步

向上同步时会遇到很多的问题,比较顺利的是add,commit,push没有障碍。

git add .

项目文件添加到工作区

git commit -m "msg"

项目文件添加到暂存区

git push [remote_addr] [remote_git]:[local_git]

项目文件推送到远程仓库

如果遇到障碍一般会遇到两个层面的障碍:

  1. 工作区与暂存区同步

git一般都有.gitignore用户屏蔽非必要文件。工作区是未和git产生联系的目录,此时还未进入git版本管理,.gitignore可以选择那个文件将会被提交到缓冲区。

.gitignore文件的使用方法 首先,在你的工作区新建一个名称为.gitignore的文件。 然后,把要忽略的文件名填进去,Git就会自动忽略这些文件。github上有一些常用的忽略文件

使用gitignore文件实现工作区与缓存区的文件筛选。

在git代码提交时首先通过git add将命令添加到缓冲区,这个步骤在有些ide中会自动完成。只有先提交到缓存区的代码才会进入git版本记录。

git工作区可以理解为开发者可以看得见的,任意编辑的文件,例如如下文件夹

git仓库与本地暂存区的同步问题,# Git,git
git仓库与本地暂存区的同步问题,# Git,git
这里的所有内容都是工作区的内容,通过使用了git add命令将文件并使用gitignore筛选后提交到缓存区。

需要将那么些文件添加到工作区可以使用如下命令:

git add *  # 将工作区所有修改添加到暂存区
git add .  # 将工作区所有修改添加到暂存区
git add <file-name>  # 将指定文件添加到暂存区
git add *.js  # 提交所有 .js 格式文件
git add -f <file-name>  # 强制添加 指定文件添加到暂存区

# 注:<file-name> 指的是文件的名称

在commit时一般将所有文件提交,所以git add最好时有选择性的提交。

如下初始化一个git仓库将所有内容添加到工作区中
git仓库与本地暂存区的同步问题,# Git,git
git status查看状态
git仓库与本地暂存区的同步问题,# Git,git
此时代码已经被提交到缓冲区了。

如果gitignore漏写导致提交了一些无关代码该如何撤回或者删除呢?

git reset命令撤销缓存文件

使用git reset命令撤销.idea文件

git仓库与本地暂存区的同步问题,# Git,git
git reset命令

git reset <file-name>   # 从暂存区恢复指定到工作区
git reset  .          # 从暂存区恢复所有文件到工作区
git reset --hard        # 把暂存区的修改退回到工作区

git reset撤销就是恢复未使用git add命令之前。
这里会遇到的问题是git commit后git reset会导致本地仓库和缓存区不一样,该问题在会面讲解。

git reset是撤回commit的操作也就是撤回本地仓库的提交,由于缓存区(git add)和本地仓库(git commit)是联级操作的因此再git rest也能对缓存区撤回(简单来水就是reset是撤回commit的,由于缓存区和本地仓库要是联级操作,没有commit直接撤回了add的内容)

git restore命令是专属用来撤销缓存区代码的,也就是返回git add之前的状态。

该命令又分两种情况,缓存区的内容和本地仓库内容是否一致,如果对文件增加了新的功能话,比本地仓库内容多,再git restore是就需要考虑是否保留这些内容。

git restore --staged将本地仓库的内容撤销到缓存区并保留修改
git restore将本地仓库内容撤销到缓存区不保留修改

git restore就是撤回git add提交。

例如,git add添加新文件

git仓库与本地暂存区的同步问题,# Git,git
git resotre撤回并保留工作区修改,如果不用–staged那么新追加的代码就消失了
git仓库与本地暂存区的同步问题,# Git,git
撤销了缓存:
git仓库与本地暂存区的同步问题,# Git,git

😃😃😃😃git resetgit restore相似之处在于他们都能撤回缓存区内容,也就是git add的内容,(reset是由于联级操作完成);不同之处在于rest还可以操作本地仓库即(commit的内容),后者只能操作缓存区。

git仓库与本地暂存区的同步问题,# Git,git
看上图,查看本地仓库没有.idea/etcd.iml文件(没有commit),使用git reset命令撤回了缓存区的该文件Untracked fiels出现了该文件。

git仓库与本地暂存区的同步问题,# Git,git
如上图,说明git restore并不能撤回本地仓库的文件。

git仓库与本地暂存区的同步问题,# Git,git
如上图所示,git restore撤回缓存区内容。

git status😀😁用于查看工作区、暂存区的状态,会经常用到。

git rm --cached <file-name> 命令将本地暂存区的内容移除,直接删除文件的git索引,从而删除文件跟踪。

git仓库与本地暂存区的同步问题,# Git,git
git rm直接将本地仓库和缓存区的内容直接删除了。

  1. 暂存区与本地仓库同步

git commit将暂存区的内容提交到本地仓库,如下未当前缓存区内容:

git仓库与本地暂存区的同步问题,# Git,git
git commit将缓存区全部内容提交,因此在工作区提交到缓存区是需要认证筛选。如下,git commit命令提交代码

git仓库与本地暂存区的同步问题,# Git,git

git commit <file-name> ... "相关的记录信息"   # 将缓存区的指定文件提交到本地仓库
git commit -m "相关的记录信息"   	  # 将缓存区的所有文件提交到本地仓库

如果缓存区没有仔细筛选,导致不必要文件提交到了本地仓库,git也提供了git revert撤销提交。

git revert HEAD

git仓库与本地暂存区的同步问题,# Git,git

注意revert命令会回溯到前一个commit的版本,如果只有一个版本,那么本地文件也会消失,注意revert时一定要大于一个版本。

git rm删除本地仓库的文件

git仓库与本地暂存区的同步问题,# Git,git

git提交了多余的内容或者想删除之前提交的内容,可以使用该命令,对本地仓库的操作都是联级操作,对本地仓库的操作和缓存区是同步的。

git rm --cached注意一定要携带-cached不然会将本地文件一起删除了,除非完全不需要了。

把.idea文件直接删除了是无效的,因为此时的删除只是把工作区删除了,缓存区还在,本地仓库。这次文件仍然在commit的本地仓库,在写新代码是新代码不断从工作区git add,再git commit,被merge到commit的本地仓库。如下图

git仓库与本地暂存区的同步问题,# Git,git

直接删除只是将工作区的文件删除了,缓存区和本地仓库仍然存在,可查看,git status查看缓存区文件状态
git ls-files -c查看本地仓库文件状态git ls-files -h获取更多命令

git仓库与本地暂存区的同步问题,# Git,git
git仓库与本地暂存区的同步问题,# Git,git

git直接检索出了文件目录下被删除的文件,也给出了方法(git add重新添加,git rm删除工作区文件,git restore)

git ls-files --help查看有关本地文件的命令

git仓库与本地暂存区的同步问题,# Git,git

通过git rm删除缓存区内容,git rm命令比较特殊是链级删除,首先本来开发者就要删除文件目录的文件,又要删除工作区和暂存区,rm就很好完成该工作,一次性删除三个位置的文件,分三种情况:
(未commit,已add,只删除add的部分;以commit,以add,全部删除;未commit,未add,删除不了,未与git所有)

不会出现以commit,未add的情况,应为commit和add是关联的,一样的。另外删除均将文件目录的文件也删除了。

由于git在提交时都是从缓存区全部提交,因此在删除本地仓库时缓存区也同步删除了,这也是必须的,不然下次再提交如果缓存区还存在又被提交上去了,一次类推,对本地仓库的操作都是和缓存区同步的,这些有git系统自动完成。

git revert是通过切换不同的提交版本号实现代码回溯,git rm是直接删除文件,git reset是撤回缓存区提交的内容,这些命令各有不同但都能实现代码回溯功能,而且缓存区随本地仓库自动变化。

更多问题请移步论坛Git问答

极客笔记™ - 深入浅出打磨IT笔记文章来源地址https://www.toymoban.com/news/detail-634989.html

到了这里,关于git仓库与本地暂存区的同步问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • git本地新建分支,并同步到远程仓库

    1、新建本地分支 2、在远程仓库中新建分支,名称保持一致 3、查看本地分支 4、转到本地分支 5、删除本地分支 6、同步本地分支至远程仓库 7、如果有错误,提示版本不同步,如回退版本后修改了内容并需要同步,这时候可以使用强制推送

    2024年02月11日
    浏览(46)
  • 利用git同步vscode本地库到GitHub仓库

    参考: VsCode安装和配置c/c++环境(超完整,小白专用) 参考: git的安装与配置教程-超详细版 (1)GitHub账号注册: 略(比较简单的,仅需要一个邮箱即可)。 (2)GitHub仓库建立: 登陆进去以后,就可以看到如下界面: 点击“New”即可创建一个新的库。 或者在“个人中心”→

    2024年02月04日
    浏览(59)
  • 【小吉带你学Git】Git命令(用户签名,本地库,暂存区,文件,版本 等命令)

    🎊专栏【Git】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 🌺欢迎并且感谢大家指出小吉的问题🥰 签名的作用是区分不同的操作者身份,能够确定本次提交是谁做的 git首次安装必须设置一下用户签名,否则无法提交代码 这里设置用户签名和登

    2024年02月12日
    浏览(30)
  • 【git】解决本地仓库与远程仓库不一致问题

    目录 方法1:(未验证) 方法2:(验证过) 方法3:常规 1.将远程仓库代码拉取到本地作为本地的一个新的分支 temp 2.将这个temp的分支与我们的主分支对比查看有什么不同,有那些冲突 3.将新的temp分支与本地主分支合并 4.重新提交本地主分支到远程仓库 5、删除分支 方法4、未进

    2023年04月19日
    浏览(40)
  • Git详解(带图) --- 本地电脑的工作区、暂存区、本地仓与远程仓

    在 git 的丰富功能中,工作区 (Work Space)、暂存区 (Index/Staging Area)、本地仓库 (Local Repository) 和远程仓库 (Remote Repository) 被认为是四大核心概念。今天让我们深入了解这些神秘的组成部分,揭开它们的面纱,让你能够更好地利用Git来管理项目。 上图相信大家再熟悉不过,这是我

    2024年01月18日
    浏览(45)
  • git:一个本地仓库绑定多个远程的方法以及遇到的问题

    绑定方法见知乎大佬:本地Git仓库关联多个远程仓库的两种方法 一般情况下,没人这么搞! 但是公司迁移git仓库阶段,xx云环境上的gitlab要有操作记录,不然影响整体评分,这就不得一个本地仓库关联了原来的仓库+新的xx云环境的仓库 我才用的是上述文章里的第二种方式:

    2024年02月09日
    浏览(51)
  • 【git踩坑记录】git push时本地分支名与远程仓库分支名不一致引发的问题

    我在github上新创建的远程仓库默认分支名为main,而本地仓库默认分支名为master,当我push代码的时候碰到了若干坑… 先在github上快速创建个仓库,有个readme文件,远程仓库分支是main分支 然后本地创建两个文件夹,假装是两台主机,我们先在张三文件夹里写点东西 在张三的文

    2024年02月05日
    浏览(49)
  • PyCharm环境下Git与Gitee联动:本地与远程仓库操作实战及常见问题解决方案

    写在前面 :本博客仅作记录学习之用,部分图片来自网络,如需引用请注明出处,同时如有侵犯您的权益,请联系删除! 在软件开发中,版本控制是一个不可或缺的工具。随着项目的增长和团队的扩大,管理源代码的变更、协作和跟踪变得愈发重要。Git正是为了满足这些需

    2024年04月25日
    浏览(74)
  • 解决git克隆到本地的仓库文件夹不显示红色感叹号、绿色对号等图标的问题

          电脑有时候重启或者别的什么原因导致本地仓库不显示绿勾或者红色感叹号的符号 第一步: win加R然后输入regedit打开注册表 第二步: 按下面路径打开 HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerShellIconOverlayIdentifiers 找到如下图在Tortoise相关文件 然后重命名,原有

    2024年02月11日
    浏览(68)
  • git 不同仓库 同步

    if_git_pull_or_checkoutBranch=$1 ##参数2: 复深蓝代码分支 fulan_branch=$2 ##参数2: 项目名称 project_name=$2 ##参数3: 上海证券代码分支 securities_branch=$3 #复深蓝代码路径 fulanlinuxPath=‘/d/git-work/fulan’; securitieslinuxPath=‘/d/git-work/sh-securities’; #开启扩展通配符 shopt -s extglob fulan_branch1=$2 fu

    2024年04月09日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包