赞
踩
当本地分支和远程分支一致时
git push会把所有本地分支的变更一同推送到远程,如果想只推送一个分支,使用git push origin branch-name
当本地分支比远程分支多,默认git push 只推送本地和远程一致的分支,想要把多出来的本地分支推送到远程时,使用git push origin branch-name 如果推送失败,先用git pull抓取远程的新提交
[root@draft git]# git clone git@github.com:tanyyinyu/git2.git #复制一个远程仓库,只会复制master; 正克隆到 'git2'... remote: Enumerating objects: 3, done. remote: Counting objects: 100% (3/3), done. 接收对象中: 100% (3/3), done. remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 [root@draft git]# cd git2 [root@draft git2]# [root@draft git2]# ls README.md [root@draft git2]# git ls-remote origin #远程分支显示; 71a1ddef5fa0f211373c38991762a0473582b37d HEAD 71a1ddef5fa0f211373c38991762a0473582b37d refs/heads/master [root@draft git2]# git ls-remote origin #远程界面增加了一个分支,再查看远程分支; 71a1ddef5fa0f211373c38991762a0473582b37d HEAD 71a1ddef5fa0f211373c38991762a0473582b37d refs/heads/dev 71a1ddef5fa0f211373c38991762a0473582b37d refs/heads/master [root@draft git2]# git branch * master [root@draft git2]# git branch dev #创建对应的分支; [root@draft git2]# git branch dev * master [root@draft git2]# git checkout dev 切换到分支 'dev' [root@draft git2]# git branch * dev master [root@draft git2]# git pull #与远程dev分支同步; Warning: Permanently added the RSA host key for IP address '52.74.223.119' to the list of known hosts. 来自 github.com:tanyyinyu/git2 * [新分支] dev -> origin/dev There is no tracking information for the current branch. Please specify which branch you want to merge with. See git-pull(1) for details git pull <remote> <branch> If you wish to set tracking information for this branch you can do so with: git branch --set-upstream-to=origin/<branch> dev [root@draft git2]# ls README.md [root@draft git2]# echo "local dev change" >> 1.txt #在dev分支新建一个文件; [root@draft git2]# ls 1.txt README.md [root@draft git2]# git add 1.txt [root@draft git2]# git commit -m "add txt" #更新到仓库; [dev 9afc2fc] add txt 1 file changed, 1 insertion(+) create mode 100644 1.txt [root@draft git2]# git checkout master 切换到分支 'master' [root@draft git2]# echo "local master change" >> 1.txt #在master分支新建一个文件; [root@draft git2]# git add 1.txt [root@draft git2]# git commit -m "add txt" #更新到仓库; [master 87dca1d] add txt 1 file changed, 1 insertion(+) create mode 100644 1.txt [root@draft git2]# git push #推送到远程; warning: push.default 未设置,它的默认值将会在 Git 2.0 由 'matching' 修改为 'simple'。若要不再显示本信息并在其默认值改变后维持当前使用习惯, 进行如下设置: #simple模式,推送本地远程都对应上的分支; git config --global push.default matching 若要不再显示本信息并从现在开始采用新的使用习惯,设置: git config --global push.default simple 参见 'git help config' 并查找 'push.default' 以获取更多信息。 ('simple' 模式由 Git 1.7.11 版本引入。如果您有时要使用老版本的 Git, 为保持兼容,请用 'current' 代替 'simple' 模式) Counting objects: 7, done. Compressing objects: 100% (4/4), done. Writing objects: 100% (6/6), 480 bytes | 0 bytes/s, done. Total 6 (delta 1), reused 0 (delta 0) remote: Resolving deltas: 100% (1/1), done. To git@github.com:tanyyinyu/git2.git 71a1dde..9afc2fc dev -> dev #远程与本地分支对应,所有更新都会更新到远程; 71a1dde..87dca1d master -> master [root@draft git2]# git branch dev2 [root@draft git2]# git checkout dev2 切换到分支 'dev2' [root@draft git2]# cat 1.txt #新建一个分支,目前是在master分支下,新建的分支跟master一样; local master change [root@draft git2]# git checkout dev 切换到分支 'dev' [root@draft git2]# git branch dev3 [root@draft git2]# git checkout dev3 切换到分支 'dev3' [root@draft git2]# cat 1.txt #在dev分支下再新建分支,内容跟dev分支一样; local dev change [root@draft git2]# git push #本地分支比远程多,不会推到远程,远程没有相对应分支; Everything up-to-date [root@draft git2]# git push origin dev2 #通过此命令在远程新建对应分支,并同步内容; Total 0 (delta 0), reused 0 (delta 0) remote: remote: Create a pull request for 'dev2' on GitHub by visiting: remote: https://github.com/tanyyinyu/git2/pull/new/dev2 remote: To git@github.com:tanyyinyu/git2.git * [new branch] dev2 -> dev2 [root@draft git2]# git ls-remote origin #远程增加了分支dev2; 87dca1ddb09fe17b2392b94a463fc442e144dacd HEAD 9afc2fcc9b10438c2188965adb1863596bf4a922 refs/heads/dev 87dca1ddb09fe17b2392b94a463fc442e144dacd refs/heads/dev2 87dca1ddb09fe17b2392b94a463fc442e144dacd refs/heads/master
git config --global alias.ci "commit -m"
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.a add
git config --global alias.ps push
git config --global alias.reset "reset --hard"
git config --global alias.mer "merge"
git config --global alias.ls "ls-remote origin"
别名修改保存在以下文件
[root@draft git2]# cat !$
cat /root/.gitconfig
[user]
email = you@example.com
name = Your Name
[alias]
ci = commit -m
lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
reset = reset --hard
ls = ls-remote origin
br = branch
git服务端创建用于git服务的帐号和登陆设置 [root@second git]# useradd -s /usr/bin/git-shell gitgit #创建帐号,用于git服务,不能登陆系统; [root@second git]# cd /home/gitgit/ #建立客户端的公钥文件; [root@second gitgit]# mkdir .ssh [root@second gitgit]# touch .ssh/authorized_keys [root@second gitgit]# chmod 600 !$ chmod 600 .ssh/authorized_keys [root@second gitgit]# vim !$ vim .ssh/authorized_keys [root@second .ssh]# chown gitgit:gitgit authorized_keys #重要; git服务端建立空的可用于客户端上传的裸库 [root@second projects]# mkdir -p /data/gitroot #git数据目录; [root@second projects]# cd !$ cd /data/gitroot [root@second gitroot]# git init --bare sample.git #创建裸库; 初始化空的 Git 版本库于 /data/gitroot/sample.git/ [root@second gitroot]# chown -R gitgit:gitgit /data/gitroot #重要; git客户端操作 [root@draft .ssh]# ssh gitgit@192.168.87.150 #测试ssh,以下为成功信息; fatal: Interactive git shell is not enabled. hint: ~/git-shell-commands should exist and have read and execute access. Connection to 192.168.87.150 closed. [root@draft .ssh]# git clone gitgit@192.168.87.150:/data/gitroot/sample.git 正克隆到 'sample'... warning: 您似乎克隆了一个空版本库。 [root@draft ~]# cd sample/ [root@draft sample]# echo "test private git serve" >> 1.txt [root@draft sample]# git add 1.txt [root@draft sample]# git commit -m "new file" [master(根提交) 70b767c] new file 1 file changed, 1 insertion(+) create mode 100644 1.txt [root@draft sample]# git push #裸库没有分支内容,需要指定分支; No refs in common and none specified; doing nothing. Perhaps you should specify a branch such as 'master'. fatal: The remote end hung up unexpectedly error: 无法推送一些引用到 'gitgit@192.168.87.150:/data/gitroot/sample.git' [root@draft sample]# git push origin master #指定分支上传到服务器; Counting objects: 6, done. Compressing objects: 100% (2/2), done. Writing objects: 100% (6/6), 457 bytes | 0 bytes/s, done. Total 6 (delta 0), reused 0 (delta 0) To gitgit@192.168.87.150:/data/gitroot/sample.git * [new branch] master -> master
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。