我想检查运行 git pull 后将对文件进行的更改。我知道我们用来git fetch从远程存储库检索新对象而不更改本地存储库。但是我如何在编辑器中查看这些更改?
第一个示例1branch.<name>.fetch中提到了Git配置:git-fetch
更新远程跟踪分支:
Run Code Online (Sandbox Code Playgroud)$ git fetch origin上面的命令从远程 refs/heads/ 命名空间复制所有分支并将它们存储到本地 refs/remotes/origin/ 命名空间,除非使用branch..fetch 选项指定非默认的 refspec。
git-config但我在s doc中找不到它的文档。曾经branch.<name>.fetch存在过吗?
git-config在的文档中搜索以 开头branch.或结尾的配置.fetch,似乎branch.<name>.fetch是 的拼写错误remote.<name>.fetch。
1此示例是在 2009 年的提交 d504f69中添加的。
我有一个git repo,我的同事在他的电脑上克隆了它.无论出于何种原因,我们因技术问题而丢失了他的存储库.
在我们失去回购之前不久,他把一些工作藏起来了,然后我做了一个git fetch跟随git merge master.
是否有可能获得藏匿的内容?那git fetch命令也会把藏匿物拉过来吗?
我可以查看所有远程分支,git branch -a但我需要隐藏数据.
我们正在运行git version 1.6.3.3的Ubuntu 9.10 Karmic
我在笔记本电脑上有一个git存储库,以及GiHub上的远程存储库(运行'git clone'时创建的直接配置).
我正在使用SSH传输协议.即远程地址是:git@github.com:MyName/MyProg.git
我现在处于端口23被阻塞的网络环境中(据我所知,只有端口80和443打开).我需要获取/合并服务器上可用的最新更改.我有什么选择?如果可能的话,我想避免使用http协议创建一个新的远程分支(这与我已经拥有的远程分支基本相同).
我有一个名为FOO的远程仓库,它有以下两个版本:
commit1 commit2
我有一个目录'bar',其中包含commit2的所有文件,但我缺少.git目录和所有元数据.
有没有办法让我'git clone'只将'.git'元数据从遥控器放入我当前的目录而没有文件?
主要目标是避免浪费时间检出文件,因为我已经拥有它们.
有什么建议 ?提前致谢.
我已经看过这里,但无法弄清楚我想知道的事情:如何git push或git pull弄清楚另一边缺少哪些提交对象?
假设我们有一个包含以下提交的存储库:(字母代表SHA-1 ID,d是refs/heads/master)
a -> b -> c -> d
Run Code Online (Sandbox Code Playgroud)
相比之下,遥控器具有:
a -> e -> f -> g
Run Code Online (Sandbox Code Playgroud)
根据git文档,遥控器会告诉我们它refs/heads/master处于g,但由于我们不知道该提交,这实际上并没有告诉我们什么.怎么能够找出丢失的数据?
在另一个方向,该文件说:
此时,fetch-pack进程会查看它拥有的对象,并通过发送"want"然后发送它想要的SHA-1来响应它所需的对象.它使用"have" 发送它已经拥有的所有对象,然后发送SHA-1.在此列表的末尾,它写入"done"以启动upload-pack进程以开始发送所需数据的packfile:
这解释了遥控器如何确定要发送的数据,但这不会影响具有许多对象的存储库的性能吗?否则,文本中实际意味着什么呢?
显然,根据方向(推动与拉动),数据传输的方式是非常不同的.这个设计选择遇到了什么以及如何遇到挑战,我如何理解文档中的描述?
我创建了一个沙箱git存储库,其中包含一些提交和几个标签,一个是轻量级的,另一个是带注释的:
> mkdir one; cd one; git init
> touch a.txt; git add a.txt; git commit -m"a.txt"
> touch b.txt; git add b.txt; git commit -m"b.txt"
> git tag light
> touch c.txt; git add c.txt; git commit -m"c.txt"
> git tag -a annot -m"annot"
Run Code Online (Sandbox Code Playgroud)
现在,我创建第二个存储库并从第一个存储库获取:
> mkdir two; cd two; git init
> git remote add one <...>/one
> git fetch one master
remote: Counting objects: 9, done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 9 (delta 2), …Run Code Online (Sandbox Code Playgroud) 将我在新分支上的最新工作提交branchname到机器A上的本地git存储库后,我将该工作推送到了我的gitlab远程存储库
$ git push origin branchname
Run Code Online (Sandbox Code Playgroud)
该master分行已经与远程回购同步。所有分支都显示在我的gitlab列表上的远程仓库中。
我后来去了机器B。我首先做了一个
$ git pull origin master
Run Code Online (Sandbox Code Playgroud)
并且master已更新,但是branchname当我键入时git branch,我的新分支没有显示,历史树中也没有新的另一个分支。我去了这篇文章,并按照第一个答案的指导。另一个“ git分支”仍然没有显示我的其他分支。一时兴起,我只是想做
$ git checkout branchname
Run Code Online (Sandbox Code Playgroud)
它在那里,并签出了罚款。git branch然后,一条命令在我的分支列表中显示了master和branchname。我对另一个分支做了同样的事情,然后在git branch命令之后它也出现在分支列表中。
这种操作是否是正常的git行为?我想知道的主要事情是您是从远程回购中提取还是获取以更新必须知道远程分支的先前知识的本地回购,为什么它们在git branch命令执行期间不显示?而且,当我在看完之后看不到它们时,为什么还能检出它们git branch?
这个传奇类似于此一个,但我的树枝,实际上是有,只是没有表现出以下的Git分支的命令,直到我检查出来。
我从远程存储库中获取了一个特定的错误修复。现在我有两个选择:
git checkout FETCH_HEADgit cherry-pick FETCH_HEAD我不确定这两种情况下发生了什么。我已经尝试了第一个版本,在我看来,通过这种方式,我将远程存储库中的更改放入了本地存储库,但我的本地更改似乎丢失了(我在代码中没有看到它们)。但是,第二个选项似乎可以满足我的需要(我在代码中看到了我的更改和来自远程存储库的更改)。
虽然看起来我得到了我需要的东西,但我仍然想更好地了解这两种情况下会发生什么。
我看过这个问题和答案,但我不明白答案,因为我不知道以下短语是什么意思:
是否可以在不下载对象/文件的情况下获取存储库(例如 GitHub)的标签/引用?
我的用例是打包一些历史悠久的软件的最新测试版,因此需要大量克隆。
理想情况下,在确定我希望使用的标签后,我可以:
git clone -b "$tag" --depth=1
Run Code Online (Sandbox Code Playgroud) git ×10
git-fetch ×10
git-config ×2
git-remote ×2
clone ×1
commit ×1
git-branch ×1
git-pull ×1
git-push ×1
git-stash ×1
github ×1
linux ×1
tags ×1