其他人有哪些非明显方式误操作 Git 代码库,该如何解决?
在添加子模块时通常不要使用尾部斜杠:
当您在子模块上使用git add命令时,请确保没有使用尾部斜杠。
> git add local/path
-- adds the submodule
> git add local/path/
-- adds all the files in the submodule directly into your repository, big no-no
这不是圈套,而是Git的难点。
在没有意识到我的git config user.name
有误的情况下发布到公共存储库。
这意味着公共存储库现在会得到一个我不想要发布的名称(和电子邮件)。如果该存储库被复制,...那就太晚了。
这就是为什么我更喜欢在我的git提示符shell中显示我的user.name,而不是这样:
MY_HOSTNAME /c/Prog/myGitProject (master)$
MY_HOSTNAME /c/Prog/myGitProject (master) VonC $
当你的分支上出现了很多匹配项时,才意识到在 .gitignore
中忘记添加某个条目。
忘记了 git add
不会添加不存在的文件...
git add . git commit git status //嘿!为什么我的删除没有提交?哦,是我太糊涂了 git add -u git commit --amend
git branch list
命令,你会得到一个名为 list
的新分支;但如果你执行 git stash
命令,你会将你的工作区存储起来;对于存储,如果你想要这个列表,你就需要 这个 list
...很快就会有更多内容...
工作,工作,工作……
git commit
Work work work ...
git commit
git rebase -i origin/master
git reset --hard origin/master
哭泣哭泣哭泣...
Git让你毫不犹豫地清除本地历史记录。最大的陷阱是,你就是安全网。
git reflog
。 :) - Bombegit reflog
能让我看到被删除的提交吗?它只列出活动记录,而我已经执行了 reset --hard
(已更新答案,之前是错误的)。 - Robert Munteanugit reset --hard origin/master
命令时想要输入什么?为什么要使用除了 git rebase --abort
以外的其他方法来中止失败的 rebase? - Max Nanasy我在使用git存储库时遇到了一个最尴尬的时刻,虽然这更多是关于sed的:
有一次我在存储库的子目录中执行了find ... -exec sed -i ...
操作。我先测试了没有-i
的情况,然后分心了一下,回来时在运行它之前成功地切换到了我的存储库的顶级目录。现在,git的重要文件都是只读的,但是默认情况下sed -i
通过重命名文件并写回原始文件的方式来处理只读文件,因此它可以在像git对象这样的只读文件上正常工作。替换是不可逆的,我不得不通过克隆和从跟踪我的存储库作为远程的某个人那里获取来恢复存储库。
我甚至从未想过sed会在只读文件上起作用。故事的寓意是:使用sed -i -c
,它会复制文件,然后尝试覆盖原始文件。
git branch new-branch
工作,提交,工作... 发现我的所有工作都在主分支上,而不是新分支上。
我应该这样做:
git checkout -b new-branch
git branch -c new-branch
(c表示结账),其中有一个选项可以将其设置为默认行为???
git checkout -b new-branch
应该是首先要做的事情。如果之前没有这样做,可以通过以下步骤进行修复:git checkout new-branch
,git merge master
(现在两个分支处于相同状态),git checkout master
,最后使用 git reset --hard origin/master
将主分支恢复到原始状态。 - Ulrich Eckhardt工作,工作,工作。开始进行一个更改的分期。注意不想提交所有内容。仔细地分期提交一部分。
最终决定这不适用于当前分支。我想将已分期的更改提交到一个新的临时分支。概念上听起来很琐碎,对吧?
搜索如何做到这一点。排名第一的答案说stash
,checkout -b newbranch
,stash pop
。勉强这样做,想知道为什么没有更简单的方法。
发现这完全抹去了您已分期和未分期更改之间的区别。谢谢,Git!
git status
、git diff
和git add
中进行痛苦而小心的部分提交。最后决定完成任务,输入git commit -a
。然后……咕噜噜? - damiangit revert
移除不需要的更改,这样可以将之前挑选的提交还原。最后,在那里使用git reset @~3
以从停下来的地方继续开始。;-) - Ulrich Eckhardt