我想恢复所有本地更改
git checkout -- .
Run Code Online (Sandbox Code Playgroud)
但意外地做到了
git checkout - .
Run Code Online (Sandbox Code Playgroud)
它做了许多我根本无法理解的局部修改.
第二个命令做了什么,是否可以恢复已完成的操作?
我正在开展一个由大团队工作的项目.随着时间的推移,人们一直在创建分支机构并将它们推送到远程仓库.
我怎么知道哪个分支是另一个人创建的新分支的根?可以基于当前HEAD创建新分支,但是也可以指定<start-point>哪个可以是提交,标记或分支.如何找出用于创建新分支的分支?
一个额外的问题:提交可以与分支创建一起推送.我想通过在服务器上使用post receive hook来记录那些与新分支有关的提交.钩子与(oldrev,newrev,refname)一起传递,如果我能找到上面问题的答案,那就太好了.
我在post-receive上执行单元测试但不希望用户等待它.
我尝试了git-user邮件列表中的建议("只是&它"),但这不起作用:https://groups.google.com/forum/#!topic / git-users/CFshrDgYYzE
即使我把它放在hooks/post-receive中,git似乎还在等待bash脚本退出:
exec-unit-tests.sh &
Run Code Online (Sandbox Code Playgroud) 我不确定如何(用EGit创建分支,可能)我在我的配置中以此部分结束:
[branch "master"]
remote = origin
merge = refs/heads/master
[branch "sfc"]
remote = .
merge = refs/heads/master
rebase = true
Run Code Online (Sandbox Code Playgroud)
我想明白这一点.我不确定dot in remote = .是否被解释为url(当前目录)或特殊的存储库名称(我自己的别名)?这是合法/正常/典型,还是我猜这是搞砸了?有一个指向同一个存储库的"远程"规范让我觉得很奇怪.此外,该分支确实存在于遥控器中......这对于推/拉行为的含义是什么?
更多信息:
$ git remote show origin
* remote origin
Fetch URL: ssh://git@10.0.0.3/var/gitrep/zzz.git
Push URL: ssh://git@10.0.0.3/var/gitrep/zzz.git
HEAD branch: master
Remote branches:
master tracked
sfc tracked
Local branch configured for 'git pull':
master merges with remote master
Local refs configured for 'git push':
master pushes to master (fast-forwardable)
sfc pushes to sfc (up to date)
$ …Run Code Online (Sandbox Code Playgroud) 是否有可能要求Git在需要合并时将其放入文件的行末尾使用CRLF而不是LF?

如果在没有可见EOL字符的情况下解决文本编辑器中的冲突,如果按选择删除,很容易意外地将这些LF合并到最后:

离开你:

现在有两个LF已经潜入你的CRLF文件了!
显然,一种替代方案是在解析合并时只需要更多关注行结尾,但我想我会问有什么方法可以告诉Git将CRLF用于它在这里生成的行.
我试图在svn2git的帮助下将SVN项目迁移到git.执行命令时,它退出时出现以下错误:
Running command: git branch --track "0.0.9" "remotes/svn/0.0.9"
fatal: Cannot setup tracking information; starting point 'remotes/svn/0.0.9' is not a branch.
Run Code Online (Sandbox Code Playgroud)
开始于:
svn2git http://<host>/<project>
Run Code Online (Sandbox Code Playgroud)
我找不到任何解决方案,似乎没有多少用户有同样的问题.
我该怎么做才能解决这个问题?
每当我将一个子目录拆分成一个分支时,git subtree split或者(因此?)当我向上游推送一个子树时,新分支/上游提交中的提交消息都有"-n"并且前面有一个换行符.
使用split进行演示最简单:
git init repo
cd repo
mkdir splitme
touch splitme/foo
git add splitme/
git commit -m 'Add foo'
git subtree split -P splitme -b splitme-only
Run Code Online (Sandbox Code Playgroud)
从此,我得到:
$ git log master
commit 6d5164076bd88d1dab8963d91ec013372e58a444
Author: me
Date: Fri Jul 26 12:22:27 2013 -0500
Add foo
Run Code Online (Sandbox Code Playgroud)
和
$ git log splitme-only
commit 6ce8124a0b5e52d4bba198144d2f3f664d7b19e7
Author: me
Date: Fri Jul 26 12:22:27 2013 -0500
-n
Add foo
Run Code Online (Sandbox Code Playgroud)
如您所见,"splitme-only"分支在提交消息前面加上"-n".这尤其糟糕,因为github默认情况下会折叠除第一行之外的所有内容.因此,您无法在github上轻松浏览这些提交消息.
我已经尝试过使用--annotate可能更具可读性的东西,但这只是向"-n"行添加了一些内容.
行为是相同的subtree push.
有没有办法阻止添加"-n"行?我可以改掉这条线,但当我玩弄它时,它破坏了子树的合并.难道我做错了什么?
在OS X 10.8.4上使用git 1.8.3.4.
创建和使用新分支涉及两个命令:
$ git branch new_branch_name
$ git checkout new_branch_name
Run Code Online (Sandbox Code Playgroud)
我倾向于忘记后者,这可能很烦人.有没有办法使用单个命令执行此操作?也许使用别名或类似的东西?我知道我可以写一个shell函数,但对于这样一个简单而常见的任务来说,这似乎有点多了.
Bazaar在某种程度上使用bzr branch --switch符号来支持这一点.
我通常的git工作流程是
<make changes>
git add FILES
git status
git commit -m "some remarks"
Run Code Online (Sandbox Code Playgroud)
我需要在哪里git status检查我是否添加了正确的文件.
有没有办法告诉git每个人后自动显示状态git add?
有人可以帮我摆脱以下几点:
vijay13@ubuntu:~$ git clone git://anongit.kde.org/plasma-mediacenter
Cloning into 'plasma-mediacenter'...
fatal: read error: Connection reset by peer
Run Code Online (Sandbox Code Playgroud)
和
vijay13@ubuntu:~$ git clone git@git.kde.org:plasma-mediacenter
Cloning into 'plasma-mediacenter'...
Read from socket failed: Connection reset by peer
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)
如何摆脱上述两个问题?
git ×10
eol ×1
git-branch ×1
git-checkout ×1
git-subtree ×1
githooks ×1
github ×1
plasma ×1
svn2git ×1
terminal ×1
ubuntu ×1