Nun, ich habe versucht, was Sie denken, Sie haben, um genau das tun, was Sie
schrieb
cd /tmp
mkdir so35588521
cd so35588521
git init
# Initialized empty Git repository in /tmp/so35588521/.git/
touch 1
echo "1" > 1
git add .
git commit -m "first"
# [master (root-commit) 173f431] first
# 1 file changed, 0 insertions(+), 0 deletions(-)
# create mode 100644 1
touch 2
touch 3
git add .
git commit -m "second"
# [master a9fdcc9] second
# 2 files changed, 0 insertions(+), 0 deletions(-)
# create mode 100644 2
# create mode 100644 3
git log
# commit a9fdcc9338c9b3de25c211580a35ab63d1d57c2e
# Author: Me and my email
# Date: Tue Feb 23 22:46:50 2016 +0100
git revert a9fd
# [master dd5a86e] Revert "second"
# 2 files changed, 0 insertions(+), 0 deletions(-)
# delete mode 100644 2
# delete mode 100644 3
wie Sie sehen können - alles gut gegangen ist. So dachte ich, AHA! Sie/er muss etwas anderes gemacht haben, und vernachlässigte es auf SO zu erwähnen. Naja, ich werde herausfinden, was sie mit meiner Kristallkugel gemacht hat. Um was geht es, wenn es umsonst herumliegt?
Also, fusionieren, git sagte. Dann machen wir einen Zweig und versuchen, ihn mit unserem Hauptzweig zu verbinden. Jetzt
git checkout -b a_branch
# Switched to a new branch 'a_branch'
echo "2" > 1
git status
# On branch a_branch ...
git add .
git commit -m "third"
# [a_branch 96d3a7a] third
# 1 file changed, 1 insertion(+), 1 deletion(-)
git checkout master
# Switched to branch 'master'
echo "3" > 1
git add .
git commit -m "fourth"
# [master 7f72eec] fourth
# 1 file changed, 2 insertions(+), 1 deletion(-)
#### Now we have first commit, and second, and revert second, and two commits: third on **a_branch** branch and fourth on **master**.
git merge a_branch
# Auto-merging 1
# CONFLICT (content): Merge conflict in 1
# Automatic merge failed; fix conflicts and then commit the result.
# *Oh DANG* whyy? Git stop, don't do that it hurts, revert!
git revert last_commit_id_from_git_log
# error: revert is not possible because you have unmerged files.
# hint: Fix them up in the work tree, and then use 'git add/rm <file>'
# hint: as appropriate to mark resolution and make a commit.
# fatal: revert failed
# *Git nope!*
, das war nur raten mir, und ein wenig Humor zu SO bringen, hoffe ich. Wenn dies NICHT das ist, was Sie getan haben, können Sie uns bitte genaue Schritte sagen, die Sie getan haben? Da ich Fehler nicht replizieren kann hast du, und somit fühle ich mich unerfüllt, nicht in der Lage zu sein, zu höllen.
EDIT:
Da OP besteht darauf, dass auf keinen Fall eine Zweigniederlassung hat ...
rm *
rm -rf .git
git init
echo -e "line one\n" > 1
git add .
git ci -m "first"
echo -e "line two\n" >> 1
git ci -a -m "second"
git log
# commit 23d710610d98c1046844870557208f335e76a933
# Author: ME <[email protected]>
# Date: Tue Feb 23 23:31:28 2016 +0100
#
# second
#
# commit 22873fb5fbf06d80a1779fe6740060c660d68714
# Author: ME <[email protected]>
# Date: Tue Feb 23 23:30:47 2016 +0100
#
# first
git revert "first"
# fatal: bad revision 'first' # but OK i assume You used id, so,
git revert 22873fb5fbf06d80
# error: could not revert 22873fb... first
# hint: after resolving the conflicts, mark the corrected paths
# hint: with 'git add <paths>' or 'git rm <paths>'
# hint: and commit the result with 'git commit'
Ahaaa, bekam ich es jetzt! Und das ... ist bizaare.
Ok, ich habe überprüft und tatsächlich haben Sie Recht, auf meinem git --version
2.6.3 Ich könnte dieses Verhalten replizieren. Eigentlich glaube ich, dass du hier in einen recht eckigen Fall gegangen bist. Was passiert ist, ist, dass Git nach dem zweiten Commit die Änderungen, die Sie an der Datei test.txt
vorgenommen haben, gespeichert und diese Änderungen behalten hat. Jetzt haben Sie ihm (it?) Zu git revert first_commit_id
, die tatsächlich Datei test.txt erstellt. Ich kann es nicht genau sagen, aber das scheint für mich ein kleiner Fehler zu sein.
Jedoch! Wenn Sie im zweiten Commit - Datei hinzufügen, zum Beispiel test2.txt
(damit Sie zwei Dateien in Git Repository versioniert haben), dann funktioniert revert
funktioniert.
Es klingt wie etwas anderes hinzugefügt eine Datei (z. B. Editor Sicherungsdateien). Probiere 'git status' aus, um zu sehen, was git denkt. – slothbear
git status -> Am Zweig Master; Sie setzen Commit 7c319d587 derzeit zurück. (Konflikte lösen und "git revert --continue" ausführen) (benutze git revert --abort, um den Wiederherstellungsvorgang abzubrechen); nicht zusammengefasste Pfade: (benutze "git reset Heat .." um zu deaktivieren); von ihnen: test.txt; keine Änderungen hinzugefügt zu commit (verwenden Sie "git add" und/"git commit -a) –