我知道如何解决这个问题:
user@host$ git pull
Updating 9386059..6e3ffde
error: Your local changes to the following files would be overwritten by merge:
foo.bar
Please, commit your changes or stash them before you can merge.
Aborting
Run Code Online (Sandbox Code Playgroud)
但是,是不是有办法让git pull做stash和pop舞蹈给我吗?
如果此命令具有不同的名称,则可以.
创建shell别名git stash; git pull; git stash pop是一种解决方案,但我寻找更好的解决方案.
我刚看到一些奇怪的事情git pull,我不明白.
星期五,我在一家当地分公司工作.我们称之为mybranch.在离开办公室之前,我把它推到原点(这是我的GitHub库)git push origin mybranch.
昨天在家里,我把pullmybranch写到我的笔记本电脑上,做了一些编码,然后将我的更改推回到github(原点).
现在我再次上班,并试图将改变从昨天拉到我的工作机器上(周末我的工作地点的本地回购没有改变):
git pull origin mybranch
Run Code Online (Sandbox Code Playgroud)
这导致了快速合并,这很好.然后我做了一个git status,它说:
# On branch mybranch
# Your branch is ahead of 'origin/mybranch' by 6 commits.
#
nothing to commit (working directory clean)
Run Code Online (Sandbox Code Playgroud)
咦?如果我周末没有触摸它,只是从原点拉出来,它怎么能提前6次?所以我跑了一个git diff origin/mybranch,差异就是我刚刚从远程拉出来的6个变化.
我只能通过运行来"修复"这个git fetch origin:
From git@github.com:me/project
af8be00..88b0738 mybranch -> origin/mybranch
Run Code Online (Sandbox Code Playgroud)
显然,我的本地仓库缺少一些参考对象,但这怎么可能呢?我的意思是,一个pull已经进行了一次获取,除了那个分支之外我没有处理任何事情,所以a git fetch origin和git fetch origin mybranch应该有相同的结果吗?
我应该总是用git pull origin而不是git pull origin branchname …
如何使用Git GUI工具进行拉动?似乎在任何地方都没有拉动命令.
是否有使用Git GUI的等效菜单选项?
任何帮助将不胜感激.
我有一个工作副本存储库,我一直在工作没有问题; 此存储库的原点位于GitHub上.
我想让我的工作副本存储库可用作我的构建机器(另一个物理主机上的VM)的原点,因此我可以在构建机器上构建和测试我对工作副本的提交,而无需通过首先是GitHub.我已经有了GitHub存储库的构建,但我希望这是一个"黄金"存储库/构建; 即,如果有东西进入那里,应该保证对GitHub的构建通过.
我查看了有关Git URL的文档,并看到可以选择在表单中使用URL git://host.xz[:port]/path/to/repo.git/(例如,参见git-clone文档).我希望以最简单的方式执行此操作,只需最少的配置:我不希望设置SSH守护程序或Web服务器只是为了将其发布到我的构建计算机.
我正在运行Windows 7 x64 RC,我安装了MSysGit和TortoiseGit,并且我在防火墙上打开了Git的默认端口(9814).请假设工作副本仓库位于D:\Visual Studio Projects\MyGitRepo,主机名为devbox.构建计算机是Windows Server 2008 x64.我一直在构建机器上尝试以下命令,并带有相关的输出:
D:\Integration>git clone "git://devbox/D:\Visual Studio Projects\MyGitRepo"
Initialized empty Git repository in D:/Integration/MyGitRepo/.git/
devbox[0: 192.168.0.2]: errno=No error
fatal: unable to connect a socket (No error)
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
如何查看最新git pull执行的日期和时间?当出现问题时,我经常需要知道服务器上的代码何时更改.
我有工作目录(#1),其中包含供应商目录(#2).有一个依赖项,我想手动拉动没有composer(php版本的npm/gem).我在#1工作,没有保存/提交更改,当我决定要更新#2中的库时.我导航到vendor/myname,并做了git pull repository.
不幸的是,它开始拉动并合并到#1,而不是在vendor文件夹中创建新目录.
我现在有:
我想"撤消"最后一个git pull而不会丢失我对文件夹#1所做的任何更改.我怎样才能做到这一点?
假设origin/master已经提交A--B--C并且我local/master已经提交了A--B--D.
如果我使用会发生什么git pull --rebase?
如果我使用会发生什么git pull --ff-only?
生成的提交树有什么不同吗?
例如,我已经在两台计算机上克隆了原始存储库.然后,我继续进行一些更改并提交到计算机A的本地存储库.我现在如何将这些更改提取到计算机B?计算机A和B都连接到网络.
我正在寻找的将是相当于手动创建补丁并将其发送给我的人,我可以将其应用于我的工作副本/本地回购.
我有一个关于Git的新手问题:
我需要在分支的历史中来回移动.这意味着,我需要将所有文件放到一些旧版本中的状态,然后我需要回到存储库中的最新状态.我不需要提交.
使用SVN,它会
svn up -r800
Run Code Online (Sandbox Code Playgroud)
得到修订版800,和
svn up
Run Code Online (Sandbox Code Playgroud)
与存储库保持同步.
我知道我想要回复的提交的哈希,所以我试过了
git reset <hash>
Run Code Online (Sandbox Code Playgroud)
这似乎让我在那里.但后来我试过了
git pull
Run Code Online (Sandbox Code Playgroud)
但是抱怨冲突.
那么,通过分支历史的正确方法是什么?
我正在考虑SVN,所以不要指向我一些很好的教程.请注意,我已经检查了http://git.or.cz/course/svn.html和http://www.youtube.com/watch?v=8dhZ9BXQgc4.
谢谢,Ondra.
git-pull ×10
git ×9
git-merge ×2
pull ×2
git-fetch ×1
git-gui ×1
git-rebase ×1
git-stash ×1
reset ×1
working-copy ×1