相关疑难解决方法(0)

在git中取消删除已删除的文件

通常,要放弃对文件的更改,您将执行以下操作:

git checkout -- <file>
Run Code Online (Sandbox Code Playgroud)

如果我要丢弃的更改是删除文件怎么办?以上行会出错:

error: pathspec '<file>' did not match any file(s) known to git.
Run Code Online (Sandbox Code Playgroud)

什么命令将恢复该单个文件而不撤消其他更改?

奖励点:另外,如果我要丢弃的更改是添加文件怎么办?我想知道如何取消这种变化.

git git-checkout

470
推荐指数
5
解决办法
18万
查看次数

我如何归档git分支?

我的git存储库中有一些旧的分支,不再处于活动开发状态.我想存档分支,以便它们在运行git branch -l -r时默认不显示.我不想删除它们,因为我想保留历史记录.我怎样才能做到这一点?

我知道可以在refs/heads之外创建一个ref.例如,refs/archive/old_branch.这样做会有什么后果吗?

git

280
推荐指数
8
解决办法
6万
查看次数

"git pull"可以自动存储并弹出挂起的更改吗?

我知道如何解决这个问题:

user@host$ git pull
Updating 9386059..6e3ffde
error: Your local changes to the following files would be overwritten by merge:
    foo.bar
Please, commit your changes or stash them before you can merge.
Aborting
Run Code Online (Sandbox Code Playgroud)

但是,是不是有办法让git pullstashpop舞蹈给我吗?

如果此命令具有不同的名称,则可以.

创建shell别名git stash; git pull; git stash pop是一种解决方案,但我寻找更好的解决方案.

git git-stash git-pull

108
推荐指数
4
解决办法
3万
查看次数

'git add --patch'包含新文件?

当我运行时git add -p,有没有办法让git选择新制作的文件作为选择?

因此,如果我创建一个新文件foo.java,然后运行git add -p,git将不允许我选择要添加到索引中的文件内容.

git shell git-add

89
推荐指数
5
解决办法
2万
查看次数

具有多个命令的Git别名的语法

我想创建一个Git别名来执行多个命令,但我无法找到有关如何完成此操作的文档.

  1. 具有多个命令的Git别名的语法是什么?
  2. 这记录在哪里?

来自'man git-config'

   alias.*
Run Code Online (Sandbox Code Playgroud)

git(1)命令包装器的命令别名 - 例如在定义"alias.last = cat-file commit HEAD"之后,调用"git last"等同于"git cat-file commit HEAD".为避免使用脚本时出现混淆和麻烦,将忽略隐藏现有Git命令的别名.参数由空格分隔,支持通常的shell引用和转义.引号对和反斜杠可用于引用它们.

如果别名扩展以感叹号为前缀,则将其视为shell命令.例如,定义"alias.new =!gitk --all --not ORIG_HEAD",调用"git new"等同于运行shell命令"gitk --all --not ORIG_HEAD".请注意,shell命令将从存储库的顶级目录执行,该目录可能不一定是当前目录.通过从原始当前目录运行git rev-parse --show-prefix来设置GIT_PREFIX.见git-rev-parse(1).

git

37
推荐指数
2
解决办法
1万
查看次数

感叹号在git配置别名中的含义是什么?

我只看到一个git config命令如下:

git config --global alias.out \!"git fetch; git cherry origin/HEAD -v"
Run Code Online (Sandbox Code Playgroud)

这是什么意思?它等于这个:

git config --global alias.out '!git fetch; git cherry origin/HEAD -v',
Run Code Online (Sandbox Code Playgroud)

我对感叹号感到困惑,任何帮助将不胜感激.

git

25
推荐指数
3
解决办法
4811
查看次数

Git别名将参数附加到结尾

我正在使用Git Bash v1.8.1,带有一些别名(用于测试):

[alias]
    ekko = !echo $1 && echo $1
    ekko2 = !sh -c 'echo $1 && echo $1'
Run Code Online (Sandbox Code Playgroud)

但是当我运行它们时,我看到:

> git ekko master
master
master master
Run Code Online (Sandbox Code Playgroud)

和:

> git ekko2 master
(blank line) 
(blank line) 
Run Code Online (Sandbox Code Playgroud)

我的预期行为是:

> git ekko master
master
master
Run Code Online (Sandbox Code Playgroud)

我对别名相当新 - 我正在寻找一种方法来确保我的参数被完全消耗,而不是附加到别名的末尾.一些调查表明这种行为在Git v1.7.x附近发生了变化,我还没有确定如何完成这个:

Git Alias - 多个命令和参数

git

8
推荐指数
2
解决办法
661
查看次数

是否可以在 .gitconfig 中编写多行别名?

我知道可以使用&&(and) 语句为同一别名运行多个命令。然而,对于长组合,它会失去可读性。例如:

save = !git status && git add -A && git commit -m \"$1\" && git push --force && git log && :
Run Code Online (Sandbox Code Playgroud)

有没有多行的写法?

{}例如,也许用它包裹它?

git-config git-alias

8
推荐指数
1
解决办法
2823
查看次数

带有变量的 Git 别名无法按预期工作:pathspec 与 git 已知的任何文件都不匹配

我根据需要创建了一个别名来跟踪我的跟踪分支。这[alias]是我的 .gitconfig 部分的当前行:

catchup = !CURRENTBRANCH=$(git symbolic-ref --short HEAD) && echo Currently on $CURRENTBRANCH - switching to $1 && git checkout $1 && git merge origin/$1 && echo Going back to $CURRENTBRANCH && git checkout "$CURRENTBRANCH"
Run Code Online (Sandbox Code Playgroud)

我按如下方式使用它(例如):

git catchup new_design
Run Code Online (Sandbox Code Playgroud)

此代码导致(例如):

Currently on integration
Switched to branch 'new_design'
Your branch is behind 'origin/new_design' by 1 commit, and can be fast-forwarded.
Updating c82f7db..51eea8a
Fast-forward
 themes/theme1/css/styles.less | 17 +++++++++++++++++
 themes/theme1/js/app.js       |  6 +++---
 2 files changed, 20 insertions(+), 3 deletions(-) …
Run Code Online (Sandbox Code Playgroud)

git alias git-bash

5
推荐指数
1
解决办法
1347
查看次数

是否有git命令在获取后显示新的上游提交?

是否有一些快捷方式来指定远程跟踪分支的提取,新提交的间隔?而不是键入也是分支特定的长命令:

git log branchName..origin/branchName
Run Code Online (Sandbox Code Playgroud)

我正在寻找一些git interval hack,它将代表branchName..origin/branchName的间隔,类似于(不工作,相当于git log ..origin/HEAD)

git log ..origin
Run Code Online (Sandbox Code Playgroud)

git shortcut command-line-interface git-log

5
推荐指数
1
解决办法
730
查看次数

在 Git 中创建别名的正确方法是什么?

我正在尝试创建一个别名来初始化存储库,但它不起作用,我不太确定为什么,这是别名:

> git config --global alias.init-setinfo "git init && git config --global user.name \"myName\" && git config --global user.mail \"myMail@gmail.com\""
Run Code Online (Sandbox Code Playgroud)

调用它会返回:

> expansion of alias 'init-setinfo' failed; 'git' is not a git command
Run Code Online (Sandbox Code Playgroud)

git alias cmd

-2
推荐指数
1
解决办法
563
查看次数