可能重复:
如何仅存储已更改的多个文件中的一个文件
如何保存特定文件,将当前已修改的其他文件保存在我要保存的存储区中?
例如,如果git status给我这个:
younker % gst
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: app/controllers/cart_controller.php
# modified: app/views/cart/welcome.thtml
#
no changes added to commit (use "git add" and/or "git commit -a")
Run Code Online (Sandbox Code Playgroud)
我只想藏匿app/views/cart/welcome.thtml,我该怎么做?有点像(但当然这不起作用):
git stash save welcome_cart app/views/cart/welcome.thtml
Run Code Online (Sandbox Code Playgroud) 我的.gitignore文件似乎被Git忽略了 - 该.gitignore文件可能已损坏吗?Git期望哪种文件格式,语言环境或文化?
我的.gitignore:
# This is a comment
debug.log
nbproject/
Run Code Online (Sandbox Code Playgroud)
输出来自git status:
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# debug.log
# nbproject/
nothing added to commit but untracked files present (use "git add" to track)
Run Code Online (Sandbox Code Playgroud)
我想,debug.log而nbproject/不是出现在未跟踪的文件列表中.
我应该从哪里开始寻找解决方法呢?
我在一个新项目上使用git,该项目有两个并行 - 但目前是实验性的 - 开发分支:
master:导入现有的代码库加上一些我一般都知道的mod exp1:实验分支#1exp2:实验分支#2exp1并exp2代表两种截然不同的架构方法.直到我走得更远,我无法知道哪一个(如果有的话)会起作用.当我在一个分支中取得进展时,我有时会在另一个分支中进行编辑,并且只想合并那些.
将选择性更改从一个开发分支合并到另一个开发分支而将其他所有内容合并的最佳方法是什么?
我考虑过的方法:
git merge --no-commit 然后手动取消大量编辑,我不想在分支之间做出共同点.
手动将公共文件复制到临时目录,然后git checkout移动到另一个分支,然后更多地手动从临时目录复制到工作树中.
以上的变化.暂时放弃exp分支并使用另外两个本地存储库进行实验.这使得手动复制文件更加简单.
所有这三种方法都显得乏味且容易出错.我希望有更好的方法; 类似于过滤器路径参数的东西会git-merge更具选择性.
我克隆了一个Git存储库,它包含大约五个分支.但是,当我这样做时,git branch我只看到其中一个:
$ git branch
* master
Run Code Online (Sandbox Code Playgroud)
我知道我可以git branch -a看到所有分支,但是我如何在本地拉出所有分支,所以当我这样做时git branch,它显示以下内容?
$ git branch
* master
* staging
* etc...
Run Code Online (Sandbox Code Playgroud) 我在Git中创建了一个新分支:
git branch my_branch
Run Code Online (Sandbox Code Playgroud)
推它:
git push origin my_branch
Run Code Online (Sandbox Code Playgroud)
现在说有人在服务器上做了一些更改,我想从中拉出来origin/my_branch.我做:
git pull
Run Code Online (Sandbox Code Playgroud)
但我得到:
You asked me to pull without telling me which branch you
want to merge with, and 'branch.my_branch.merge' in
your configuration file does not tell me, either. Please
specify which branch you want to use on the command line and
try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details.
If you often merge with the same branch, you may want to
use something like …Run Code Online (Sandbox Code Playgroud) 当我这样做时,git diff COMMIT我看到了提交和HEAD之间的变化(据我所知),但我希望看到单个提交所做的更改.
我没有在diff/log上找到任何明显的选项,它会给我输出.
我过去的某个时候删除了文件或某些代码.我可以在内容中进行grep(不在提交消息中)吗?
一个非常糟糕的解决方案是grep日志:
git log -p | grep <pattern>
Run Code Online (Sandbox Code Playgroud)
但是,这不会立即返回提交哈希.我一直玩得git grep无济于事.
我使用以下命令推送到我的远程分支:
git push origin sandbox
Run Code Online (Sandbox Code Playgroud)
如果我说
git push origin
Run Code Online (Sandbox Code Playgroud)
这会推动我的其他分支的变化,还是只更新我当前的分支?我有三个分支:master,production和sandbox.
该git push文件是不是这个很清楚,所以我想澄清这一点为好.
哪些分支和遥控器可以git push完全更新以下命令?
git push
git push origin
Run Code Online (Sandbox Code Playgroud)
origin 上面是一个遥控器.
据我所知,git push [remote] [branch]只会将该分支推送到远程.
我在我的存储库中做了一些工作,发现文件有本地更改.我不再想要它们所以我删除了文件,以为我可以签出一份新的副本.我想做Git相当于
svn up .
Run Code Online (Sandbox Code Playgroud)
使用git pull似乎没有用.一些随机搜索引导我到一个有人推荐做的网站
git checkout HEAD^ src/
Run Code Online (Sandbox Code Playgroud)
(src是包含已删除文件的目录).
现在我发现我有一个超然的头.我不知道那是什么.我怎么撤消?