相关疑难解决方法(0)

在Git中撤消一个文件的工作副本修改?

在最后一次提交之后,我在工作副本中修改了一堆文件,但我想撤消对其中一个文件的更改,就像将其重置为与最近提交的状态相同.

但是,我只想撤消单独一个文件的工作副本更改,而不是其它任何内容.

我怎么做?

git version-control dvcs file undo

1550
推荐指数
11
解决办法
60万
查看次数

如何将单个文件的版本从一个git分支复制到另一个git分支?

我有两个完全合并的分支.

但是,在完成合并之后,我意识到一个文件已经被合并搞砸了(其他人做了自动格式化,gah),并且更容易在另一个分支中更改为新版本,并且然后重新插入我的一行更改后将其带入我的分支.

那么git中最简单的方法是什么呢?

git branching-and-merging git-branch

887
推荐指数
8
解决办法
26万
查看次数

从另一个分支在Git中创建一个分支

我有两个分支:masterdev

我想从dev分支创建一个"功能分支" .

目前在分支开发,我做:

$ git checkout -b myfeature dev
Run Code Online (Sandbox Code Playgroud)

... (一些工作)

$ git commit -am "blablabla"
$ git push origin myfeature
Run Code Online (Sandbox Code Playgroud)

但是,在对我的树枝进行可视化之后,我得到了:

--**master**
------0-----0-----0-----0-----0
------------------------**dev**----**myfeature**
Run Code Online (Sandbox Code Playgroud)

我的意思是分支似乎合并了,我不明白为什么......

我做错了什么?

请问您如何解释我如何从另一个分支分支并推回到功能分支的远程存储库?

所有这些都在分支模型中,就像这里描述的那样.

git git-workflow git-flow git-branch

850
推荐指数
9
解决办法
99万
查看次数

如何从Git中的特定修订中检索单个文件

我有一个Git存储库,我想看看几个月前一些文件的样子.我在那个日期找到了修改版,而且它是27cf8e84bb88e24ae4b4b3df2b77aab91a3735d8.我需要查看一个文件的外观,并将其保存到文件中.

我设法看到文件使用gitk,但它没有保存选项.我尝试使用命令行工具,我得到的最接近的是:

git-show 27cf8e84bb88e24ae4b4b3df2b77aab91a3735d8 my_file.txt
Run Code Online (Sandbox Code Playgroud)

但是,此命令显示diff而不是文件内容.我知道我以后可以使用类似的东西PAGER=cat并将输出重定向到文件,但我不知道如何获得实际的文件内容.

基本上,我正在寻找类似svn cat的东西.

git single-file

789
推荐指数
9
解决办法
35万
查看次数

在不更改分支的情况下查看不同Git分支中的文件

是否可以在git分支中打开文件而不检查该分支?怎么样?

基本上我希望能够在我的github pages分支中打开一个文件而不必一直切换分支.我不想修改它,只想查看它.

git version-control branch git-branch

577
推荐指数
5
解决办法
12万
查看次数

417
推荐指数
15
解决办法
49万
查看次数

git-checkout新名称下的旧文件修订版

main.cpp在编辑器中打开了文件" ".

我想main.cpp在编辑器中看到之前的修订版" ".

我现在这样做的方式是这样的.

close "main.cpp" in the editor

prompt> mv main.cpp tmp
prompt> git checkout HEAD^ main.cpp
prompt> mv main.cpp old_main.cpp
prompt> mv tmp main.cpp
prompt>

open "main.cpp" and "old_main.cpp" in the editor
Run Code Online (Sandbox Code Playgroud)

可以简化,所以我不必在编辑器中关闭"main.cpp"吗?

我希望的是一个git-checkout可以做到这一点的变体.


更新:我在mac osx 10.5.7上使用git

prompt> git --version
git version 1.6.0.4
prompt> 
Run Code Online (Sandbox Code Playgroud)

UPDATE2:JakubNarębski的回答是:

prompt> git show HEAD^:dir1/dir2/dir3/main.cpp > old_main.cpp
prompt>
Run Code Online (Sandbox Code Playgroud)

更新3:Karmi的答案,针对特定修订:

prompt> git show 4c274dd91dc:higgs/Higgs.xcodeproj/project.pbxproj > old_project.pbxproj
prompt> 
Run Code Online (Sandbox Code Playgroud)

git

250
推荐指数
3
解决办法
5万
查看次数

如何轻松地将本地Git分支推送到具有不同名称的远程?

我一直想知道是否有一种简单的方法来推送和拉出具有不同名称的远程分支的本地分支,而不必始终指定这两个名称.

例如:

$ git clone myrepo.git
$ git checkout -b newb
$ ...
$ git commit -m "Some change"
$ git push origin newb:remote_branch_name
Run Code Online (Sandbox Code Playgroud)

现在如果有人更新remote_branch_name,我可以:

$ git pull
Run Code Online (Sandbox Code Playgroud)

一切都是合并/快进的.但是,如果我在当地的"newb"中进行更改,我不能:

$ git push
Run Code Online (Sandbox Code Playgroud)

相反,我必须:

% git push origin newb:remote_branch_name
Run Code Online (Sandbox Code Playgroud)

看起来有点傻.如果git-pull用于git-config branch.newb.merge确定从何处拉出,为什么不能git-push有类似的配置选项?有没有一个很好的捷径,或者我应该继续漫长的路?

git version-control git-push git-remote

167
推荐指数
5
解决办法
7万
查看次数

git可以撤消未分段文件的签出

我通过git checkout意外地丢弃了我对本地工作树中文件的更改.这些文件目前尚未暂存.是否可以"撤销"此结帐?

git

157
推荐指数
7
解决办法
9万
查看次数

查看分支与融合的差异?

我知道我可以查看HEAD和当前状态之间的区别meld ..但是,如何查看分支之间的差异,例如masterdevelmeld?

目前我执行以下步骤:

  1. 重命名工作副本的文件夹
    例如mv /projectA /projectA_master)
  2. 再次克隆项目
    git clone url
  3. 切换到devel分支
    cd projectA && git -b devel origin/devel
  4. 查看与meld的差异
    meld /projectA_Master projectA

难道没有一种更简单的方法可以在融合中获得相同的结果吗?我只需要它来审查更改,而不是主要用于合并.

git diff branch meld

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