Git登台和快照

问题描述 投票:-2回答:1

在我提交之前,我最近忘了将最新版本的遥控器拉到我的本地。没什么大不了的,我只会把我的变化藏起来,然后从远程拉出来。这导致与其中一个文件发生冲突,我还注意到许多其他文件都已上演。所以我解决了冲突,然后从暂存区域删除了所有文件(我对它们一无所知),除了我解决了冲突的文件,最后我提交并推送了我认为的单个文件。 结果我理解git是如何工作有缺陷的,我推动了我本地工作区的快照(没有我试图获取和合并的远程遥控器中的许多其他文件)。这有效地从远程分支新头(我的提交)中删除了那些文件 我的猜测是之前已经问过这些问题,但我找不到它们,所以这里有: 是否需要暂存文件?如果git只是提交整个本地工作空间的快照,为什么要索引任何东西?最后是有一个命令(我可以创建一个别名)包装pull和commit,所以我不会忘记在再次提交之前拉,所以它会获取,合并,提交?或者这个命令不存在的原因是什么?

谢谢你的时间

git snapshot staging
1个回答
1
投票

当您执行git commit时,您会记录整个工作目录的快照,但不需要您的工作目录。

也就是说,你可以在很多文件中进行很多更改,并且只在提交中包含一些这些更改。这并不意味着那些其他文件不是提交的一部分:技术上所有未更改的文件都是该提交的一部分,它们不是提交diff的一部分。

索引或阶段对于准备要提交的工作目录的状态很有用。如果您不需要,只想提交任何更改,您可以只做git commit -a。这不会添加新文件,只会更改新文件。如果你想添加所有新文件,你可以做git commit -au

关于你以前的烂摊子。一旦你了解了基本规则,这实际上很容易。 git的基本规则是:当有疑问时,提交。

怎么会在你的情况下工作?让我们来看看:

  1. 你忘了拉一点工作。
  2. git commit!当然,到当地的master分店。
  3. git push和它失败,因为你的远程分支已经提前。
  4. git fetch以获得最新的变化。
  5. git mergegit rebase将你的变化与origin的变化混合在一起。
  6. 如果有冲突,解决它们和git merge/rebase --continue
  7. git push和利润!

破解事物的唯一机会就是解决冲突。如果发生这种情况,git merge/rebase --abort会将您恢复到最后一次良好的提交。

关于执行所有操作的命令......小心! git pull已经是git fetchgit merge(或git rebase)的混合体。它可能会节省你一些时间,但如果你正在学习git我非常建议不要使用git pull,而是分别执行其他两个命令。

同时做一个git commit和一个git pull和一个git push可能是一个非常糟糕的主意。

© www.soinside.com 2019 - 2024. All rights reserved.