javascript

git

java

python

git-remote

reactjs

c++

github

django

c#

operators

git-fetch

typescript

user-experience

chmod

css

content-type

variables

var

loops

git:将文件从另一个分支签出到当前分支(不要将HEAD切换到另一个分支)

我想将另一个分支中存在的文件的不同版本加载到当前分支中。

git help checkout说:

DESCRIPTION
   Updates files in the working tree to match the version in the index or
   the specified tree. If no paths are given, git checkout will also
   update HEAD to set the specified branch as the current branch.

有没有办法签出所有这些文件,但不更新HEAD?

trans by 2020-08-08T16:25:54Z

如何在TeamCity中构建git标签?

我想向TeamCity服务器提供一个git标签来构建它。我将标记(即release_1.1)作为参数传递给作业。 因此,在作业内部,该标签为%tag%,但在Version Control Settings下,我看不到任何使用此参数的方式,因此服务器可以检出此标签。有什么方法可以在设置中使用此参数来检出标签?

trans by 2020-08-03T06:35:50Z

“ git reset --hard hash”和“ git checkout hash”之间有区别吗?

尽管--hardcheckout大多数情况下都有不同的用法,但我看不出两者之间有什么区别。

可能没有人会不厌其烦地添加--hard选项来执行基本checkout可以执行的操作。

也许您会看到历史的方式有所不同?

trans by 2020-07-31T09:38:27Z

存在相同名称的文件时,Git更改分支

我的git仓库中有一个名为xyz的文件。 巧合的是,我还有一个名为xyz的分支。 目前,我在master上,但是我想结帐到xyz分支。 使用的命令很简单

$ git checkout xyz

但这会将文件xyz签出到当前的HEAD。 如何将分支更改为分支xyz

trans by 2020-07-25T18:26:35Z

在git裸存储库中切换当前分支

我实际上想在我正在使用的裸存储库中删除一个分支,但是此任务陷入了死胡同,因为如果没有裸存储库没有的“工作树”,我将无法从主存储库切换。

当我运行git checkout develop时,输出为:

error: Cannot delete the branch 'master' which you are currently on.

因此,我尝试通过运行git checkout develop切换到另一个名为“ develop”的分支,其输出为:

fatal: This operation must be run in a work tree
trans by 2020-06-18T23:15:51Z

部署-Git命令签出任何分支并覆盖本地更改

是否有Git命令(或简短的命令序列)可以安全可靠地执行以下操作?

  • 摆脱任何本地更改。
  • 必要时从原点获取给定分支
  • 结帐给定的分支?

目前,我坚持:

git fetch -p
git stash
git stash drop
git checkout $branch
git pull

但这让我感到困扰,因为我两次被要求输入密码(分别是fetchpull)。 通常,只要密码只需一次,我对任何解决方案都会感到满意。

一些注意事项:

  • 它是应用程序的自制部署脚本的一部分(代码托管在GitHub上)。
  • 分支是否已经从源中获取应该没有什么区别(即,理想情况下,第一次部署新分支应该不需要任何其他步骤)。
  • 该脚本位于可以由多个人访问的远程计算机上,因此不会存储任何凭据,并且必须输入用户名/密码(如果可能,只能输入一次)。
  • 我不在乎任何本地更改; 我一直想要给定分支的原始副本(部署脚本的另一部分产生本地更改)。
  • 我不能每次都克隆或导出一个新的存储库; 需要太多时间。
trans by 2020-02-12T15:03:48Z

Git:检出除上的所有文件

当我执行git status时,会看到如下文件:

modified:  dir/A/file.txt
modified:  dir/B/file.txt
modified:  dir/C/file.txt
modified:  dir/D/file.txt

我想要做的是放弃对dir / C / file.txt以外的所有文件的更改

我想做这样的事情:

git checkout -- dir/!C/file.txt
trans by 2020-01-29T01:47:00Z

git-克隆旧版本的github repo

我有一台Amazon EC2机器。 我想在这台机器上克隆旧版本的github repo。 通常我使用git clone [https://linktomyrepo.git]如何克隆旧版本,例如14天前的更新? 我可以在存储库的提交历史记录中看到所需的确切版本,但是不知道如何将其克隆到EC2计算机上。 我是否需要在每次提交旁边使用一点SHA代码?

trans by 2020-01-27T19:56:31Z

有没有办法在git checkout中使用通配符?

我想做的是检出单个文件或一组文件,它们具有这样的通用名称

git checkout myBranch */myFile.md

diff(不确定'-'部分)

代替

diff

diff
add
checkout

我知道某些git命令(例如diffadd)有一些有限的通配符功能,但对checkout却一无所获。有没有办法?

编辑:我在Linux上使用git 1.7.9.5。 git和shell命令的有效组合也是可以接受的。

trans by 2020-01-20T09:47:08Z

git-如何打印当前分支以外的分支的日志?

我正在进行一些更改。 更改分支是很痛苦的事情,因为某些文件已被进程锁定,因此要更改分支,我必须停止所有有锁的进程,然后stash进行更改,然后再签出另一个分支以查看其日志。

是否可以查看其他分支的日志,而不必将其签出?

trans by 2020-01-13T14:24:59Z

什么是git等同于“ svn update -r”?

我是最近的git convert。 能够使用git-svn在不干扰svn服务器的情况下将我的分支保留在本地非常好。 最新版本的代码中存在一个错误。 我想确定一个工作时间,以便可以使用git bisect。 我找不到正确的命令来退后。 谢谢。

trans by 2019-12-25T13:08:29Z

Azure开发人员-Visual Studio 2015 Git错误消息“由于存在未提交的更改而无法拉/切换”

我在从git diff -R进行拉取时遇到困难。我不断得到:

“由于存在未提交的更改而无法拉出。提交或撤消更改,然后再次拉出。有关详细信息,请参见“输出”窗口。”

这也适用于交换分支。 我收到类似的消息,但这并不总是发生。

我正在使用Visual Studio 2015 Update 1和Visual Studio Team Services Git。 在我的机器上,我有一个本地git diff -R分支和开发分支。 每次我切换到* text=auto,然后进行拉动时,都会收到错误消息。 我已经采取了隐藏和隐藏隐藏(命令行)的方法,有时我使用TortoiseGit进行拉取并起作用。

奇怪的是,即使我尝试使用TortoiseGit还原(在未提交的文件上),也表明它已成功还原(我已经尝试过Visual Studio撤消,没有任何反应)。 试图再次拉,仍然是同样的问题。 未提交的文件将在那里,有时当我执行git diff -R时,它说没有要提交的文件。

请注意:即使在从分支切换到git diff -R之后,也可能会发生这种情况。在这种情况下,无法进行未提交的更改,因为我一开始就无法进行切换。

我对Git还是很陌生,但是我想知道是否有更好的解决方法,因为我想使用一个环境,而不是为每个任务使用不同环境之间的切换。 对我来说,只需执行Visual Studio的所有操作就更容易了。 我已经读过:

VS中的TFS / GIT无法切换到主服务器,因为存在未提交的更改

UPDATE

看来这个问题与行尾有关。

通过执行git diff -R,您可以看到已添加了行尾“ ^ M”,并且这是不同的。 删除gitattributes中的* text=auto(然后检查更改),然后再次放回去,以便gitattributes不会发出需要提交的本身更改,这似乎有所帮助,不会有任何更改。

trans by 2019-11-04T07:18:22Z

git-意外结帐后找回更改?

以下是我的仓库的状态。

[~/rails_apps/jekyll_apps/nepalonrails (design)⚡] ➔ gst
# On branch design
# Changed but not updated:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   _layouts/default.html
#   deleted:    _site/blog/2010/04/07/welcome-to-niraj-blog/index.html
#   deleted:    _site/blog/2010/04/08/the-code-syntax-highlight/index.html
#   deleted:    _site/blog/2010/05/01/showing-demo-to-kalyan/index.html
#   deleted:    _site/config.ru
#   deleted:    _site/index.html
#   deleted:    _site/static/css/style.css
#   deleted:    _site/static/css/syntax.css
#   modified:   static/css/style.css
#
no changes added to commit (use "git add" and/or "git commit -a")

偶然地,我做了git checkout -f,现在所做的更改已经消失了,这是我不应该做的。

[~/rails_apps/jekyll_apps/nepalonrails (design)⚡] ➔ git co -f
[~/rails_apps/jekyll_apps/nepalonrails (design)] ➔ gst
# On branch design
nothing to commit (working directory clean)
[~/rails_apps/jekyll_apps/nepalonrails (design)] ➔ 

我可以找回更改吗?

trans by 2019-11-02T18:25:41Z

github - 如何在git中切换到另一个分支?

这些线中哪一条是正确的?

git checkout 'another_branch'

要么

git checkout origin 'another_branch'

要么

git checkout origin/'another_branch'

这些线之间有什么区别?


trans by 2019-09-03T12:50:40Z

git - 更改为master分支时出错:checkout会覆盖我的本地更改

这个问题与此类似,但更具体。

我有一个有两个分支机构的项目(git statusNo changes to commit)。

我开发git status,并使用No changes to commit分支来修复错误。 因此,如果我正在进行暂存,并且看到错误,我将更改为master分支:

git checkout master

做的事情:

git add fileToAdd
git commit -m "bug fixed"

然后我合并两个分支:

git checkout staging
git merge master
git checkout beta
git merge beta

如果工作树上有其他文件也没关系。

但现在,当我尝试更改为git status分支时,我收到一个错误:

error: Your local changes to the following files would be overwritten by checkout:
src/Pro/ConvocationBundle/Controller/DefaultController.php
Please, commit your changes or stash them before you can switch branches.
Aborting

我以为我应该从暂存区域中删除该文件:

git reset HEAD src/Pro/ConvocationBundle/Controller/DefaultController.php

但是我得到了同样的错误。 如果我做git status我得到No changes to commit

trans by 2019-09-02T04:13:39Z

版本控制 - 使用Git将特定文件重置或还原到特定版本?

我已经对作为一组文件的一部分提交了几次的文件进行了一些更改,但现在想要将其上的更改重置/还原回以前的版本。

我已经完成了git log以及git diff以找到我需要的修订版,但是根本不知道如何将文件恢复到以前的状态。

trans by 2019-08-21T15:53:20Z

git - 如何将HEAD移回以前的位置? (独立头)和撤消提交

在git中,我试图通过合并另一个分支来执行23b6772,然后通过以下方式将HEAD重置为上一个位置:

git reset origin/master

但我需要走出这一步。如何将HEAD移回上一个位置?

我有将其移动到的提交的SHA1 frag(23b6772)。
我怎样才能回到这个提交?

trans by 2019-07-23T00:22:50Z

为什么git-rebase在我所做的只是压缩提交时给我合并冲突?

我们有一个拥有超过400个提交的Git存储库,其中前几个是很多试错。 我们希望通过将许多提交压缩到单个提交来清理这些提交。 当然,git-rebase似乎还有很长的路要走。 我的问题是它最终会出现合并冲突,而这些冲突并不容易解决。 我不明白为什么会有任何冲突,因为我只是压缩提交(不删除或重新排列)。 很可能,这表明我并不完全理解git-rebase是如何做它的南瓜的。

这是我使用的脚本的修改版本:


repo_squash.sh(这是实际运行的脚本):


rm -rf repo_squash
git clone repo repo_squash
cd repo_squash/
GIT_EDITOR=../repo_squash_helper.sh git rebase --strategy theirs -i bd6a09a484b8230d0810e6689cf08a24f26f287a

repo_squash_helper.sh(此脚本仅由repo_squash.sh使用):


if grep -q "pick " $1
then
#  cp $1 ../repo_squash_history.txt
#  emacs -nw $1
  sed -f ../repo_squash_list.txt < $1 > $1.tmp
  mv $1.tmp $1
else
  if grep -q "initial import" $1
  then
    cp ../repo_squash_new_message1.txt $1
  elif grep -q "fixing bad import" $1
  then
    cp ../repo_squash_new_message2.txt $1
  else
    emacs -nw $1
  fi
fi

repo_squash_list.txt :(此文件仅由repo_squash_helper.sh使用)


# Initial import
s/pick \(251a190\)/squash \1/g
# Leaving "Needed subdir" for now
# Fixing bad import
s/pick \(46c41d1\)/squash \1/g
s/pick \(5d7agf2\)/squash \1/g
s/pick \(3da63ed\)/squash \1/g

我将留下&#34;新消息&#34; 满足你的想象力。 最初,我没有&#34; - 策略他们这样做了#34; 选项(即使用默认策略,如果我理解文档正确是递归的,但我不确定使用哪种递归策略),它也没有用。 另外,我应该指出,使用repo_squash_helper.sh中注释掉的代码,我保存了sed脚本工作的原始文件并对其运行了sed脚本,以确保它正在执行我想要它做的事情( 它是)。 再说一遍,我甚至都不知道为什么会发生冲突,因此使用哪种策略似乎并不重要。 任何建议或见解都会有所帮助,但大多数情况下我只想让这种压力起作用。

更新了与Jefromi讨论的额外信息:

在开展我们庞大的&#34;真实&#34;之前 存储库,我在测试存储库上使用了类似的脚本。 这是一个非常简单的存储库,测试工作干净利落。

我失败的消息是:

Finished one cherry-pick.
# Not currently on any branch.
nothing to commit (working directory clean)
Could not apply 66c45e2... Needed subdir

这是第一次壁球提交后的第一个选择。 运行git status会生成一个干净的工作目录。 如果我再做一个git rebase --continue,我会在几次提交之后得到一个非常相似的消息。 如果我再这样做,我会在几十次提交后得到另一个非常相似的消息。 如果我再次这样做,这次它会经历大约一百次提交,并产生这样的信息:

Automatic cherry-pick failed.  After resolving the conflicts,
mark the corrected paths with 'git add <paths>', and
run 'git rebase --continue'
Could not apply f1de3bc... Incremental

如果我然后运行git status,我得到:

# Not currently on any branch.
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
# modified:   repo/file_A.cpp
# modified:   repo/file_B.cpp
#
# Unmerged paths:
#   (use "git reset HEAD <file>..." to unstage)
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
# both modified:      repo/file_X.cpp
#
# Changed but not updated:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted:    repo/file_Z.imp

&#34;都修改了&#34; 听起来很奇怪,因为这只是一个选择的结果。 值得注意的是,如果我查看&#34;冲突&#34;,它归结为单行,其中一个版本以[tab]字符开头,另一个版本有四个空格。 这听起来像我可能是如何设置我的配置文件的问题,但它没有任何类型。 (我确实注意到core.ignorecase设置为true,但显然git-clone自动完成。考虑到原始源是在Windows机器上,我并不完全感到惊讶。)

如果我手动修复file_X.cpp,那么之后不久会发生另一次冲突,这次是在一个版本认为应该存在的文件(CMakeLists.txt)和一个版本认为不应该存在的文件之间。 如果我通过说我确实想要这个文件(我这样做)来解决这个冲突,稍后我会得到另一个冲突(在同一个文件中),现在有一些相当重要的变化。 它仍然只有冲突的25%左右。

我还应该指出,由于这可能非常重要,因此该项目始于svn存储库。 初始历史很可能是从该svn存储库导入的。

更新#2:

在云雀(受Jefromi的评论影响),我决定改变我的repo_squash.sh:

rm -rf repo_squash
git clone repo repo_squash
cd repo_squash/
git rebase --strategy theirs -i bd6a09a484b8230d0810e6689cf08a24f26f287a

然后,我刚才接受了原始条目。 即,&#34; rebase&#34; 不应该改变一件事。 它最终得到了前面描述的相同结果。

更新#3:

或者,如果我省略策略并将最后一个命令替换为:

git rebase -i bd6a09a484b8230d0810e6689cf08a24f26f287a

我不再得到&#34;什么都不承诺&#34; 反叛问题,但我仍然留下其他冲突。

更新玩具存储库,重新创建问题:

test_squash.sh(这是您实际运行的文件):

#========================================================
# Initialize directories
#========================================================
rm -rf test_squash/ test_squash_clone/
mkdir -p test_squash
mkdir -p test_squash_clone
#========================================================

#========================================================
# Create repository with history
#========================================================
cd test_squash/
git init
echo "README">README
git add README
git commit -m"Initial commit: can't easily access for rebasing"
echo "Line 1">test_file.txt
git add test_file.txt
git commit -m"Created single line file"
echo "Line 2">>test_file.txt 
git add test_file.txt 
git commit -m"Meant for it to be two lines"
git checkout -b dev
echo Meaningful code>new_file.txt
git add new_file.txt 
git commit -m"Meaningful commit"
git checkout master
echo Conflicting meaningful code>new_file.txt
git add new_file.txt 
git commit -m"Conflicting meaningful commit"
# This will conflict
git merge dev
# Fixes conflict
echo Merged meaningful code>new_file.txt
git add new_file.txt
git commit -m"Merged dev with master"
cd ..

#========================================================
# Save off a clone of the repository prior to squashing
#========================================================
git clone test_squash test_squash_clone
#========================================================

#========================================================
# Do the squash
#========================================================
cd test_squash
GIT_EDITOR=../test_squash_helper.sh git rebase -i HEAD@{7}
#========================================================

#========================================================
# Show the results
#========================================================
git log
git gc
git reflog
#========================================================

test_squash_helper.sh(由test_sqash.sh使用):

# If the file has the phrase "pick " in it, assume it's the log file
if grep -q "pick " $1
then
  sed -e "s/pick \(.*\) \(Meant for it to be two lines\)/squash \1 \2/g" < $1 > $1.tmp
  mv $1.tmp $1
# Else, assume it's the commit message file
else
# Use our pre-canned message
  echo "Created two line file" > $1
fi

P.S。:是的,当你看到我使用emacs作为后备编辑时,我知道有些人会畏缩不前。

P.P.S。:我们确实知道我们必须在rebase之后吹掉现有存储库中的所有克隆。 (按照&#34;在发布后,你不得对存储库进行重新定位&#34;。)

P.P.P.S:谁能告诉我如何为此增加赏金? 我是否在编辑模式或查看模式下看不到此屏幕上的任何选项。

trans by 2019-07-05T02:49:27Z

是否可以git-checkout一行而不是整个文件?

如果我修改了版本化文件的几行,是否可以通过命令行撤消行的更改?

就像我对整个文件所做的那样:

git checkout /path/to/file.extension

但是做一些事情,比方说

git checkout /path/to/file.extension --line 10

这可能吗?

trans by 2019-06-14T20:55:36Z

git checkout标签,git pull在分支中失败

我克隆了一个git存储库,然后签出了一个标签:

# git checkout 2.4.33 -b my_branch

这没关系,但是当我尝试在我的分支中运行git pull时,git会吐出这个错误:

当前分支没有跟踪信息。 请   指定要合并的分支。 请参阅git-pull(1)   细节

git pull

如果您希望为此分支设置跟踪信息,则可以执行此操作  有:

git pull

我希望git pull只更新主分支并保留我当前的分支(无论如何它都是标签)。 这样的事情可能吗?

我需要这个的原因是我有一个自动脚本,总是git拉存储库,当然因为上面的错误而失败..

trans by 2019-05-30T20:43:18Z

1 2 3 下一页 共3页