Ron*_*niv 4154 git repository git-push git-remote git-branch
我希望能够做到以下几点:
基于其他(远程或本地)分支(通过git branch
或git checkout -b
)创建本地分支
将本地分支推送到远程存储库(发布),但使其可跟踪,git pull
并git push
立即工作.
我怎么做?
我--set-upstream
在Git 1.7中知道,但这是一个创作后的动作.我想找到一种方法,在将分支推送到远程存储库时进行类似的更改.
小智 6413
在Git 1.7.0及更高版本中,您可以签出一个新分支:
git checkout -b <branch>
Run Code Online (Sandbox Code Playgroud)
编辑文件,添加和提交.然后使用-u
(short for --set-upstream
)选项推送:
git push -u origin <branch>
Run Code Online (Sandbox Code Playgroud)
Git将在推送期间设置跟踪信息.
Eri*_*ulz 481
如果您不与他人共享您的仓库,这对于将所有分支推送到远程并--set-upstream
为您正确跟踪非常有用:
git push --all -u
Run Code Online (Sandbox Code Playgroud)
(不完全是OP所要求的,但这种单线很受欢迎)
如果你与其他人分享你的回购,这不是一个很好的形式,因为你会用你所有狡猾的实验分支堵塞回购.
Loh*_*run 150
在介绍之前git push -u
,没有git push
选择来获得你想要的东西.您必须添加新的配置语句.
如果您使用以下方法创建新分支:
$ git checkout -b branchB
$ git push origin branchB:branchB
Run Code Online (Sandbox Code Playgroud)
您可以使用该git config
命令避免直接编辑该.git/config
文件.
$ git config branch.branchB.remote origin
$ git config branch.branchB.merge refs/heads/branchB
Run Code Online (Sandbox Code Playgroud)
或者,您可以手动编辑.git/config
文件以获得此分支的跟踪信息.
[branch "branchB"]
remote = origin
merge = refs/heads/branchB
Run Code Online (Sandbox Code Playgroud)
piy*_*vra 125
简单地说,创建一个新的本地分支,执行:
git branch <branch-name>
Run Code Online (Sandbox Code Playgroud)
要将其推送到远程存储库,请执行以下操作:
git push -u origin <branch-name>
Run Code Online (Sandbox Code Playgroud)
bg1*_*7aw 87
这里给出的解决方案略有不同:
基于其他(远程或本地)分支创建本地分支:
git checkout -b branchname
Run Code Online (Sandbox Code Playgroud)将本地分支推送到远程存储库(发布),但使其可跟踪,git pull
并git push
立即工作
git push -u origin HEAD
Run Code Online (Sandbox Code Playgroud)
使用HEAD
是一种"将当前分支推送到远程同名的便捷方式".来源:https://git-scm.com/docs/git-push
在Git术语中,HEAD(大写)是对当前分支(树)顶部的引用.
该-u
选项只是简称--set-setupstream
.这将为当前分支添加上游跟踪参考.您可以通过查看.git/config文件来验证这一点:
Ash*_*war 61
git push --set-upstream origin <your branch name>
或者
git push -u origin <your branch name>
Ard*_*rda 45
我只是这样做
git push -u origin localBranch:remoteBranchToBeCreated
Run Code Online (Sandbox Code Playgroud)
在已经克隆的项目上.
Git remoteBranchToBeCreated
在我提交的提交下创建了一个新的分支localBranch
.
Hit*_*ahu 36
拉取所有远程分支
git pull --all
Run Code Online (Sandbox Code Playgroud)
立即列出所有分支机构
git branch -a
Run Code Online (Sandbox Code Playgroud)
结帐或创建分支(替换<feature branch>
为您的分支名称):
git checkout -b <feature branch>
Run Code Online (Sandbox Code Playgroud)
显示当前分支。前面必须显示 *
git branch
Run Code Online (Sandbox Code Playgroud)
添加您的本地更改(此处是故意的)
git add .
Run Code Online (Sandbox Code Playgroud)
现在提交您的更改:
git commit -m "Refactored/ Added Feature XYZ"
Run Code Online (Sandbox Code Playgroud)
重要提示:从 master 获取更新:
git pull origin feature-branch
Run Code Online (Sandbox Code Playgroud)
现在推送您的本地更改:
git push origin feature-branch
Run Code Online (Sandbox Code Playgroud)
VP.*_*VP. 30
我想你已经克隆了一个项目,如:
git clone http://github.com/myproject.git
Run Code Online (Sandbox Code Playgroud)
然后在本地副本中,创建一个新分支并将其检出:
git checkout -b <newbranch>
Run Code Online (Sandbox Code Playgroud)假设您在服务器上创建了一个"git bare --init"并创建了myapp.git,您应该:
git remote add origin ssh://example.com/var/git/myapp.git
git push origin master
Run Code Online (Sandbox Code Playgroud)之后,用户应该能够
git clone http://example.com/var/git/myapp.git
Run Code Online (Sandbox Code Playgroud)注意:我假设您已启动并运行服务器.如果不是,它将无法工作.一个良好的操作方法是在这里.
添加远程分支:
git push origin master:new_feature_name
Run Code Online (Sandbox Code Playgroud)
检查一切是否正常(获取原点并列出远程分支):
git fetch origin
git branch -r
Run Code Online (Sandbox Code Playgroud)
创建本地分支并跟踪远程分支:
git checkout -tb new_feature_name origin/new_feature_name
Run Code Online (Sandbox Code Playgroud)
更新一切:
git pull
Run Code Online (Sandbox Code Playgroud)
Tob*_*ler 23
编辑过时,只需使用git push -u origin $BRANCHNAME
使用git publish-branch
从威廉的杂项的Git工具(gitorious回购和克隆).
好的,没有Ruby,所以 - 忽略了保护措施!- 获取脚本的最后三行并创建一个bash脚本git-publish-branch
:
#!/bin/bash
REMOTE=$1 # Rewrite this to make it optional...
BRANCH=$2
# Uncomment the following line to create BRANCH locally first
#git checkout -b ${BRANCH}
git push ${ORIGIN} ${BRANCH}:refs/heads/${BRANCH} &&
git config branch.${BRANCH}.remote ${REMOTE} &&
git config branch.${BRANCH}.merge refs/heads/${BRANCH}
Run Code Online (Sandbox Code Playgroud)
然后运行git-publish-branch REMOTENAME BRANCHNAME
,其中REMOTENAME通常是原点(您可以修改脚本以将原点作为默认值等等)
cpt*_*ack 23
通过从现有分支分支来创建新分支
git checkout -b <new_branch>
Run Code Online (Sandbox Code Playgroud)
然后使用将此新分支推送到存储库
git push -u origin <new_branch>
Run Code Online (Sandbox Code Playgroud)
这会创建所有本地提交并将其推送到新创建的远程分支 origin/<new_branch>
小智 13
对于1.7之前的GitLab版本,请使用:
git checkout -b name_branch
Run Code Online (Sandbox Code Playgroud)
(name_branch,例如:master
)
要将其推送到远程存储库,请执行以下操作:
git push -u origin name_new_branch
Run Code Online (Sandbox Code Playgroud)
(name_new_branch,例如:feature
)
Thu*_*inh 10
我创建了一个别名,这样每当我创建一个新分支时,它都会相应地推送和跟踪远程分支.我将以下块放入.bash_profile
文件中:
# Create a new branch, push to origin and track that remote branch
publishBranch() {
git checkout -b $1
git push -u origin $1
}
alias gcb=publishBranch
Run Code Online (Sandbox Code Playgroud)
使用方法:只需输入gcb thuy/do-sth-kool
与thuy/do-sth-kool
我的新分支的名字.
您可以在 2 个陡坡中完成:
1.使用checkout
for 创建本地分支:
git checkout -b yourBranchName
Run Code Online (Sandbox Code Playgroud)
根据需要与您的分支机构合作。
2.使用push
命令自动创建分支并将代码发送到远程存储库:
git push -u origin yourBanchName
Run Code Online (Sandbox Code Playgroud)
有多种方法可以做到这一点,但我认为这种方法非常简单。
我认为这是最简单的别名,添加到您的~/.gitconfig
[alias]
publish-branch = !git push -u origin $(git rev-parse --abbrev-ref HEAD)
Run Code Online (Sandbox Code Playgroud)
你只要跑
git publish-branch
Run Code Online (Sandbox Code Playgroud)
并且...它发布了分支
略微根据这里的答案,我将这个过程包装为一个简单的Bash脚本,当然也可以用作Git别名。
对我来说重要的补充是,这促使我在提交之前运行单元测试,并且默认情况下传入当前分支名称。
$ git_push_new_branch.sh
Have you run your unit tests yet? If so, pass OK or a branch name, and try again
usage: git_push_new_branch {OK|BRANCH_NAME}
e.g.
git_push_new_branch -> Displays prompt reminding you to run unit tests
git_push_new_branch OK -> Pushes the current branch as a new branch to the origin
git_push_new_branch MYBRANCH -> Pushes branch MYBRANCH as a new branch to the origin
Run Code Online (Sandbox Code Playgroud)
function show_help()
{
IT=$(cat <<EOF
Have you run your unit tests yet? If so, pass OK or a branch name, and try again
usage: git_push_new_branch {OK|BRANCH_NAME}
e.g.
git_push_new_branch.sh -> Displays prompt reminding you to run unit tests
git_push_new_branch.sh OK -> Pushes the current branch as a new branch to the origin
git_push_new_branch.sh MYBRANCH -> Pushes branch MYBRANCH as a new branch to the origin
)
echo "$IT"
exit
}
if [ -z "$1" ]
then
show_help
fi
CURR_BRANCH=$(git rev-parse --abbrev-ref HEAD)
if [ "$1" == "OK" ]
then
BRANCH=$CURR_BRANCH
else
BRANCH=${1:-$CURR_BRANCH}
fi
git push -u origin $BRANCH
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3227941 次 |
最近记录: |