我正在寻找一个很好的描述,如果一个人在rebase期间提交以及如何以一种简单的方式"恢复"它会发生什么.
让我们考虑一个场景,其中大型提交被重新定位.在rebase期间,出现冲突并且用户开始合并更改.现在,想象一下你几乎已经完成的场景,但你没有出于任何原因(无论是长周末等)都没有调用git rebase --continue.接下来的一周,你刚刚恢复工作,在退缩期间.最后,你调用git commit --amend将更改附加到最后一次提交,并且...它们最终会在你重新引入的提交中.
当然,你总是可以检查你开始改变的提交和"hack your way thruogh" - 例如,试图复制修改中的所有文件,但这可能会丢失同时引入的更改.
有没有一个干净,好的方法来解决这个问题?这是一个我应该小心的特殊状态,我永远不想最终进入它,但它偶尔也会发生 - 我最终花了一整天时间试图把事情弄清楚.
我非常感谢所有的帮助和建议.谢谢!
当我尝试git添加我的文件时,我输入了
git add <insert file names here>
Run Code Online (Sandbox Code Playgroud)
这工作正常.但是,当我尝试做的时候
git commit -a
Run Code Online (Sandbox Code Playgroud)
我的git存储库告诉我它是空的.输出的是:
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
<insert name of files here>
nothing added to commit but untracked files present (use "git add" to track)
Run Code Online (Sandbox Code Playgroud)
可能有人知道解决方案吗?谢谢.
对于给定的提交,我需要对每行更改的先前版本负责,但是表示提交.
如果有一个提交更改了文件a上的第2行和第3行,我想要一种方法来查看git blame commit^限制为前导码和第2行和第3行的输出.
我怎样才能做到这一点?
好像我必须明确指定我正在寻找一种方法以编程方式执行上述操作,而不是亲眼检查提交,确定哪些文件哪些行已更改,然后手动运行git blame为每个单独更改文件.
我正在分支A上工作,功能/任务没有完成.然后我需要切换到另一个分支B进行快速修复.当我尝试打开另一个分支时,Git强制我保存我的本地更改,否则我将丢失所有本地更改.
我需要提交我的不完整代码.有没有什么方法可以在不提交和丢失任何代码的情况下在多个分支之间切换?还是有更好的方法来处理这种情况?
我是GitHub for Windows的新手.我学会了如何进行一次改变.但我不明白我怎么能只提交文件的一部分.在GitHub for Mac上,您只需选择该行即可.
我怎么能在GitHub for Windows上做到这一点?
有没有办法回滚最后一次提交并将其放入一个单独的分支以供以后测试?我做了一些我不想完全抛弃的更改,我只想将它们放在另一个分支中进行进一步测试.
谁能帮我这个?
我正试图推动我的提交,但是因为还有另一个提交(HEAD竞赛中的同级别:)
我知道我需要将这两个提交合并在一起,而不是完全确定如何做到这一点.
我已经试过了git pull --rebase.
我的GIT-CLI:
我确信在 git 中有一种方法可以做到这一点,但我的搜索结果是空的。有没有一种简单的方法可以从一次提交中获取消息、提交作者、提交日期和其他信息,并使用这些数据修改第二次提交,而无需复制实际的提交内容?
如何在HEAD 之前引用提交?
例如,在 HEAD 后面提交1次的提交是HEAD~1.
相对于HEAD,我如何向相反的方向移动?
基本上,我做了git checkout HEAD~13次.现在我想向前推进1次提交,有效地撤消我的最后一次提交git checkout HEAD~1.我怎样才能做到这一点?
我知道提交的一个分支就像一个单独的链表,每个提交只指向它的父.因此,如果遍历提交的孩子是不合理的,我想知道如何在他们之间进行处理.
通常我使用两台电脑,例如:PC1和PC2。
在他们两个上我都使用CygWinon Windows 10。
他们有相同的配置。
我试图PC1对如何显示日期和时间进行一些调整:
$ git log
Run Code Online (Sandbox Code Playgroud)
我正在尝试多个bashandgit命令。
过去和现在PC2我这样做时:
$ date
Run Code Online (Sandbox Code Playgroud)
我得到以下信息:
Tue Sep 25 16:17:34 CDT 2018
Run Code Online (Sandbox Code Playgroud)
但在PC1(错误的)上,使用相同的命令,我得到:
Tue, Sep 25, 2018 16:17:34
Run Code Online (Sandbox Code Playgroud)
您可以看到该TimeZone指示器没有显示。
另外,现在PC1,当我进行提交然后用以下命令列出历史记录时:$ git log日期如下:
Date: Tue Sep 25 22:58:42 2018 +0100
Run Code Online (Sandbox Code Playgroud)
它应该在哪里:
Date: Tue Sep 25 16:58:42 2018 -0500
Run Code Online (Sandbox Code Playgroud)
因为我当前的时区是:( CDT) America/Chicago( -05:00)
关于如何解决这个问题有什么想法吗?
谢谢!
[编辑1]
回应@Johan …
git-commit ×10
git ×9
git-branch ×2
git-checkout ×2
bash ×1
blame ×1
commit ×1
cygwin ×1
datetime ×1
git-add ×1
git-bash ×1
git-rebase ×1
git-reset ×1
git-stash ×1
github ×1
rebase ×1