你抓到了什么git?

Bob*_*man 12 git version-control

我遇到的最糟糕的一个是git子模块.我在github上有一个项目的子模块.该项目没有维护,我想提交补丁,但不能,所以我分叉了.现在子模块指向原始库,我需要它指向fork.所以我删除了旧的子模块,并在同一次提交中将其替换为新项目的子模块.事实证明这打破了其他人的存储库.我还是不知道的处理这种情况的正确方法是什么,但我最终删除的子模块,有大家拉和更新,然后我创建了新的子模块,并有大家拉和再次更新.花了一天的时间来解决这个问题.

其他人做了什么,以非显而易见的方式意外搞砸了git存储库,你是如何解决它的?

Von*_*onC 15

添加子模块时通常的尾部斜杠:

在子模块上使用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
Run Code Online (Sandbox Code Playgroud)


gah*_*ooa 13

这不是一个陷阱,它是一个git cha.

  • Lol +1 funny -1应该是评论 (22认同)

Von*_*onC 7

发布到公共存储库而没有意识到我的git config user.name错误.
这意味着公共回购现在得到了一个名字(和一封电子邮件)我根本不想发布.如果那个回购被复制,那就太晚了.

这就是为什么我更喜欢在我的git提示shell中显示我的user.name,这意味着不是这样:

 MY_HOSTNAME /c/Prog/myGitProject (master)$
Run Code Online (Sandbox Code Playgroud)

我看到了这个:

 MY_HOSTNAME /c/Prog/myGitProject (master) VonC $
Run Code Online (Sandbox Code Playgroud)

我知道我是谁,我在这个Git bash会话中输入的第一个命令!


Ben*_*jol 6

  1. 只有意识到你已经遗忘的条目.gitignore,一旦你已经有了跨越分支的负载分散匹配.

  2. 忘记那个git add并没有添加那些不存在的东西......

    git add .
    git commit
    git status
    //hey! why didn't it commit my deletes?, Oh yeah, silly me
    git add -u
    git commit --amend
    

  3. 如果你这样做git branch list,你会得到一个叫做的新分支list,但是如果你这样做了git stash,你就会把工作空间藏起来; 为藏匿,你需要list,如果你想在列表...

很快,可能......

  • 显然有git add -A可以做到这两点 (2认同)