相关疑难解决方法(0)

在GIT中撤消删除

我做了一件非常愚蠢的事.我使用git commit(文件编辑+新文件)(C)进行了提交.然后我修改了最后一次提交.然后我使用递归删除所有文件(!)git rm -r 然后我做了另一个git commit(C).

A-B-C
    ?
  master

有没有办法取消删除文件,但保留我在第一次提交时所做的更改?(C)我宁愿不回到(B).我试过git reset --soft head ^,那么git status列出了我删除的文件,然后我做了git checkout,但仍然没有运气.我甚至不知道是否可能.

git commit undo delete-file undelete

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

ORIG_HEAD,FETCH_HEAD,MERGE_HEAD等

有很多有用的Git引用(究竟是什么确切的名字?),例如HEAD,ORIG_HEAD,FETCH_HEAD,MERGE_HEAD,@ {}上游等

有什么参考吗?一个包含解释的完整列表?

git

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

git reset --hard和git reset --merge之间有什么区别

在我的实验中,我无法找到任何功能上的区别

git reset --hard
Run Code Online (Sandbox Code Playgroud)

git reset --merge
Run Code Online (Sandbox Code Playgroud)

使用说明也没有给出任何提示

--hard                reset HEAD, index and working tree
--merge               reset HEAD, index and working tree
Run Code Online (Sandbox Code Playgroud)

我经常使用该--hard选项,所以了解它是如何工作的.选项--merge--hard选项之间有什么区别?

干杯,奥利

也许一个例子在这里会有所帮助,让我们使用以下顺序:

cd git_repo
touch file_one
git add file_one
git commit -m "commit one" # sha1 of 123abc
echo "one" >> ./file_one
git commit -a -m "commit two" # sha1 of 234bcd
echo "two" >> ./file_one
git add . # populate index with a change
echo "three" >> ./file_one # …
Run Code Online (Sandbox Code Playgroud)

git merge reset

39
推荐指数
4
解决办法
6万
查看次数

Git中的"at"@符号/符号/字符是什么意思?

at-sign @通常在git中用于以不同方式指定修订.例如,

  1. <ref>@{<date>}指定其状态的引用<date>.

    示例:git diff master@{yesterday} master.

  2. <ref>@{<n>}特定于第n 先前状态的参考.

    示例:git diff master@{1} master.

  3. @{-<n>}指定当前之前检出的第n 分支.

    示例:git checkout @{-5}.

  4. <ref>@{upstream} 指定引用的上游分支.

    示例:git diff master@{upstream} master.

但是,@它也在git命令中以其他方式使用,例如

git rebase -i @~4
git log @^^..@
Run Code Online (Sandbox Code Playgroud)

@在这些例子中,at-sign 意味着什么?

git

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

如何恢复不必要的"git reset HEAD~1"

运行后git reset HEAD~1,我注意到实际上没有别的事可做了,提交也没问题.有没有办法恢复此命令?

git

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

如何将大师移到HEAD?

* [971f835] (HEAD, original_idea) Now working here. Some comment 9
* [692b673] Some comment 8
* [3ebff62] Reverted to original idea. Some comment 7
| * [72ea01d] (master) Decided it wasn't worth the effort. Some comment 6
| * [985c1ad] Some comment 5
| * [4d7d491] Some comment 4
| * [0c697bb] Branched to try an idea. Some comment 3
|/
* [7280b1f] Some comment 2
* [5c2c6d0] Some comment 1
* [bc7aac6] Initial commit
Run Code Online (Sandbox Code Playgroud)

所以,master落后了.不确定是怎么回事.一旦我确定我完成了没有工作的分支,我检查[7280b1f]并继续从那里. …

git

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

恢复交互式git rebase

完成功能分支后,git rebase -i我意外删除了所有提交.我不完全确定,但我怀疑不是压缩我的提交,而是用提交消息替换整个条目.

http://shafiulazam.com/gitbook/4_interactive_rebasing.html说:

交互式rebase可以做的最后一个有用的事情就是为你删除提交.如果不是为提交行选择"选择","压缩"或"编辑",只需删除该行,它将从历史记录中删除提交.

我的问题是:有没有办法恢复/撤消这个?

git git-rebase

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

从失败的rebase中恢复

我正在使用git svn公司强制的svn服务器获得一些git goodness.我刚刚变得非常糟糕,我正试图找出最好的恢复方法.

这是发生的事情:

  1. 首先,我有这个

    ---1 (master)
        \--B--C--D--E (feature/fix-widgets)
    
    Run Code Online (Sandbox Code Playgroud)
  2. 所以然后我做了git checkout master,然后git svn rebase在master上下拉这些提交.我没想到我的功能分支和主人之间有任何冲突,因为更改是在一个完全不同的文件夹中.所以在这一点上,我想我有这个:

    ---1--2--3--4 (master)
        \--B--C--D--E (feature/fix-widgets)
    
    Run Code Online (Sandbox Code Playgroud)

    1--2--3--4从svn提交的提交在哪里.

  3. 接下来,我做的git checkout feature/fix-widgets,然后git rebase master.有一些冲突,有些事情没有加起来,所以我决定撇开并更仔细地看待事情.我这样做git rebase --abort,希望这能让我恢复到变形前的状态.

  4. 我这样做git rebase --abort并收到以下消息

    $ git rebase --abort
      error: git checkout-index: unable to create file somedir/somefile.cs (Permission denied)
      fatal: Could not reset index file to revision 'be44daa05be39f6dd0d602486a598b63b6bd2af7'.
    
    Run Code Online (Sandbox Code Playgroud)
  5. 现在我不知道该怎么做.git status表明我已经开启了feature/fix-widgets,但是我有一大堆阶段性的更改,以及之前提交的大量未跟踪文件.如果我能回来,我会没事的E.

git git-svn rebase

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

如何只为一个目录级别`git ls-files`.

我正在使用msysgit(1.7.9),我正在寻找正确的git ls-files命令调用,以显示当前级别的(跟踪的)文件和目录,无论是从索引还是当前工作目录,如果这是更轻松.

基本上它会给出一个类似于你在Github上看到的目录列表.来自Windows,我不太熟悉正确的方法(?).

git ls glob

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

将git-rm --cached删除后删除其他用户的工作树文件

我希望停止跟踪文件,但仍然将它们保存在我的工作树中.

我已经聚集了,这git rm --cached FILE将让我这样做.但是,如果其他人撤消此更改,是否会删除本地副本?

git git-rm

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

标签 统计

git ×10

commit ×1

delete-file ×1

git-rebase ×1

git-rm ×1

git-svn ×1

glob ×1

ls ×1

merge ×1

rebase ×1

reset ×1

undelete ×1

undo ×1