为什么运行 `git pull` 命令会删除我已提交的更改?

7
根据git的文档,git pull将执行当前分支的获取操作,然后运行git merge以合并更改。在同事提交和推送更改到服务器后,我去检索它们。

首先,我提交了我所做的更改:

git add src
git add war

运行git status确认我的更改已经准备提交。接下来,我运行了:

git commit -m "Another commit to work on scrolling"

接下来,我拉取了更改:

git pull

这让我看到了一些警告信息:

remote: Counting objects: 31, done.
remote: Compressing objects: 100% (16/16), done.
remote: Total 16 (delta 13), reused 3 (delta 0)
Unpacking objects: 100% (16/16), done.
From github.com:FullCreative/Loop
 + 3f00b3f...2e09a49 master     -> master  (forced update)
Warning: fetch updated the current branch head.
Warning: fast-forwarding your working tree from
Warning: commit 3f00b3f6cb6ed6beddb16baa92f1beaa82b6944c.
Already up-to-date.

最后,我推送了我的更改——或者说试图将它们推送到服务器:
git push

问题:

为什么这会删除我所有的更改?即使是我同事没有修改的文件也从我的工作目录中删除了。

控制台输出:

为了彻底,下面是我终端的控制台日志。这显示了我运行的命令以及这些命令的输出:

jem@jem-VPCF136FM:~$ cd git
jem@jem-VPCF136FM:~/git$ l
Loop/  Loop-1-18.tar.gz
jem@jem-VPCF136FM:~/git$ cd Loop
jem@jem-VPCF136FM:~/git/Loop$ l
Loop/  README  readme.textile
jem@jem-VPCF136FM:~/git/Loop$ l
Loop/  README  readme.textile
jem@jem-VPCF136FM:~/git/Loop$ cd Loop
jem@jem-VPCF136FM:~/git/Loop/Loop$ l
src/  war/
jem@jem-VPCF136FM:~/git/Loop/Loop$ git add src
jem@jem-VPCF136FM:~/git/Loop/Loop$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   src/com/fullcreative/loop/Globals.java
#   modified:   src/com/fullcreative/loop/LoopController.java
#   modified:   src/com/fullcreative/loop/LoopDao.java
#   modified:   src/com/fullcreative/loop/LoopDaoJdo.java
#   modified:   src/com/fullcreative/loop/LoopService.java
#   new file:   src/com/fullcreative/loop/TestLoopController.java
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   war/WEB-INF/LoopDispatcher-servlet.xml
#   modified:   war/WEB-INF/appengine-web.xml
#   modified:   war/WEB-INF/applicationContext-security.xml
#   modified:   war/WEB-INF/html/index.html
#   modified:   war/WEB-INF/web.xml
#   modified:   war/js/loop.js
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   war/WEB-INF/admin/local-storage.html
jem@jem-VPCF136FM:~/git/Loop/Loop$ git add war
jem@jem-VPCF136FM:~/git/Loop/Loop$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   src/com/fullcreative/loop/Globals.java
#   modified:   src/com/fullcreative/loop/LoopController.java
#   modified:   src/com/fullcreative/loop/LoopDao.java
#   modified:   src/com/fullcreative/loop/LoopDaoJdo.java
#   modified:   src/com/fullcreative/loop/LoopService.java
#   new file:   src/com/fullcreative/loop/TestLoopController.java
#   modified:   war/WEB-INF/LoopDispatcher-servlet.xml
#   new file:   war/WEB-INF/admin/local-storage.html
#   modified:   war/WEB-INF/appengine-web.xml
#   modified:   war/WEB-INF/applicationContext-security.xml
#   modified:   war/WEB-INF/html/index.html
#   modified:   war/WEB-INF/web.xml
#   modified:   war/js/loop.js
#
jem@jem-VPCF136FM:~/git/Loop/Loop$ git commit -m "Another commit to work on scolling"
[master 3f00b3f] Another commit to work on scolling
 13 files changed, 726 insertions(+), 218 deletions(-)
 create mode 100644 Loop/src/com/fullcreative/loop/TestLoopController.java
 create mode 100644 Loop/war/WEB-INF/admin/local-storage.html
jem@jem-VPCF136FM:~/git/Loop/Loop$ git pull
remote: Counting objects: 31, done.
remote: Compressing objects: 100% (16/16), done.
remote: Total 16 (delta 13), reused 3 (delta 0)
Unpacking objects: 100% (16/16), done.
From github.com:FullCreative/Loop
 + 3f00b3f...2e09a49 master     -> master  (forced update)
Warning: fetch updated the current branch head.
Warning: fast-forwarding your working tree from
Warning: commit 3f00b3f6cb6ed6beddb16baa92f1beaa82b6944c.
Already up-to-date.
jem@jem-VPCF136FM:~/git/Loop/Loop$ git push
Everything up-to-date
jem@jem-VPCF136FM:~/git/Loop/Loop$ git status
# On branch master
nothing to commit (working directory clean)
jem@jem-VPCF136FM:~/git/Loop/Loop$ git history
git: 'history' is not a git command. See 'git --help'.
jem@jem-VPCF136FM:~/git/Loop/Loop$ git --help
usage: git [--version] [--exec-path[=<path>]] [--html-path]
       [-p|--paginate|--no-pager] [--no-replace-objects]
       [--bare] [--git-dir=<path>] [--work-tree=<path>]
       [-c name=value] [--help]
       <command> [<args>]

The most commonly used git commands are:
   add        Add file contents to the index
   bisect     Find by binary search the change that introduced a bug
   branch     List, create, or delete branches
   checkout   Checkout a branch or paths to the working tree
   clone      Clone a repository into a new directory
   commit     Record changes to the repository
   diff       Show changes between commits, commit and working tree, etc
   fetch      Download objects and refs from another repository
   grep       Print lines matching a pattern
   init       Create an empty git repository or reinitialize an existing one
   log        Show commit logs
   merge      Join two or more development histories together
   mv         Move or rename a file, a directory, or a symlink
   pull       Fetch from and merge with another repository or a local branch
   push       Update remote refs along with associated objects
   rebase     Forward-port local commits to the updated upstream head
   reset      Reset current HEAD to the specified state
   rm         Remove files from the working tree and from the index
   show       Show various types of objects
   status     Show the working tree status
   tag        Create, list, delete or verify a tag object signed with GPG

See 'git help <command>' for more information on a specific command.
jem@jem-VPCF136FM:~/git/Loop/Loop$ git log
commit 2e09a498829e2b12e4bbdff8f8c39c2ce47dacb7
Author: Josh Iwata < josh@fullcreative.com>
Date:   Thu Mar 15 14:25:28 2012 -0700

    Design revamp

commit 2927f853041dab06a48861498adc945d6969865a
Author: James Mortensen <james.mortensen@a-cti.com>
Date:   Wed Mar 14 09:25:46 2012 -0700

    Removed Alert.

commit 07deceb9cb3cda6b913b2bde96970682ecdbddb7
Author: James Mortensen <james.mortensen@a-cti.com>
Date:   Wed Mar 14 09:04:12 2012 -0700

    Added url pattern to the servlet to get rid of the error.

commit f2d48bb735e5c3f1d3cb88ad80483e5596aaa063
Author: James Mortensen <james.mortensen@a-cti.com>
Date:   Tue Mar 13 15:44:28 2012 -0700

    iJames took over again!

commit 88fb39c0b37b2dfc5a13e30f212cba525e33f531
Author: David Raffauf <david@fullcreative.com>
Date:   Tue Mar 13 15:42:26 2012 -0700

    I test update

commit 5b1af15d166fc766a1a892a13865d9c5be506a6f
Author: Josh Iwata < josh@fullcreative.com>
jem@jem-VPCF136FM:~/git/Loop/Loop$ git status
# On branch master
nothing to commit (working directory clean)
jem@jem-VPCF136FM:~/git/Loop/Loop$ git pull
Already up-to-date.
jem@jem-VPCF136FM:~/git/Loop/Loop$ l
src/  war/
jem@jem-VPCF136FM:~/git/Loop/Loop$ cd src
jem@jem-VPCF136FM:~/git/Loop/Loop/src$ l
cacerts.bin  com/  log4j.properties  META-INF/
jem@jem-VPCF136FM:~/git/Loop/Loop/src$ cd com
jem@jem-VPCF136FM:~/git/Loop/Loop/src/com$ l
fullcreative/
jem@jem-VPCF136FM:~/git/Loop/Loop/src/com$ cd fullcreative/loop/
jem@jem-VPCF136FM:~/git/Loop/Loop/src/com/fullcreative/loop$ l
AbstractBaseController.java   Comment.java                    LoopController.java     PusheableResponse.java
AccountController.java        EmailService.java               LoopDao.java            samples/
Account.java                  EnvironmentService.java         LoopDaoJdo.java         security/
AccountService.java           FormManagerController.java      Loop.java               Settings.java
AuthenticatorController.java  Globals.java                    LoopService.java        TagSubscription.java
AuthenticatorService.java     GoogleCometChannelService.java  LoopServlet.java        UserDao.java
Cacheable.java                HttpRequestHandler.java         Memcached.java          UserDaoJdo.java
Card.java                     InvitationDetailsDaoJdo.java    OAuth2User.java         User.java
CardManagerController.java    InvitationDetails.java          OAuth2UserService.java
CardTemplateService.java      JSONPResponse.java              PMF.java
jem@jem-VPCF136FM:~/git/Loop/Loop/src/com/fullcreative/loop$ cd /
jem@jem-VPCF136FM:/$ cd 
jem@jem-VPCF136FM:~$ cd workspace
jem@jem-VPCF136FM:~/workspace$ l
ActiveResponseWebService/          ConversionChromeApp.pem      GAE Spring Security/       LoopSVN/
Adaptiv3ChatDemo/                  ConversionChromeExtension/   GAE Spring Security Demo/  Loop.tar.gz
Adaptiv3ChatDemo-2.zip             ConversionSupportChromeApp/  gdata-samples-read-only/   ReverseProxyDemo/
Adaptiv3ChatDemo.zip               ConversionSupportLive/       LexLegal/                  rhino-for-webapps-demo/
AmazonC3Demo/                      ConversionSupportLiveNew/    LexMatter/                 SB4.0/
App-AnswerConnect/                 ConversionSupportLiveNew2/   local_db.bin               SB4.0_branch/
appengine-java-sdk-1.6.2.1/        ConversionSupportLive.zip    Loop/                      sokolove_lawfirm/
appengine-java-sdk-1.6.2.1.zip     Conversion Support- Mobile/  Loop2/                     test/
appengine-java-sdk-1.6.3.1/        ConversionSupportWebsite/    Loop-Oauth2-Demo/          Test/
appengine-java-sdk-1.6.3.1.zip     ConverstionSupportMobileV1/  LoopRepo/                  Thinclient-c3/
AppointmentSchedulingAppGAEJ/      ConverstionSupportMobileV2/  LoopRepo-1-12-2-.tar.gz    Thinclient-c3.zip
ChatClientWebservices/             datastore-indexes-auto.xml   LoopRepo1-12.tar.gz
ContactManagementSystemDataStore/  EchopassChatClient/          LoopRepo1-13.tar.gz
ConversionChromeApp0.1.1109.6.crx  FullTextSearchService/       LoopRepo.tar.gz
jem@jem-VPCF136FM:~/workspace$ cd Loop
jem@jem-VPCF136FM:~/workspace/Loop$ l
Loop/  README  readme.textile
jem@jem-VPCF136FM:~/workspace/Loop$ cd Loop
jem@jem-VPCF136FM:~/workspace/Loop/Loop$ l
src/  war/
jem@jem-VPCF136FM:~/workspace/Loop/Loop$ cd src
jem@jem-VPCF136FM:~/workspace/Loop/Loop/src$ l
cacerts.bin  com/  log4j.properties  META-INF/
jem@jem-VPCF136FM:~/workspace/Loop/Loop/src$ cd com
jem@jem-VPCF136FM:~/workspace/Loop/Loop/src/com$ l
fullcreative/
jem@jem-VPCF136FM:~/workspace/Loop/Loop/src/com$ cd fullcreative/
jem@jem-VPCF136FM:~/workspace/Loop/Loop/src/com/fullcreative$ l
loop/
jem@jem-VPCF136FM:~/workspace/Loop/Loop/src/com/fullcreative$ cd loop
jem@jem-VPCF136FM:~/workspace/Loop/Loop/src/com/fullcreative/loop$ 
jem@jem-VPCF136FM:~/workspace/Loop/Loop/src/com/fullcreative/loop$ l
AccountController.java        Card.java                     LoopController.java  Memcached.java          UserDao.java
Account.java                  Comment.java                  LoopDao.java         OAuth2User.java         UserDaoJdo.java
AccountService.java           EnvironmentService.java       LoopDaoJdo.java      OAuth2UserService.java  User.java
AuthenticatorController.java  HttpRequestHandler.java       Loop.java            PMF.java
AuthenticatorService.java     InvitationDetailsDaoJdo.java  LoopService.java     samples/
Cacheable.java                InvitationDetails.java        LoopServlet.java     security/
jem@jem-VPCF136FM:~/workspace/Loop/Loop/src/com/fullcreative/loop$ cd ../../../../
jem@jem-VPCF136FM:~/workspace/Loop/Loop$ cd ../../..
jem@jem-VPCF136FM:~$ cd git
jem@jem-VPCF136FM:~/git$ l
Loop/  Loop-1-18.tar.gz
jem@jem-VPCF136FM:~/git$ cd Loop
jem@jem-VPCF136FM:~/git/Loop$ l
Loop/  README  readme.textile
jem@jem-VPCF136FM:~/git/Loop$ cd Loop
jem@jem-VPCF136FM:~/git/Loop/Loop$ l
src/  war/
jem@jem-VPCF136FM:~/git/Loop/Loop$ 

更新:

我可以通过从哈希值检出来访问我的提交记录:

git checkout 3f00b3f6cb6ed6beddb16baa92f1beaa82b6944c

那么为什么这些内容没有包含在我推送到服务器的代码中呢?

更新 #2

git reflog 的结果:

3f00b3f HEAD@{0}: checkout: moving from master to 3f00b3f6cb6ed6beddb16baa92f1beaa82b6944c
2e09a49 HEAD@{1}: checkout: moving from 3f00b3f6cb6ed6beddb16baa92f1beaa82b6944c to master
3f00b3f HEAD@{2}: checkout: moving from master to 3f00b3f6cb6ed6beddb16baa92f1beaa82b6944c
2e09a49 HEAD@{3}: pull : forced-update
3f00b3f HEAD@{4}: commit: Another commit to work on scolling
2927f85 HEAD@{5}: commit: Removed Alert.
07deceb HEAD@{6}: commit: Added url pattern to the servlet to get rid of the error.
f2d48bb HEAD@{7}: commit: iJames took over again!
88fb39c HEAD@{8}: pull : fast-forward
a22893e HEAD@{9}: commit: Committing a very important change to intro.css. Not!
ac19755 HEAD@{10}: pull : fast-forward
d2a401d HEAD@{11}: commit: This is a test
85a6328 HEAD@{12}: commit: Modified gitignore yet again.
251f557 HEAD@{13}: commit: Committing the classpath. Hope it works.
4e7a428 HEAD@{14}: checkout: moving from local_master to master
97aa2d7 HEAD@{15}: checkout: moving from master to local_master
4e7a428 HEAD@{16}: commit: Added Admin panel for making system changes. Modified the title and description so they go into edit 
38dc2fa HEAD@{17}: commit: Added notifications and real time comet.
bc2f950 HEAD@{18}: commit: Real time updates and chrome notifications.
bc2f950 HEAD@{19}: commit: Adding TagSubscription class.
5e696f4 HEAD@{20}: commit: Bulk delete, fixed delete bug, tagging features and subscriptions. Added more server-side caching. Ad
7b41cc2 HEAD@{21}: commit: adding dropdown plugin files
d9e3716 HEAD@{22}: commit: Added filter list to top, made dynamic, and deployed to 2-20.
e256d21 HEAD@{23}: commit: Cleaned up the HTML code.
d9e3716 HEAD@{24}: commit: Third time is a charm.
3e0863f HEAD@{25}: commit: Here is the 2nd commit for tag-it.
13e70c8 HEAD@{26}: commit: Added the tag-it tags to the application and connected to the database.
0893615 HEAD@{27}: commit: Deployed 2-7 and made default version.
0073e04 HEAD@{28}: commit: Deployed to 2-7 and made the default version.  Finalized mobile form, although the error class shadow
0073e04 HEAD@{29}: commit: test
4351a93 HEAD@{30}: commit: Added notifications for comments and cleaned up mobile form.
5674cfb HEAD@{31}: commit: Added Developer API call to switch users for @loopround.com users.
a22808f HEAD@{32}: commit: updating
8fa1a39 HEAD@{33}: commit: updating the repository
8fa1a39 HEAD@{34}: commit: Deployed to http://0-9-2012-1-27.loopaback.appspot.com/
4786be1 HEAD@{35}: commit: Updating the inbox counts on each loop on page load. Also changed the style of the inbox count on the
33bf8d5 HEAD@{36}: commit: Adding elastic JS library.
095d8e6 HEAD@{37}: commit: Hooked up inbox counts and colors on the loops.
d3275ef HEAD@{38}: commit: committing.
a66024c HEAD@{39}: commit: Put in place email notifications for sharing. Put in place more logging statements to catch errors. F
a66024c HEAD@{40}: commit: Fixed sharing settings and cleaned up some of the code. Fixed the invitation system and also added so
e87ca75 HEAD@{41}: commit: Fixed sharing settings and cleaned up some of the code. Fixed the invitation system and also added so
e87ca75 HEAD@{42}: commit: Got rid of login form and also integrated Loop feedback form.
b2d7da9 HEAD@{43}: commit: Eliminated the login page and also integrated the Feedback Loop Form.
b2d7da9 HEAD@{44}: commit: Added the Loop Form.
e7ea0eb HEAD@{45}: commit: Added the Loop Form to the Loop Application and connected it to the services.
e7ea0eb HEAD@{46}: commit: Trying to get all the files for the settings page in the repo.
97aa2d7 HEAD@{47}: commit: test
36d4841 HEAD@{48}: commit: Got the settings page in place so users can be added and removed.
cf83cbd HEAD@{49}: commit: Committing this file because I want it to accept changes, not have the repository just simply force m
e7ccb2d HEAD@{50}: commit: Merged Josh's changes, I hope!
90ee5a5 HEAD@{51}: commit: Merged Josh's changes. Why I have to do this manually, I don't know?
3fc14b4 HEAD@{52}: commit: Service giving ability to send email to a user.
2ce4a6c HEAD@{53}: commit: Worked on the UI for adding a user to a Loop. Also fixed the display so it shows all active users ass
21caa9b HEAD@{54}: commit: Updated the application-manifest.xml file with the new LoopRound name and latest version info.
4330694 HEAD@{55}: commit: Deployed to http://0-9-2012-1-12-1715.loopaback.appspot.com/# and made the default version. Added in 
adde3cd HEAD@{56}: commit: Can now add new loops from the Loop screen. To rename the loop or access it's settings page; currentl
6902710 HEAD@{57}: commit: Settings page is functional to edit the loop name.
6980c79 HEAD@{58}: merge branch 'master' of git@github.com:FullCreative/Loop.git: Fast-forward
e364173 HEAD@{59}: commit: Added Josh's CSS to style.css. 2nd attempt.
0e464f1 HEAD@{60}:

.git/config file

[core]
    repositoryformatversion = 0
    filemode = true
    logallrefupdates = true
    autocrlf = false
[remote "origin"]
    url = git@github.com:FullCreative/Loop.git
    fetch = +refs/heads/*:refs/heads/*
    push = refs/heads/*:refs/heads/*
[branch "master"]
    remote = origin
    merge = refs/heads/master

致命错误:不是git代码库(或任何父目录):.git。我当前正在使用该哈希值... - jamesmortensen
@CanSpice - 我弹出了一个名为“gitk”的弹窗,上面写着“无法在此处找到git仓库”。 - jamesmortensen
抱歉,我在 git 文件夹外运行了那些命令... 我会更新答案并附上输出。 - jamesmortensen
@jmort253 你的.git/config里有什么?看起来你的设置有些奇怪;你似乎有一个local_mastermaster分支,而且似乎没有一个正确的origin/master作为远程跟踪分支。 - Brian Campbell
@BrianCampbell - 我将.git/config文件的内容添加到问题的底部。我知道代码最终会出现在服务器上的分支中,但老实说,我不能百分之百确定我们的工作站配置是否正确... - jamesmortensen
4个回答

10
以下行看起来有些可疑:
From github.com:FullCreative/Loop
 + 3f00b3f...2e09a49 master     -> master  (forced update)
Warning: fetch updated the current branch head.
Warning: fast-forwarding your working tree from
Warning: commit 3f00b3f6cb6ed6beddb16baa92f1beaa82b6944c.

特别是,如果您已经正确配置,行应该显示 master -> origin/master 或者您的远程仓库名称。但是,它却显示 master -> master。这表明远程仓库上的 master 分支直接被写入到本地仓库的 master 分支中;这意味着您失去了对您的提交的引用(尽管正如您注意到的那样,它仍然存在于您的仓库中,只是没有被任何东西引用)。这就是为什么 git 打印 "Warning: fetch updated the current branch head." 的原因。
请检查您的 .git/config 文件。它应该包含类似以下的内容:
[remote "origin"]
        url = <some url>
        fetch = +refs/heads/*:refs/remotes/origin/*

然而,根据您收到的错误,它可能包含如下内容:

[remote "origin"]
        url = <some url>
        fetch = +refs/heads/*:refs/heads/*

这个命令告诉 Git 在拉取代码时应该直接将远程分支的值写入到本地分支中。通常,在上述正确的配置中,当你拉取一个远程引用时,它会被写入到refs/remotes/<remote>/<name>中。这样你就可以跟踪上游提交和本地提交,以便进行合并。而在错误的配置中,你只是简单地覆盖了本地引用,失去了原始引用的追踪记录。
我不确定你是怎么设置的;也许你做了像 git clone --mirrorgit remote add --mirror=fetch 这样的操作。无论如何,你都可以手动编辑你的 .git/config 文件,并按照上面指示的方式更正 fetch 行。

我在问题中添加了配置文件。你对它的内容完全正确。猜得真好!在冒号后,fetch被设置为refs/heads/*。明天,我们将尝试添加origin并进行更多的测试提交。感谢你的帮助! - jamesmortensen

6
我认为问题的关键在于您pull命令上的不祥信息:看到“强制更新”这个词了吗?这是Git告诉您分支(master)已经重新创建或变基的方式,这在共享存储库中是大忌。
您应该询问其他协作者是否对主分支进行了重新创建或变基。如果您想要图形化查看发生了什么,请尝试使用gitk --all命令。
解决您的问题可能没有很好的方法,但简单的方法是挑选主分支上的一个提交(git cherry-pick 3f00b3f)并再次推送。

感谢您的回复。我们怀疑“强制更新”不合适,因为git pull不应该覆盖任何内容...我们会进一步调查。谢谢! - jamesmortensen
1
我不相信这是由于上游的变基。虽然如果上游分支被变基,你会得到一个强制更新,但这不应该丢失你本地主分支中的任何更改。而且如果你仔细看,强制更新是 master -> master,而不是 master -> origin/master,这是一个正确的远程跟踪分支应该发生的情况。请参见我的答案,了解我认为问题所在的详细信息。 - Brian Campbell
+1 - 樱桃挑选命令很有帮助!我能够将代码推送回服务器。下一步:我需要弄清楚是什么导致了主分支的变基或重新创建。 - jamesmortensen

2
为了解决这个问题,请输入以下命令:
git checkout master; git merge 3f00b3f6cb6ed6beddb16baa92f1beaa82b6944c

那就去揍那个运行了git push --force命令的混蛋吧。


没有人运行了 git push --force。由于我们三个人正在将其作为 CVS 替代品在公司中进行开拓,因此我们一起学习并在每个人推送或提交时都在场。我没有看到我们中的任何人使用 --force,在这种情况下也没有使用。 - jamesmortensen
1
据我所知,获得“强制更新”的唯一方法是如果有人运行了push --force命令。 - Ana Betts

0

我也遇到了同样的问题,这篇文章帮助我使用git扩展和git bash找到了解决方案。

由于我使用的是git扩展,所以没有控制台窗口来查看我所做的历史记录。此外,我没有收到任何警告,而且我很少使用git bash,所以对它不是很熟悉。

我通过查看[项目路径]\.git\logs\HEAD找到了提交ID。这是其中的最后一部分信息:

commit: ################
d511e44dca8c3f7f6f8d3985f3ca54874fb67a63 673fd2fbfc5ad78434389c64565904f81aa9a5ad unknown <###.(none)> 1444281107 -0500 pull --progress I:/####/#####+refs/heads/master:refs/heads/master: forced-update

我没有手动进行强制更新。我试图从/向外部驱动器拉取/推送,并且自上次我这样做以来,字母已更改,因此我试图记住第一次设置它时所做的事情,但我做错了。这可能与使用URL字段而不是Remotes字段有关。

为了修复它,我在git bash中使用了以下命令:

git checkout 673fd2fbfc5ad78434389c64565904f81aa9a5ad

在VS2010中加载代码而没有分支。然后我使用git扩展创建了一个新的代码分支,切换回主分支并将新的分支合并回主分支。这与

相同。
git checkout master; git merge 673fd2fbfc5ad78434389c64565904f81aa9a5ad

所以这个解决方案与其他人的基本相同,只是我必须以不同的方式找到提交ID。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接