我有一个包含几十个提交的Git存储库.我希望最后一次提交是唯一的提交 - 这意味着存储库的行为就像刚刚初始化并且当前文件状态是唯一的提交一样.
有没有比创建新回购更好的方法呢?
这个帖子暗示放置
*.jpg binary -delta
Run Code Online (Sandbox Code Playgroud)
在.gitattributegit 中的repos文件,但我不确定它是做什么的.我找不到git的'-delta'标志的任何例子.
目的是显然加快更大文件的提交或推送时间.
我仍然不完全清楚git提交消息应该写的方式.
我知道基本规则,但这个让我困惑.在我的练习项目中,我创建了一个登录系统和一个用户注册,但尚未在数据库中实现安全密码存储.他们仍然以纯文本形式存储索尼风格.我想在提交消息中记下这一点,但我发现自己陷入了一个奇怪的困境,即如何在命令式中表达这一点.
有什么想法吗?
我个人认为,这应该包含在提交消息中,即使它是对提交中未包含的内容的声明,因为它代表了任何希望使用可能不明显的代码的人的重要信息.瞥一眼这些变化.
我有一个远程'dev'分支,正在本地工作.
我使用提交消息"my_feature"对'dev'进行了第一次提交,通过1次提交将我的本地分支置于远程之前.
然后我开发了一些新的东西并制作了一个git add -u,准备好了.然后我意识到我想将之前的提交消息重写为"my_feature(1/2)",使我当前的提交消息为"my_feature(2/2)",将我的本地分支置于远程提前2次提交.
所以我做了一个git commit --amend(认为它只会编辑前一个提交的消息),将"my_feature"提交消息编辑为"my_feature(1/2)"并且...... 最终得到一个标记为"my_feature(1/2)"的提交 " 拥有我所有的更改(第一次提交+暂存文件差异) - 我的索引现在是干净的.
所以,如果我做对了,我的命令实际上做了提交,也提交了暂存文件,这产生了一个(合并的?)提交?
我没想到Git会做这样的事情.我只想编辑旧的提交消息,而不是将旧的提交消息与我当前的暂存文件合并.(现在我想起来rebase可能会更好.)
虽然我可以理解为什么git commit --amend可以提交(即使我只想编辑提交消息),但是我有一些问题需要理解Git如何将我的两个提交合并为一个commit命令.
有人可以向我澄清一下吗?
$ git --version
git version 1.7.10.4
Run Code Online (Sandbox Code Playgroud) 我已经在我的仓库中编辑了一些文件并将其推送。
在完成其他一些工作之后,我注意到我在一行中发表了评论。
因此,我不想为其创建一个新的提交,而我想在上一个提交中更改它(而不是最后一个提交)。
我认为我可以使用提交ID,但是我不知道Git怎么会容忍此功能。
我们需要及时回到特定的提交。对Master进行了一些意外更改。尝试将其恢复挖得太深,因此master处于不良状态。现在,我们希望主服务器回到66ada4cc61d62afc。
根据git还原回某些提交:
$ git reset --hard 66ada4cc61d62afc
HEAD is now at 66ada4c Updated documentation
Run Code Online (Sandbox Code Playgroud)
然后,尝试提交:
$ git add *.h *.cpp
$ git commit -m "Go back to Commit 66ada4cc61d62afc"
On branch master
Your branch is behind 'origin/master' by 16 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
nothing to commit, working directory clean
Run Code Online (Sandbox Code Playgroud)
最后:
$ git push
To https://github.com/weidai11/cryptopp.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/weidai11/cryptopp.git' …Run Code Online (Sandbox Code Playgroud) 在我有git add和git commit之后,我的工作区,索引缓存和本地存储库变得相同.那么我怎么知道什么时候"推",这个补丁集有什么区别?
我有一个空的git存储库(托管在GitHub或任何地方)。
我想匿名提交对它的更改,如下图所示。我应该如何设置我的git配置(最好是项目特定的配置)来实现?

谢谢
PS:如果您要问,但是为什么呢?,请查看会议“ 双盲”审查流程。
尝试从Github桌面应用发布到github.com时,出现以下错误。
GitHub Desktop无法将帐户令牌存储在钥匙串中。请检查您是否已解锁对“登录”钥匙串的访问权限。
以我的经验,git commit -a它的行为等同于git commit .但是,最近,我创建了一个pre-commit钩子,该钩子自动格式化我的源代码,现在git commit .有一些意想不到的副作用:提交的文件最终在工作目录和目录中被修改。提交命令完成后的索引。不会发生这种情况git commit -a。我试图了解运行时在幕后git commit .发生的情况,这导致这种情况发生,并查看是否有办法在我的预提交钩子脚本中正确处理它。
预提交挂钩:
git_toplevel=$(git rev-parse --show-toplevel)
git --no-pager diff -z --cached --name-only --diff-filter=ACMRT | $git_toplevel/meta/reformat.bash -s files
git --no-pager diff -z --name-only --diff-filter=ACMRT | xargs -0 --no-run-if-empty git add
Run Code Online (Sandbox Code Playgroud)
当前使用的是git版本1.8.3.1,但在最新版本中却看到了相同的行为。
这是在行的开头添加一个简单空格的命令序列:
[]$ git status
# On branch eroller/format-clean-filter
# Your branch is ahead of 'origin/eroller/format-clean-filter' by 1 commit.
# (use "git push" to publish your local commits)
#
# Changes not …Run Code Online (Sandbox Code Playgroud)