相关疑难解决方法(0)

"git rm"命令的作用范围是什么,它对所有分支或HEAD分支都有影响

是否git rm <object>仅影响所有分支机构或HEAD?根据我的理解,答案是肯定的,因为要使该命令有效,必须遵循一个commit命令,但这就是我的问题.

那么git rm --cache <object>,因为它不会从工作目录树中删除文件而是被跟踪并将对象添加到.gitignore

我的问题:

  1. 它是否删除了所有分支中的对象?
  2. 它是否将对象添加到.gitignore以在下一次存储库分支(HEAD和无HEAD)或当前分支(HEAD)的提交中被忽略?

git

3
推荐指数
1
解决办法
6027
查看次数

git 强制签出重复分支?

如果我想创建一个新分支,我会这样做:

git checkout -b new-branch
Run Code Online (Sandbox Code Playgroud)

然而,有时这个分支已经存在,例如:

fatal: A branch named 'new-branch' already exists.
Run Code Online (Sandbox Code Playgroud)

有比执行以下操作更简单的方法吗?

git branch -D new-branch
git checkout -b new-branch
Run Code Online (Sandbox Code Playgroud)

我尝试了这个,但它不起作用:

git checkout -b new-branch --force
Run Code Online (Sandbox Code Playgroud)

git version-control branch github

3
推荐指数
1
解决办法
2579
查看次数

Git 重命名文件和 inode

考虑一下我们将以下命令应用于hello.txtgit 下跟踪的文件(在干净的工作副本中):

echo "hi" >> hello.txt
mv hello.txt bye.txt
git rm hello.txt
git add bye.txt
git status
Run Code Online (Sandbox Code Playgroud)

结果:

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

    renamed:    hello.txt -> bye.txt
Run Code Online (Sandbox Code Playgroud)

因此,git 知道它是同一个文件,即使它被重命名了。我有一些模糊的记忆,git 检查 inode 以确定新文件与旧的已删除文件相同。 不过,这个和这个SO 答案表明 git 只检查文件的内容,并且不会以任何方式检查它是否是相同的 inode。(我的结论(*):如果我对文件进行更大的修改,git 将不会检测到重命名,即使 inode 仍然相同。)

因此,在我看来,很明显,我错了,git 不检查 inode(或任何其他文件系统信息),只检查内容。但后来,我发现了另一个答案,它声称

除了时间戳之外,它[即git]还记录lstat的大小、inode和其他信息,以减少误报的机会。当您执行 git-status 时,它只需对工作树中的每个文件调用 lstat 并比较元数据,以便快速确定哪些文件未更改。

我对此实际上有两个问题:

  1. 我下面的理解正确吗?

Git 确实依赖(也)依赖 inode 来检测文件是否已更改,但它不使用 inode 来检测文件重命名。

  1. 假设 1. 是正确的。为什么 git 不依赖 inode …

git file-rename

3
推荐指数
1
解决办法
1322
查看次数

如何将辅助分支与空主分支合并?

我正在使用 git 提交我的项目更改。

以此目的 :-

  1. 我在 github 中创建了一个新的空存储库
  2. 除了 master 分支之外,我创建了一个名为 secondary 的辅助分支
  3. 我提交了更改并将其推送到第二个分支
  4. 现在我的所有项目及其内容都在第二个分支上,而我的主分支是空的

现在,我有两个疑问:-

a)我可以直接将任何代码推送到空主分支而不进入两个分支的合并过程吗?

b) 如何将第二个分支与空的主分支合并

git github gitlab

3
推荐指数
1
解决办法
5835
查看次数

尽管将文件添加到 .gitignore,但文件不会被忽略

我想忽略git 项目workspace文件夹内的文件。为此.obsidian/我修改了我的文件。.gitignore

\n

这是我的 .gitignore 文件:

\n
 .obsidian/cache\n .obsidian/workspace\n .trash/\n .DS_Store\n
Run Code Online (Sandbox Code Playgroud)\n

但是,当文件更改时我仍然收到此消息:

\n
 .obsidian/cache\n .obsidian/workspace\n .trash/\n .DS_Store\n
Run Code Online (Sandbox Code Playgroud)\n

我不知道为什么会发生这种情况或该怎么办。

\n

git github gitignore

3
推荐指数
1
解决办法
2290
查看次数

使用 git orphan 作为文件夹并保留历史记录

我在不同的存储库中有一些项目,我想将它们与不同的孤立分支合并在同一个存储库下。为此,我创建了一个新的存储库并在其中启动它。

  1. 如何获取现有的存储库,将其作为孤立分支导入并保留历史记录?

  2. 是否可以使用作为不同文件夹打开的 2 个孤立分支?假设我有 2 个孤儿分支,我想同时处理这两个分支,可能吗?我有超过 2 个,我想使用打开的单个 git UI,这样开发起来会更有效率。今天我检查了每个存储库。将其合并到同一个存储库下后,我仍然需要并行处理所有分支。

orphan-branch-B
              \.gitignore
              \.README.md
              \ and more

orphan-branch-B
              \.gitignore
              \.README.md
              \ and more
Run Code Online (Sandbox Code Playgroud)

git orphan

2
推荐指数
1
解决办法
846
查看次数

如何撤消 git rm --cached &lt;文件名&gt;?

在暂存文件(跟踪文件)后,我意识到它需要一些更改,因此我使用 git rm --cached <filename>. 结果,我失去了所有的变化。有没有办法撤销它?

git

2
推荐指数
1
解决办法
4173
查看次数

Git checkout无意中删除了未跟踪的文件

我遇到了一个奇怪的Git行为:我有一个存储库,其中包含文件中指定的许多未跟踪文件和文件夹.gitignore.

我做的确切步骤:

  1. 藏匿4个文件: git stash
  2. 几个月前检查了我的第一次提交: git checkout <hash of first commit>
  3. 环顾四周,没有改变任何东西
  4. 回到我的工作部门做 git checkout <my working branch>
  5. 应用藏匿处: git stash apply

然后我注意到一些(不是全部)我未跟踪的文件和文件夹已经消失了.怎么可能?

附加信息:

  • 被隐藏的文件与消失的文件无关,我注意到存储操作只是为了完整性

  • 我没有执行其中一个命令,git stash --include-untracked或者git stash save -u像@Ashish Mathew猜测的那样

  • 似乎只有文件和文件已经消失,但是在.gitignore第一次提交时还没有,但后来被添加到了它中

git

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

删除暂存文件并重置为原始版本

如果我在暂存区域中有一个文件(显示在 中git diff --cached)并且我想完全删除它,我该怎么做?
正在做

git reset HEAD -- file  
git checkout -- file  
Run Code Online (Sandbox Code Playgroud)

是的,但是这 2 个操作有 1 个命令吗?

git git-reset git-stage

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

当远程存在时,“checkout”和“checkout -b”之间的区别?

如果我有一个远程分支,我可以在本地执行git checkout MyRemoteBranch并且它会正常工作。我所说的工作正常是指它将创建一个名为 MyRemoteBranch 的本地分支并切换到它,并且该本地分支将跟踪远程分支。

那么这种情况下,什么时候需要传递-b参数呢?当遥控器存在时,以下有什么区别:

git checkout MyRemoteBranch
Run Code Online (Sandbox Code Playgroud)

VS

git checkout -b MyRemoteBranch
Run Code Online (Sandbox Code Playgroud)

git git-checkout git-branch

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

为什么如果我在我的一个分支中进行更改,git 会更改每个分支?

在我的本地仓库中,我有 3-4 个分支,当我处理其中一个分支时,我在其中所做的更改会传播到我所有的其他分支。事实上,如果我是git reset --hard origin其中之一,它会重置每个本地分支。

我应该如何将我的更改限制在一个分支中?

请注意,我是 git 的菜鸟。

git branch github

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

请在切换分支之前提交更改或隐藏它们

我有两个分行

  • 开发者
  • 特征

不知不觉中,我在 dev 分支中编写了一些未经测试而不允许在 dev 分支中使用的代码。我不想丢失我编写的所有代码。现在我想切换功能分支并将所有更改的文件添加到功能分支中。但是当我想签出功能分支时它会显示

Please commit your changes or stash them before you switch branches
Run Code Online (Sandbox Code Playgroud)

有任何方法可以切换功能分支并获取功能分支中所有更改的文件,以便我将这些文件添加到功能分支中。

git

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

Git 是否在内部存储行尾?

Git 是否在内部存储特定的行尾?

我的猜测是,Git 仅存储行数据本身(行结束中性),并且根据操作系统,它将使用平台特定的行结束。

或者换句话说:每个行尾都可以“混合”存储在同一个文件中吗?

我不是在谈论.gitattributes文件中的设置。

git newline

0
推荐指数
2
解决办法
79
查看次数