我一直想知道是否有一种简单的方法来推送和拉出具有不同名称的远程分支的本地分支,而不必始终指定这两个名称。
例如:
$ git clone myrepo.git
$ git checkout -b newb
$ ...
$ git commit -m "Some change"
$ git push origin newb:remote_branch_name
现在如果有人更新了remote_branch_name,我可以:
$ git pull
一切都是合并/快进的。但是,如果我在本地" newb"中进行更改,我就无法:
$ git push
相反,我必须:
% git push origin newb:remote_branch_name
似乎有点傻。如果git-pull
使用git-config branch.newb.merge
来确定从哪里开始,为什么git-push
无法使用类似的配置选项?有没有一个很好的捷径,或者我应该继续走很长的路?
答案 0 :(得分:153)
当您执行初始推送时添加the -u parameter:
git push -u origin my_branch:remote_branch
后续推送将转到您想要的位置。
编辑:
根据评论,这只会设置拉力。
git branch --set-upstream
应该这样做。
答案 1 :(得分:85)
不确定。只需将push.default
设置为upstream
即可将分支推送到其上游(这与pull
将从branch.newb.merge
定义的相同),而不是将分支推送到名称匹配(这是push.default
的默认设置,matching
)。
git config push.default upstream
请注意,在Git 1.7.4.2之前,这曾经被称为tracking
而不是upstream
,因此如果您使用的是旧版本的Git,请改用tracking
。在Git 1.6.4中添加了push.default
选项,因此,如果您使用的是旧版本,则根本不会有此选项,并且需要明确指定要推送的分支。
答案 2 :(得分:13)
Adam命令现已弃用。您可以使用:
git branch --set-upstream-to origin/my_remote_branch my_local_branch
将my_local_branch
的上游分支设置为origin/my_remote_branch
。
答案 3 :(得分:0)
这是对我有用的过程。
git push origin master
现在你的新回购将是'原产地'而原始回购是'上游'。通过运行git remote -v确认它。 (附注:上游用于从原始仓库获取 - 以使您的本地副本与您想要贡献的项目保持同步 - 并且原点用于拉动和推送,因为您可以为自己的仓库做出贡献)。
git rebase upstream/branch-name
git push origin master
现在,您的新远程回购主服务器(在Github上)将与原始主服务器同步,但它不会拥有任何功能分支。
git remote rm upstream
git remote add upstream new-repo-url
Rebase是一个聪明的合并。然后再次推送到主设备,您将在新仓库中看到所选功能分支为主设备。
可选:
$Threshold = 200 * 1024 * 1024; # Bytes (209,715,200 bytes = 0.195GB)
$ServiceName = my service name;
Get-WmiObject -ComputerName "localhost" -Class Win32_PerfFormattedData_PerfProc_Process | where { $_.Name -like "httpd*" } | foreach {
$procobj = $_;
if($procobj.workingset -gt $Threshold)
{
stop-Service $ServiceName;
start-Service $ServiceName;
$stamp = Get-Date
echo $($stamp + " Started service: " + $ServiceName);
#sleep 5; //Do I need this and if so, where should it be placed?
}
}
答案 4 :(得分:0)
我已经有一段时间在遇到相同的问题了。我终于有了一组语句,因此不必每次都做...
<dependencies>
...
<dependency>
<groupId>com.github.scribejava</groupId>
<artifactId>scribejava-apis</artifactId>
<version>6.9.0</version>
</dependency>
</dependencies>
。我遵循了这些:
git push origin local:remote
在将上游设置为具有不同名称的远程分支(第一行),然后将该上游设置为默认名称(第二行)之后,第三行现在将遵循这些规则并推送到设置的上游。