# 推到远端并自动建立远端分支连接
git push -u origin <本地分支名>:<远程分支名>
git pull <远程主机名> <远程分支名>:<本地分支名>
git push <远程主机名> <本地分支名>:<远程主机分支名>
删除远端分支
git push <远程主机名> --delete <远程主机分支名>
与远端分支建立连接
git branch --set-upstream-to=origin/<远端分支名> <本地分支名>
git branch -u origin/<远端分支名>
取消与远端分支的关联
git branch --unset-upstream
查看本地分支与远端分支的关联关系
git branch -vv
清理远程已删除本地还存在的分支
git fetch --prune origin
或者 git fetch -p
或者 git pull -p
手动建立追踪关系
git branch --set-upstream master origin/next
避免每次输入账户与密码
git config --global credential.helper store
变基提交(提交历史是一条直线,没有分叉。注意:不要对在你的仓库外有副本的分支执行变基)
语法:git rebase [basebranch] [topicbranch]
git checkout dev
git rebase master
git checkout master
git merge dev
等价于
git rebase master dev
git checkout master
git merge dev
合并提交(有分叉)
git checkout master
git merge dev
设置常用命令全局别名:
$ git config --global alias.co checkout
$ git config --global alias.br branch
$ git config --global alias.ci commit
$ git config --global alias.st status
例:
git pull origin master:myMaster //把origin远端master分支拉到本地的myMaster分支,本地没有myMaster分支则自动创建
git push origin myMaster:master //把本地的myMaster分支推到origin元旦master分支,远端没有则自动创建
git init //初始化git仓库,加了个.git的隐藏文件夹,里面有config配置文件,mac上:common+shift+. 显示隐藏文件与文件夹
git config [--global] user.name yourname //设置名字,在提交时显示
git config [--global] user.email youremail //设置邮箱地址,在提交时显示
git remote add remotename url //添加一个远端仓库
git push <远程主机名> <本地分支名>:<远程主机分支名>
git stash [save 'name'] //存储一个stash,并命名为name
git stash list //展示stash list
git stash pop //取出最近的一次stash,并删除相应的stash
git stash apply stash@{1} //提取出某个stash。不会存储未追踪文件,可以先git add .
git stash drop stash@{1} //删除某个stash
git stash clear //删除全部stash
git stash show [stash@{1}] //展示该stash变动
git branch
git branch id //根据版本号建立一个对应的分支,比如根据游离状态分支的版本号建立一个分支
git branch -r //查看远端分支,-a显示本地和远端分支
git branch -d dev //删除dev分支,-D强删
git branch -r -d origin/dev //删除远端分支
git push -u origin master //推到远端origin服务器的master分支
git push //推到建立联系的分支
git pull //将远端代码拉到本地
git add . //未追踪文件追踪,将所有改动文件提交到暂存区
git commit -m 'name' //提交并命名为name
git checkout dev //1.本地有dev分支:切换到该分支 2.远端有dev分支:将远端分支检出到本地,并建立关联 3.error
rebase:
执行完git pull --rebase之后如果有合并冲突,使用以下三种方式处理这些冲突:
git rebase --abort 会放弃合并,回到rebase操作之前的状态,之前的提交的不会丢弃;
git rebase --skip 则会将引起冲突的commits丢弃掉(慎用!!);
git rebase --continue 合并冲突,结合"git add 文件"命令一起用与修复冲突,提示开发者,一步一步地有没有解决冲突。(fix conflicts and then run "git rebase --continue")
对上述冲突的处理
1、使用 $git rebase --abort
执行之后,本地内容会回到提交之间的状态,也就是回到以前提交但没有pull是的状态,简单来说就是撤销rebase。
2、使用 $git rebase --skip
git rebase --skip 引起冲突的commits会被丢弃,对于本文应用的例子来说开发者A对c.sh文件的commit无效,开发者A自己修改的部分全部无效,因此,在使用skip时请慎重。
执行:$ vim c.sh
查看本地c.sh文件提交内容,展示如下图所示,执行语句之后开发者A的修改无效。
3、使用 $git rebase --continue
执行完$git pull --rebase 之后,本地如果产生冲突,手动解决冲突之后,用"git add"命令去更新这些内容的索引(index),然后只要执行:
$ git rebase --continue 就可以线性的连接本地分支与远程分支,无误之后就回退出,回到主分支上。
注意:一般情况下,修改后检查没问题,使用rebase continue来合并冲突。