我想在我的网站上进行源代码管理.有很多文件所以我只是去了git add -a
不幸的是,我意外地提交并推送了一个名为credentials.txt的文件,其中包含我的ftp和db详细信息.我已经尝试删除该文件,提交然后推送但是当我在历史记录中浏览github上的repo时它仍然显示该文件.
反正有没有摆脱这个?
通常我想编辑提交消息,而不必重新选择上次提交的文件集.
git commit file1.c file2.c
Run Code Online (Sandbox Code Playgroud)
提交消息中的意外错误.
git commit file1.c file2.c --amend
Run Code Online (Sandbox Code Playgroud)
这是有效的,但我不想重新选择原始提交中的文件集,我曾经偶然做过git commit -a --amend并无意中添加了许多更改.
我知道git rebase -i HEAD~1然后替换pick为r(重新单词),但这最终只是几个步骤.
有没有办法在不包含任何新文件的情况下一步重写最后一次提交?
我在命令方面遇到了一些麻烦git commit.我做了一个,git commit但不幸的是我按下Ctrl+Z而不是Ctrl+X关闭,所以现在当我git commit再次,它给了我这个错误:
error: editor died of signal 11
error: There was a problem with the editor 'editor'. `Please, specific the message using option -m or -F. `
Run Code Online (Sandbox Code Playgroud)
其实我不知道如何解决这个错误.我正在运行的操作系统是Ubuntu 15.10.
我正在尝试进行git提交.我运行命令git commit,vim打开了.我输入我的提交消息,当我执行:wq命令时,我收到以下错误:
错误:编辑器'vi'出现问题.请使用-m或-F选项提供消息.
知道如何弄清楚问题是什么吗?
如何在github.com托管的git远程上删除提交?我已经在SO上找到了多个答案,展示了如何从分支的提交历史中删除提交.我尝试了这些,但是我的提交仍然清晰可用,因为我可以使用其哈希直接浏览它.
所以为了清楚起见,我的问题不是如何从我的遥控器上所有分支的提交历史中删除提交.我的问题是如何删除提交本身,以便在我之前推送我的分支的git遥控器上没有它的记录.
我试过的解决方案包括:
编辑: Git:从远程分支永久删除一些提交是另一个不适合我的解决方案.这个特定解决方案不起作用的原因是因为它保持"git push - 强制你修改的本地分支到远程.",它不会从远程删除提交,而只是从当前的提交历史中删除它们科.
更新IntelliJ IDEA后,它开始在每次git提交之前重新排列代码.我在"设置">"编辑器">"代码样式">"Java"中找到了重新排列规则,但没有启用/禁用功能的复选框.
我该如何禁用它?
今天早些时候,阿瑟斯爵士(非常感谢你)在一个独立的问题上给了我很大的帮助.
我现在卡在了一个我想要修改一个简单文本文件并将其包含在我的推送中的位置.所以基本上我想将修改后的文本文件添加到提交中,并将其作为提交推送,并将其构建号标记作为发布.希望我在这里有意义.
到目前为止,我的代码尝试做到这一点
#!/bin/bash
YEAR=$(date +"%Y")
MONTH=$(date +"%m")
git config --global user.email "${GIT_EMAIL}"
git config --global user.name "${GIT_NAME}"
git config --global push.default simple
export GIT_TAG=v2.$YEAR-$MONTH.$TRAVIS_BUILD_NUMBER
git fetch --tags
msg="Tag Generated from TravisCI for build $TRAVIS_BUILD_NUMBER"
echo "$msg" >> $TRAVIS_BUILD_DIR/build.txt
git add -A
if git tag $GIT_TAG -a -m "$msg" 2>/dev/null; then
git tag $GIT_TAG -a -m "Tag Generated from TravisCI for build $TRAVIS_BUILD_NUMBER"
git push https://${GH_TOKEN}@github.com/${TRAVIS_REPO_SLUG} HEAD:master && git push https://${GH_TOKEN}@github.com/${TRAVIS_REPO_SLUG} --tags HEAD:master
ls -aR
else echo Tag already exists!; …Run Code Online (Sandbox Code Playgroud) 我做了一些提交,并将其推送到我的远程仓库中。我要删除的其中之一。它仅包含一个二进制文件,该文件仅在该分支的该提交中被更改。如何删除它而对以后的提交没有危害?
有没有一种办法rebase和squash承诺,而不是通过命令行使用交互模式上Gitlab CE UI,?
我正在努力更好地理解git-rebase背后的魔力.今天我对以下行为感到非常惊喜,我没想到.
TLDR:我重新设置了一个共享分支,导致所有提交sha1都发生了变化.尽管如此,派生分支能够准确地识别出其原始提交被"别名"为具有不同sha1的新提交.rebase并没有造成任何混乱.
拿一个主分支: M1
将它分支到branch-X,添加一些额外的提交:M1-A1-B1-C1.记下git-log输出.
将branch-X分支到branch-Y,添加了一个额外的提交:M1-A1-B1-C1-D1.记下git-log输出.
将新提交添加到主分支的提示: M1-M2
将branch-X重新引导到更新后的master : M1-M2-A2-B2-C2. 请注意,A2-B2-C2都具有与A1-B1-C1相同的消息,内容和作者日期.但是,它们具有完全不同的sha1值以及提交日期.根据这篇文章,SHA1不同的原因是因为提交的父级已经改变.
将branch-Y重新引导到更新的分支-X上.结果:M1-M2-A2-B2-C2-D2.
值得注意的是,仅应用D1提交(并且变为D2).分支-Y中的A1-B1-C1提交被git-rebase完全忽略.您可以在输出日志中看到这一点.
这很棒,但git-rebase如何知道忽略A1-B1-C1?git-rebase如何知道A2-B2-C2与A1-B1-C1相同,因此可以安全地忽略?我一直认为git使用sha1标识符跟踪提交,但是尽管上面的提交有不同的sha1s,git仍然知道它们是链接在一起的.它是如何做到的?鉴于上述行为,何时修改共享分支真的很危险?