Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 阶段文件,然后远程添加,然后拉-和我的文件都消失了_Git_Github - Fatal编程技术网

Git 阶段文件,然后远程添加,然后拉-和我的文件都消失了

Git 阶段文件,然后远程添加,然后拉-和我的文件都消失了,git,github,Git,Github,我似乎在一次新的回购中失去了下午的工作。以下是我所做的: 在本地创建了一个新项目并做了一些工作 在github上创建了回购协议 git init git添加src git远程添加源git@github.com:Synesso/memx.git git拉入原点主控器 git add.gitignore git提交-m'updated ignore' git推送原始主机 我的本地回购协议和github回购协议都只有两次提交。初始提交(由github在项目创建时进行),第二次提交仅包括文件.gitig

我似乎在一次新的回购中失去了下午的工作。以下是我所做的:

  • 在本地创建了一个新项目并做了一些工作
  • 在github上创建了回购协议
  • git init
  • git添加src
  • git远程添加源git@github.com:Synesso/memx.git
  • git拉入原点主控器
  • git add.gitignore
  • git提交-m'updated ignore'
  • git推送原始主机
  • 我的本地回购协议和github回购协议都只有两次提交。初始提交(由github在项目创建时进行),第二次提交仅包括文件
    .gitignore

    步骤4中添加的文件(
    git add src
    )不存在。它们似乎也没有上演

    在执行git拉取操作时,是否会丢失暂存文件?我能找到它们吗

    当前状态:

    $ git status
    # On branch master
    nothing to commit (working directory clean)
    
    我的初始
    add
    不在reflog中

    $ git reflog
    c80135d HEAD@{0}: checkout: moving from 999d128ea4e6969f9eacbceebb5f857f2aa5abb0 to master
    999d128 HEAD@{1}: checkout: moving from master to HEAD~1
    c80135d HEAD@{2}: checkout: moving from 999d128ea4e6969f9eacbceebb5f857f2aa5abb0 to master
    999d128 HEAD@{3}: checkout: moving from master to 999d128ea4e6969f9eacbceebb5f857f2aa5abb0
    c80135d HEAD@{4}: commit (amend): updated ignore
    28b4f90 HEAD@{5}: commit: updated ignore
    999d128 HEAD@{6}: initial pull
    
    history
    显示我添加了
    src
    文件夹,但没有提交:

    223  git init
    225  git add src
    229  git add project/Build.scala
    234  git remote add origin git@github.com:Synesso/memx.git
    250  git pull origin master
    
    我知道git会抱怨,如果你试图拉脏文件存在。但是做一个删除暂存文件的拉操作可以吗?这似乎是错误的


    我刚刚再次测试了这个过程,是的,它会销毁暂存文件

    jem@jem-usb:~/projects$ mkdir x
    jem@jem-usb:~/projects$ cd x
    jem@jem-usb:~/projects/x$ git init
    Initialized empty Git repository in /home/jem/projects/x/.git/
    jem@jem-usb:~/projects/x$ echo "hi" > hello.world
    jem@jem-usb:~/projects/x$ git add hello.world
    jem@jem-usb:~/projects/x$ git status
    # On branch master
    #
    # Initial commit
    #
    # Changes to be committed:
    #   (use "git rm --cached <file>..." to unstage)
    #
    #       new file:   hello.world
    #
    jem@jem-usb:~/projects/x$ ls -asl
    total 24
     4 drwxrwxr-x 3 jem jem 4096 Apr 28 20:56 .
     4 drwxr-xr-x 8 jem jem 4096 Apr 28 20:56 ..
     4 drwxrwxr-x 7 jem jem 4096 Apr 28 20:56 .git
    12 -rw-rw-r-- 1 jem jem    3 Apr 28 20:56 hello.world
    jem@jem-usb:~/projects/x$ git remote add origin git@github.com:Synesso/memx.git
    jem@jem-usb:~/projects/x$ git reflog
    fatal: bad default revision 'HEAD'
    jem@jem-usb:~/projects/x$ git pull origin master
    remote: Counting objects: 7, done.
    remote: Compressing objects: 100% (5/5), done.
    remote: Total 7 (delta 0), reused 3 (delta 0)
    Unpacking objects: 100% (7/7), done.
    From github.com:Synesso/memx
     * branch            master     -> FETCH_HEAD
    jem@jem-usb:~/projects/x$ ls -asl
    total 36
     4 drwxrwxr-x 3 jem jem 4096 Apr 28 20:53 .
     4 drwxr-xr-x 8 jem jem 4096 Apr 28 20:52 ..
     4 drwxrwxr-x 8 jem jem 4096 Apr 28 20:53 .git
    12 -rw-rw-r-- 1 jem jem   59 Apr 28 20:53 .gitignore
    12 -rw-rw-r-- 1 jem jem    9 Apr 28 20:53 README.md
    jem@jem-usb:~/projects/x$ git reflog
    c80135d HEAD@{0}: initial pull
    
    jem@jem-usb:~/projects$mkdir x
    jem@jem-usb:~/projects$cd x
    jem@jem-usb:~/projects/x$git init
    已在/home/jem/projects/x/.Git中初始化空Git存储库/
    jem@jem-usb:~/projects/x$echo“hi”>hello.world
    jem@jem-usb:~/projects/x$git add hello.world
    jem@jem-usb:~/projects/x$git状态
    #论分行行长
    #
    #初始提交
    #
    #要提交的更改:
    #(使用“git rm--cached…”取消存储)
    #
    #新文件:hello.world
    #
    jem@jem-usb:~/projects/x$ls-asl
    总数24
    4 drwxrwxr-x 3 jem jem 4096年4月28日20:56。
    4 drwxr-xr-x 8 jem jem 4096年4月28日20:56。。
    4 drwxrwxr-x 7 jem jem 4096年4月28日20:56.吉特
    12-rw-rw-r--1Jem-jem 3 Apr 28 20:56 hello.world
    jem@jem-usb:~/projects/x$git远程添加源git@github.com:Synesso/memx.git
    jem@jem-usb:~/projects/x$git reflog
    致命:错误的默认版本“HEAD”
    jem@jem-usb:~/projects/x$git拉取原始主机
    远程:计数对象:7,完成。
    远程:压缩对象:100%(5/5),完成。
    远程:共7个(增量0),重复使用3个(增量0)
    拆包对象:100%(7/7),完成。
    来自github.com:Synesso/memx
    *分支主控->取头
    jem@jem-usb:~/projects/x$ls-asl
    总数36
    4 drwxrwxr-x 3 jem jem 4096年4月28日20:53。
    4 drwxr-xr-x 8 jem jem 4096年4月28日20:52。。
    4 drwxrwxr-x 8 jem jem 4096年4月28日20:53.吉特
    12-rw-rw-r--1杰姆杰姆59四月28日20:53.吉特
    12-rw-rw-r--1 jem jem 9 Apr 28 20:53 README.md
    jem@jem-usb:~/projects/x$git reflog
    c80135d磁头@{0}:初始拉力
    

    文件
    hello.world
    在没有警告的情况下被删除。

    您在github上的回购不包含任何有价值的文件。难道你没有忘记把它们交出来吗


    即使它们没有暂存,您的
    src
    文件夹在本地哪里?如果您只执行了问题中指定的操作,git无论如何都不能吃掉您的文件。

    我认为您应该在
    添加
    之前,在
    远程添加
    拉取

  • git初始化
  • git添加src
  • git add.git忽略
  • git提交-m“已更新忽略”
  • git远程添加源git@github.com:Synesso/memx.git
  • git拉源主机
  • git推送源主机

  • 我认为,这是一个不幸的副作用,即拥有一个不需要一次提交的新存储库。如果您再次尝试测试,但在本地执行:

    git init; echo "Readme" > Readme; git add Readme; git commit -m 'Initial commit'
    

    然后,当您“拉入”一个包含“src”文件的工作目录时,GIT将发出警告,更重要的是,它不会删除内容。

    我能够在不使用github的情况下,使用两台主机(此处重命名为hostB,这是“远程”主机,而hostA,这是“本地”)复制此内容:

    果然,如果您检查blob(现在在
    .git/lost-found/other
    中恢复),这些blob将包含您丢失的东西。(任何目录结构都将消失,您必须找出哪个文件是哪个文件,然后将它们重新放在您想要的位置。)


    有趣的是,如果
    git-fetch-origin
    后跟
    git-merge-origin/master
    ,它会获取origin的初始修订版(在本例中是来自hostB的.gitignore和README.md文件),并保留“要提交的更改”。支持
    git fetch
    的另一个原因是
    git merge
    ?:-)

    我收到了Junio Hamano在git邮件列表上的以下回复:


    这是一个意料之外的极端情况,干扰了我们的努力 幸好事与愿违

    很长一段时间,没有历史,要求拉是被禁止的, 因为“git拉动”是关于组合两个(或更多)历史的 当你没有历史的时候,一起并肩作战是胡说八道——只有你自己 有一段历史(另一边的历史)什么都没有 结合

    后来我们试着变得更好,因为一些新用户在 在空目录中执行“git init”,后跟“git pull”,通过 将“合并”重新定义为无历史意味着重置为另一个 历史

    这解决了“git init&&git pull”,但我们没有预料到任何人 将执行“git init&&git add&&git pull”序列,其中 除了出错,没有理智的结果

    只有理智的结果才会出现这样的补丁

     git-pull.sh |    3 +++
     1 file changed, 3 insertions(+)
    
    diff --git a/git-pull.sh b/git-pull.sh
    index 2a10047..da102d0 100755
    --- a/git-pull.sh
    +++ b/git-pull.sh
    @@ -261,6 +261,9 @@ esac
    
     if test -z "$orig_head"
     then
    +       test $(git ls-files | wc -l) = 0 ||
    +       die "$(gettext "Uncommitted changes in the index")"
    +
           git update-ref -m "initial pull" HEAD $merge_head "$curr_head" &&
           git read-tree -m -u HEAD || exit 1
           exit
    

    git reflog
    将显示树的修改。但是如果你从来没有提交过你的
    src
    文件,
    git status
    现在说了什么?我也是这么想的。但是src文件夹不再在本地存在。即。。。美丽的。谢谢。我非常感激——希望我能回答这个问题@Treffynnon:这在“官方”git中用commit
    b4dc085a8dc2ec2f修复
    
    hostA$ git fsck --lost-found
    Checking object directories: 100% (256/256), done.
    dangling blob 45b983be36b73c0788dc9cbcb76cbb80fc7bb057
    hostA$ 
    
     git-pull.sh |    3 +++
     1 file changed, 3 insertions(+)
    
    diff --git a/git-pull.sh b/git-pull.sh
    index 2a10047..da102d0 100755
    --- a/git-pull.sh
    +++ b/git-pull.sh
    @@ -261,6 +261,9 @@ esac
    
     if test -z "$orig_head"
     then
    +       test $(git ls-files | wc -l) = 0 ||
    +       die "$(gettext "Uncommitted changes in the index")"
    +
           git update-ref -m "initial pull" HEAD $merge_head "$curr_head" &&
           git read-tree -m -u HEAD || exit 1
           exit