新手Git问题:我在bitbucket上设置了一个repo.我git获取了别人的变化,并希望将它们与我自己合并.但是,当我尝试git merge(或git merge origin/master)时,我收到消息"错误:您对以下文件的本地更改将被合并覆盖:",然后是我已更改的文件列表.让Git合并这些变化正是我想要做的.
这主要是好奇心的本质,因为我正在努力熟悉Git.我查看了'git fetch'的文档,但我没有看到下面的明显解释.在此先感谢,如果这是显而易见的,请道歉.
1)从中央存储库,比如说GitHub,我克隆一个名为website两台机器上的存储库,HostA和HostB.
2)on HostA,我对文件进行了更改,比如说README.txt,然后提交它.
在这一点上HostA,分支的提交master和
origin/master预期的不同,因为我尚未推动
git show master
git show origin/master
Run Code Online (Sandbox Code Playgroud)
报告不同的哈希值(因为master有变化而origin/master没有)
3)一旦我推,他们就是在那之后.
4)现在,HostB如果我做了以下事情:
git fetch
git merge FETCH_HEAD
Run Code Online (Sandbox Code Playgroud)
之后,在HostB上master并origin/master在查询时报告相同的哈希值git show
但
如果相反我做了,在HostB:
git fetch origin master
git merge FETCH_HEAD
Run Code Online (Sandbox Code Playgroud)
在那一点上,哈希仍然不同.
git show origin
git show origin/master
Run Code Online (Sandbox Code Playgroud)
报告不同的哈希值
跟踪分支origin/master在我做普通之前不会更新git fetch
为什么是这样?
我对git以及pull,fetch和merge之间的区别有了透彻的了解.我有一个遥控器,我偶尔跟踪,获取和合并,让它说它的起源/主人.我想要做的是扭转'git fetch'的行为.这听起来很傻,但我想取消更新我的远程跟踪分支所指向的位置,更新状态,即最后一次获取之前的状态.这可能吗?
例如,假设这是我的工作流程......
git show origin/master # shows commit abc123
git fetch # yay i got something!
git show origin/master # shows commit def456
Run Code Online (Sandbox Code Playgroud)
神秘的命令在这里,所以......
git show origin/master # shows commit abc123
Run Code Online (Sandbox Code Playgroud)
这是一种希望有一个奇怪的事情,但我有一个手表混帐回购协议来检测时,有东西取一个crontab,我有问题的调试执行基于此行为的一些动作脚本.而不是等待origin/master更改,我想自己更改它,以便我可以调试我的脚本!
我正在开发一个项目,每个人都将其SVN用作集中式服务器,每个人都会推动他们在该服务器上所做的更改.我想在Git本地使用,我很新git svn.我做了一个git svn clone存储库,git svn clone -r HEAD https://svn.repo/app/branch我希望通过git进行更新.
我需要一个'git pull like'命令,但要从SVN服务器repo的特定版本中提取.还有一个'fetch like'命令从SVN服务器repo的特定修订版中获取?
我的.svn克隆项目git remote中没有任何文件夹,也没有给我任何东西.但是我做了一个git config -l,我得到了SVN服务器的URL,所以不知怎的,我与SVN服务器链接.我不知道如何取或拉.
谢谢!
有没有办法从回购中的特定标签中提取/获取代码.
我知道在克隆之后,我可以签出标签,但是可以在拉动期间指定标签吗?
在ClearCase中我可以重新定义或提供特定的代码基线,有没有一种方法可以使用git标签,类似于将代码拉/推到指定的标签?
以下git命令有什么区别?
git fetch origin
Run Code Online (Sandbox Code Playgroud)
和
git fetch --all
Run Code Online (Sandbox Code Playgroud)
从命令行运行它们看起来像是做同样的事情.
此命令获取所有标记:
git fetch origin --tags
Run Code Online (Sandbox Code Playgroud)
此命令获取特定标记:
git fetch origin refs/tags/1.0.0
Run Code Online (Sandbox Code Playgroud)
但这不让我这样做:
git checkout tags/2.3.18
Run Code Online (Sandbox Code Playgroud)
如何获取单个标签然后执行结帐?
这可能是非常基本的,但我还无法弄清楚:
我有一个 PHP 项目在两台服务器上运行,我们将其称为Live两台Staging
服务器显然都在运行相同的项目,但有一些更改。
当这个项目到达我手中时,Github 上还没有,所以这就是我现在首先要做的事情。
我设法在 Github 上创建一个新的远程存储库并将Live系统连接到它。
(通过将 Github 存储库添加为 'origin' Live)
git remote add origin https://github.com/path-to-repo/repo.git
因此,Live System 目前位于master分支上并且是最新的,origin/master有 4 次提交的历史记录。
Staging现在我也尝试连接 Github Repo
所以我做了一个
git init
git remote add origin https://github.com/path-to-repo/repo.git
git remote -v
origin https://github.com/path-to-repo/repo.git (fetch)
origin https://github.com/path-to-repo/repo.git (push)
git fetch
Run Code Online (Sandbox Code Playgroud)
现在,当我执行 git status 时,我看到存储库仍处于初始提交状态,并且所有文件和文件夹都列为未跟踪:
Run Code Online (Sandbox Code Playgroud)root@staging-host:/var/www/html# git status On branch master Initial commit Untracked files: (use "git add <file>..." to include in what …
故事:
我一直在台式机和笔记本电脑上开发一款RoR应用程序.提交对另一个进行的更改非常方便,将它们推送到github并在其他方面进行获取和合并.
起点是这样的:我在桌面上提交了最新的更改,将它们推送到github,然后将它们合并到我的笔记本电脑中.然后,我在笔记本电脑上做了一些提交并推送到github.进行更改,合并到我的桌面(使用--no-ff).然后,发生了所有恶作剧的可能来源:我恢复了桌面以提交最新的获取和合并之前的位置.做了一些开发工作,承诺,推送到github.在笔记本电脑中,我也做了恢复工作,虽然我将它恢复为一个提交,它在github的最新提取之间,再次提取并合并它们.恢复台式机和笔记本电脑之后出现了一些错误消息,但事情仍然相当顺利,我一直在两台机器上工作.
到现在.我试图从我的笔记本电脑推送到github,它提供了以下输出:
Counting objects: 106, done.
error: unable to find 5a2a4ac...
error: unable to find bc36923...
error: unable to find ecb0d86...
error: unable to find f76d194...
error: unable to find f899df7...
Compressing objects: 100% (64/64), done.
fatal: failed to read object 5a2a4ac... : Invalid argument
error: failed to push some refs to 'git@github:username/repo.git'
Run Code Online (Sandbox Code Playgroud)
那么,问题是,究竟发生了什么?
编辑:似乎因为暂停我的笔记本电脑并将其从一个地方移动到另一个地方以某种方式搞砸了硬盘驱动器.fsck输出不可用,因为我们解决了问题并继续工作,但是IIRC的一些分支和提交都悬空,包括git无法读取的提交. - Teemu
我刚添加remote A了我的另外repo B,然后运行git fetch A
如何撤消提取?如果我只是删除remote A:git remote remove A1它会撤消提取吗?
更新:
repo B
repo A
以上是我运行的命令,结果我将所有分支都提取到了我repo B但是我只需要一个特定的分支remote A,我需要它进入特定文件夹repo B但是这是另一个故事两个不同的git存储库之间的合并代码