这是我的实验.
git init
echo hello > some.txt
git add some.txt
-- objects
-- f2 (blob "hello")
echo hola > some.txt
git add some.txt
-- objects
-- f2 (blob "hello")
-- 53 (blob "hola")
git commit -m "..."
-- objects
-- f2 (blob "hello")
-- 53 (blob "hola")
-- 5c (tree
"some.txt" -> 53)
-- 61 (commit "tree 5c")
Run Code Online (Sandbox Code Playgroud)
我们可以看到每个"git add"都创建了blob对象,而"git commit"提交了最后一个blob 53.
但请注意,中间blob"f2"仍在存储库中.这有什么理由吗?我怎么能用这个blob?或者我该如何删除它?
我们在工作中使用Perforce,并定期将软件项目保存在存储库中.一般创建者遵循正常的Perforce流程,但我们也有一类用户,他们不需要编辑文件但只阅读它们.目前我们使用P4Web,但这需要用户单独下载每个文件以重新组装项目目录.理想情况下,我想有一个过程,当用户不提交/提交Perforce中,该脚本将自动运行生成项目目录和文件的一个zip文件,因此它是在保证一键下载正确对抗源文件的当前状态.我知道Git有一个可以用于此的post-commit钩子,但是我无法弄清楚Perforce中的等效函数.
每次我做一个git diff,尽管自第一个提交以来很多提交,它继续给我这些旧的更改,这些更改很久以前用于文件删除.
我在提交中删除了大约7个提交之前的整个文件夹,并且仍然在分支或合并上,git就像删除是新的一样.做git diff静止显示已删除文件的每一行都"刚被删除",好像这是新的,但我删除了很多提交前.
这是怎么回事?
我一直在分支机构工作并做了一些提交.现在有什么方法可以在TortoiseHg中看到,如果这些提交被推或者它们仍然只是本地的?
我正在使用带有mysqldb适配器的web2py dal连接到mysql服务器.
我的问题:
服务器信息:innodb engine autocommit = 1(默认值)tx_isolation = repeatable-read(默认值)
general_log:
100356 10:00:00 123456 Connect dummy@172.0.0.1 on dummydb
123456 Query SET NAMES 'utf8'
123456 Query SET AUTOCOMMIT = 0
123456 Query COMMIT
123456 Query SET FOREIGN_KEY_CHECKS=1
123456 Query SET sql_mode='NO_BACKSLASH_ESCAPES'
Run Code Online (Sandbox Code Playgroud) 假设我有一个包含以下提交的repo(git版本1.7.1)
A -> B -> C -> D ->E 我的HEAD开着E.现在我想删除C,同时保持一切相同 A -> B -> D -> E.
你能帮我怎么做吗?
我在PHP中使用mysql扩展,我知道它从PHP 5.5.0开始被弃用,但是我已经使用这个扩展编写了很多代码.在我看来像mysql_query提交查询,如果是这样意味着它设置为自动提交,如何设置所以它不自动提交.
我正在尝试在git中提交正确的文件,但是在正确配置gitignore时遇到了问题。我按照此处的说明创建了gitignore文件(django项目):
# File types #
##############
*.pyc
*.swo
*.swp
*.swn
# Directories #
###############
logs/
# Specific files #
##################
projectname/settings.py
# OS generated files #
######################
.DS_Store
ehthumbs.db
Icon
Thumbs.db
*~
Run Code Online (Sandbox Code Playgroud)
问题是settings.py已包含在提交中:
Admin$ git add .
Admin$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: projectname/settings.py
Run Code Online (Sandbox Code Playgroud)
如何忽略gitignore中的设置?
我使用Sublime Text(3)作为我的默认Git提交消息编辑器.我尝试使用每行字符数的硬限制来遵循Git约定(第一行为50,其余为72).我目前在这些间隔设置了用于视觉参考的指南,但是不是手动必须在72个字符的末尾添加一行返回,我希望让ST自动为我插入一行返回.本质上,我希望能够在没有行返回的情况下进行编写,但是为了包装而放置了实际的返回,而不是仅仅在编辑器中进行可视化包装.有合理的方法吗?
我输入'git -commit'并在我的终端上获得以下内容
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
#
# Initial commit
#
# Changes to be committed:
# new file: index.html
# new file: index3.html
#
# Changes not staged for commit:
# modified: index.html
#
# Untracked files:
# index2.html
#
Run Code Online (Sandbox Code Playgroud)
现在我被困在这个屏幕上,我不知道如何完成提交并返回到终端的目录区域以继续cmd中的其他任务.救命!
commit ×10
git ×5
mysql ×2
add ×1
autocommit ×1
changeset ×1
cmd ×1
gitignore ×1
hook ×1
mercurial ×1
perforce ×1
php ×1
post-commit ×1
push ×1
scripting ×1
sublimetext ×1
sublimetext3 ×1
terminal ×1
tortoisehg ×1
transactions ×1
versioning ×1
word-wrap ×1