相关疑难解决方法(0)

git switch分支而不丢弃本地更改

好吧,让我们说有一天我们做了一些修改,当我们去提交它们时,我们注意到我们正在处理错误的分支.

我们如何强制git切换分支而不丢弃本地更改.

在我等待回复的时候,我可能会以天真的方式解决这个问题,但我想知道如果我说的话是正确的程序,如果我说之前没有发生这种情况......

  • 备份改变了回购
  • git reset --hard
  • git checkout right-branch
  • 恢复更改
  • git commit -m "changes"

git git-branch

154
推荐指数
6
解决办法
9万
查看次数

什么是“git restore”命令,“git restore”和“git reset”有什么区别?

当我想取消暂存文件时,我所有的 Git 教程都显示如下内容:

$ git add *
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    renamed:    README.md -> README
    modified:   CONTRIBUTING.md
Run Code Online (Sandbox Code Playgroud)

此提示告诉我们git reset用于取消暂存文件。

但是,在我的终端中,我看到:

git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
    renamed:    cat.js -> catcat.js
    renamed:    tolendo.gogo -> tolendo.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)
    readme (copy).md
    tolendo (copy).txt
    zing (copy).html
Run Code Online (Sandbox Code Playgroud)

我的终端告诉我使用,git …

git restore git-reset unstage

107
推荐指数
4
解决办法
8万
查看次数

"分支"究竟是什么意思?

长话短说...

据我所知,术语"分支"(用Git的说法)可能指的是相关但不同的东西:

  1. 提交的非符号引用/指针,
  2. 这种参考的名称(例如"主人"),
  3. 存储库的提交DAG的子图由这样的引用所指向的提交中可到达的所有提交组成.

但是,我已经看到这个术语过去常常是指三种可能的用法以外的东西(下面有更多细节).在Git上下文中,我的列表中缺少的"分支"一词是否还有其他有效和明确的用法?

更多细节

使用Git大约一年后,我正在为CS学生准备一个简短的教程.我真的想要确定Git术语,以避免任何混淆.

当然,我现在已经使用Git分支了一段时间; 我很习惯使用它们并且发现Git分支模型很棒.但是,我仍然发现术语"分支"有问题且含糊不清,因为它似乎至少引用了两个不同的东西,具体取决于它所使用的上下文...有时甚至在同一个教程/手册中.

用法1:branch =指向提交的指针/引用

Pro Git书(3.1中 - 分支是什么),在显示下图后,

在此输入图像描述

继续将分支定义为

只是一个指向其中一个提交的轻量级可移动指针.

据我所知,这也是Git手册页中"分支"的含义.

我对这个定义非常满意.我认为分支只是指向DAG中特定提交的引用,而分支的"提示提交"是该引用指向的提交.到现在为止还挺好.可是等等...

用法2:branch = DAG的子图

该Atlassian的Git的教程介绍分支如下:

分支代表独立的发展路线.

我猜他们的意思是一串提交.让我改进一下这个想法......唯一对我有意义的解释是术语"分支"也可以指存储库的提交DAG的子图,该提交DAG由所考虑的提示提交可到达的所有提交组成.

但是,Pro Git书籍也包含以下图表(参见3.4 - 分支工作流程),

在此输入图像描述

这似乎与我的解释相矛盾,因为它似乎暗示只有提交C2- C5(不C1)属于develop分支,并且只提交C6- C7(不是C1- C5)属于topic分支.

我发现这种用法含糊不清,因为如果我在那个阶段绘制DAG,而不知道分支引用在过去指向的位置,并且没有任何假设三个分支之间的任何层次结构,我会得到的是

在此输入图像描述

我还发现其他Git学习资源中的一些图表令人困惑.特别考虑以下内容(取自Lynda.com的介绍视频- Git Essential Training):

在此输入图像描述

这里,尖端master是实际 534de(和HEAD指向master),但图中的"主"标签的位置是非常误导.在这种情况下,该标签应该描述的是我不清楚的......

编辑:我已经 …

git branch terminology

34
推荐指数
2
解决办法
3197
查看次数

从 Git 中删除文件,但不删除远程用户,只是忽略它

我和其他几个人都可以访问包含 IDE 自动生成的一个文件的存储库。该文件是特定于 PC 的,因此不应位于源代码管理中,但目前是。我想删除它并将其添加到.gitignore,但我不希望其他协作者在拉取我的更改时将其删除。关于删除文件但保留本地副本存在很多问题;但他们不覆盖其他用户,所以当他们拉动时,尽管我保留了我的副本,他们仍然会丢失副本:

从 Git 存储库中删除文件,而不将其从本地文件系统中删除

如何 git rm 文件而不将其从磁盘中删除?

还有一些问题和解决方案,可以在拉取时不丢失本地文件,这样他们就可以保留文件,但这需要拉取时的明确操作,我不想去告诉每个人到底如何拉取这个文件时间。我确实发现了两个重复的问题。得到的答案是不可能,但那都是 5 年前的事了——这期间有什么变化吗?

Git 删除跟踪的文件,但保留本地和远程

Git 忽略文件,而不删除它

这很重要,因为该文件是在您首次导入整个项目时自动生成的,并且包含有关本地编译器/库版本的信息。所以删除它需要重新导入。如果有什么区别的话,那就是.idea/scala_compiler.xmland .idea/scala_settings.xml(实际上整个.idea目录应该被忽略)。基本上我想让 Git 将一个文件设置为不再跟踪,但不为任何人删除它。

git ignore intellij-idea

9
推荐指数
1
解决办法
3046
查看次数

Intellij IDEA中Git stash对话框的"Keep Index"选项有什么作用?

在IDEA文件中说

选中此复选框可使IntelliJ IDEA将索引中暂存的更改带到工作树中以进行检查和测试.

有人可以解释这是什么意思吗?

git intellij-idea

8
推荐指数
1
解决办法
2653
查看次数

git checkout &lt;commit-hash&gt;与git checkout分支

我在玩git,在这里感到困惑。

该HEAD的develop分支是在
235a6d8

当我做:

git checkout 235a6d8
Run Code Online (Sandbox Code Playgroud)

从任何其他分支机构或develop分支机构,这使我陷入了孤立的头脑。
我不确定在签出该分支的最新提交时为什么会发生这种情况。

当我做:

git checkout develop
Run Code Online (Sandbox Code Playgroud)

我可以正确切换到开发分支。

我git checkout <commit-has>和之间没有区别git checkout branchname。
它们有何不同?

git git-checkout

8
推荐指数
1
解决办法
668
查看次数

主控和分支显示相同的更改

我还在学习Git的过程中,当我觉得我已经掌握了它的时候......我遇到了一个问题,让我再次感觉自己是一个新手......

我有一个主控和一个分支。由于某些“只有上帝知道”的原因,当我在两个分支上执行“Git status”时,它们显示相同的更改。

当我将这些更改提交给其中一个时......我在另一个中看不到它们......

Master*: Git status
On branch Master
Changes not staged for commit:
      modified:   Config/A.txt 
Untracked files:
       logs/B.txt


**Branch-1*: Git status**
On branch Branch-1
Changes not staged for commit:
      modified:   Config/A.txt 
Untracked files:
       logs/B.txt   
Run Code Online (Sandbox Code Playgroud)

你暂时是上帝,:)

git

7
推荐指数
2
解决办法
4052
查看次数

如何配置 Git 以在分支更改时自动从原点拉取?

当我切换分支时,如果本地是干净的并且在其原始对应物之后,我想总是从源中提取最新的更改。本地分支是其远程分支的跟踪分支,fetch 按预期工作。

  • 可以将 Git 配置为自动执行此操作吗?

  • 是否有一个存储库范围的设置来为所有分支执行此操作?(我们的分支经常被创建和删除,因为公司政策是每个任务一个分支,在审查时被 PR 和合并)


编辑:

对于上下文,我使用 Visual Studio 2017 及其用户界面来执行 Git 命令。让 Git 保持最新没有问题。我需要使用命令行执行一些 Git 命令,例如重命名分支或隐藏 repo 设置。

当我说“本地是干净的”时,是的,它指的是来自git status和 VS的工作树,其中没有传出提交或本地修改的文件。VS 有一个非常漂亮的 UI,可以实时显示这些信息。

经过

(我们的分支经常被创建和删除,因为公司政策是每个任务一个分支,在审查时被 PR 和合并)

这应该是一种说“我真的不想为每个分支设置此设置或连接”的即兴方式,但解释是:

我们创建自己的本地分支,从主分支中分离出来来完成一项任务。在 VS 中,这是“从...创建本地分支”,它使用所需的名称执行分支的检出。在幕后,我确定这相当于git checkout -b fillcatnip master. fillcatnip是一个未跟踪的本地分支,直到推送到远程,但它将作为新分支推送fillcatnip而不是原始master. 在这一点上,它成为一个跟踪分支,并且可以master在任务完成时给出一个拉取请求 (PR) 以合并回。但是如果master在 PR 可以实现之前已经移动并发生冲突,那么在冲突解决之前无法合并分支。发生这种情况时,我可能已经开始了另一项任务。因此,如果我保存当前正在执行的任务(提交和推送、存储等),然后切换回冲突的分支,我想要该分支的远程副本而不是我自己的本地副本,因为有人可能已经推送在等待合并时对其进行更改。

git branch git-pull

7
推荐指数
1
解决办法
2504
查看次数

git藏两个分支

这种情况:

  1. 我在分支A上进行了更改
  2. git stash 在分支A上
  3. git checkout B
  4. 在分支B上进行了更改
  5. git stash 在分支B上
  6. git checkout A
  7. git stash pop 在分支A上

在上述清单的第7步之后,我在存储之前在分支A上所做的更改没有恢复,但是在分支B上进行的更改在分支A上弹出。我cmd z在分支A上使用了该文件,并回到了先前的状态,有我所做的更改。这似乎分支的移动分支B的同样的事情发生在头部头部时,我git checkout B和git stash pop该分支:分支B的所有分支一所做的更改,但不是我的分支B.我所做的更改用于cmd z再恢复到我需要的分支状态。

一段时间以来,这给我带来了很多问题,直到被允许再次在项目上提交代码(没人可以提交一段时间,因为提交时会自动将服务器推送到服务器,并且经理不希望新的代码出现在服务器中)。服务器,直到他们运行了一些测试)。如何仅弹出分支本身所做的更改,而不弹出其他分支所做的更改?

git git-stash git-branch

6
推荐指数
1
解决办法
1648
查看次数

如何在不提交的情况下在 git 中切换和保存?

我正在一个分支上工作,突然我不得不切换到另一个分支来修复一个紧急错误。问题是我对当前分支所做的更改仍然一团糟,我不想提交并留下一些杂乱无章的提交消息。

有什么方法可以在不提交的情况下保存当前更改?

git github

6
推荐指数
3
解决办法
2万
查看次数