开分支 -> 各自开发不一样的模块 -> 合并代码的时候,先提交本身的分支而后rebase
本身的分支到master
最新的部分
rebase
谁就是把谁看成本身的基点,而后把本身的提交跟在后面,rebase
完后再切换到maser
, master
再rebase
本身的开发的功能分支,
完事以后能够打个tag
,让分支滚蛋html
在dev分支 -> rebase主分支master最新的主干代码 切到master主分支 -> rebase到最新代码 -> 卸磨杀驴移除分支
在开发过程当中使用git rebase仍是git merge,优缺点分别是什么?git
git merge b
将b
分支合并到当前分支
一样 git rebase b
,也是把 b
分支合并到当前分支github
主要看当前所在的分支, merge谁就合并谁 合并的意思是重复的无论 加入没有的,还有就是本来存在的被改了会被覆盖以及冲突shell
https://www.cnblogs.com/marblemm/p/7161614.html安全
git fetch origin master:tmp git diff tmp git merge tmp git branch -d tmp
从远程获取最新的版本到本地的tmp
分支上,以后再进行比较合并ssh
git pull origin master 上述命令其实至关于git fetch 和 git merge 在实际使用中,git fetch更安全一些 由于在merge前,咱们能够查看更新状况,而后再决定是否合并 gfo master :temp gd temp 比較 gm temp 合并遠程分支 gbd “temp” 刪掉臨時分支
只建立分支 | git branch branchName |
---|---|
只切换分支 | git checkout branchName 或者 git switch branchName |
建立并切换 | git checkout -b branchName 或者git switch -c branchName |
删除本地分支 | git branch -D branchName 或者git branch -d branchName |
删除远程分支 | git push origin --delete branchName 或者git branch -r -d origin/dev && git push origin :dev 或者git push origin -d <branch name> 其中git push origin :branchName 原型是 git push origin master:branchName 将本地的 master 分支推送到远程的branchName |
查看全部分支 | git branch |
合并分支 | git merge branchName 通常是切换到主分支(master )把旁分支(branchName )合并 或者使用 git merge branchName -m "xxx" --no-ff 其中--no-ff Git默认会用 Fast forward 模式,但这种模式下,删除分支后,会丢掉分支信息,强制禁用 Fast forward 模式,加上 --no-ff 就能够查看完整的分支历史信息,不受分支删除影响。 |
git tag #查看已有tag git tag tagName #当前分支最新节点的tag # 指定节点打tag并添加release note信息 git tag -a v0.1 -m "version 0.1 released" 1094adb git tag -d <tagname> #删除本地标签 git show <tagname> #能够看到说明文字: git push origin v1.0 #推送指定本地标签 git push origin --tags #一次性所有推 git push origin :refs/tags/v0.9 #删除指定的远程标签 git push origin :<branch>/<tag> #删除指定的远程标签 注意冒号 : 必不可少, 后面跟远程库的分支名/标签名
# 回滚上一个版本,回滚到上上个则 HEAD^^,以此类推往回滚100次则很难数得清楚^的个数能够写成 HEAD~100 这样 git reset --hard HEAD^ # 经常使用的是这种指定commit_id切换 git reset --hard a2bcke52
撤销修改工具
场景1:当你改乱了工做区某个文件的内容,想直接丢弃工做区的修改时,用命令git checkout -- file。 场景2:当你不但改乱了工做区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操做。 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库 场景4: 就是把错误的改动已经推送到远程库了,如何撤回呢? 分两个状况处理: 本地: 本地节点代码回滚或者撤回最近一次提交从新修改以后`git commit --amend`便可, 本地不会生成一条新的提交记录,而是覆盖原来的提交记录. 也能够使用回滚的方式 git reset --soft HEAD^ 回滚到上一个节点, 若是改动的东西比较多仍是--amend靠谱些,或者也先把代码拷出来一份而后再使用reset,最后把新增的部分代码手动加进去(这样贼麻烦) 远程: 已经推送到远程的处理,与他人合做的话切记第一时间沟通好(省得形成事故),远程没得选,只能强推干掉记录 git push -u origin --force branchName 除非公司或者团队已经搭建好提交代码合并代码的规范流程,在本身分支上随便你怎么玩,多人合做主分支的话就略显尴尬(--force慎用 (逃
#1. 检查是否有ssh key cd ~/.ssh 查看这个目录下的文件 #2. 生成key ssh-keygen -t rsa -C "you email@email.com" 或者去掉 -t rsa #3. 拷贝公钥,设置好对应的key github或者使用的站点 cat ~/.ssh/id_rsa.pub 查看并拷贝到到git添加设置key #或者用命令添加到剪贴板 pbcopy < ~/.ssh/id_rsa.pub #4. 测试一下这个ssh能不能使用 ssh -T git@github.com
# 通常全局设置 git config --global user.name "username" git config --global user.email "email" # 针对单个仓库设置 去掉 --global ,在项目.git目录下找到.git/config文件直接修改 (偶尔一台电脑可能有多个github帐号使用,发现上传不了代码也可在config文件直接添加用户名邮箱来指定) [user] name = 要设置的username email = 要设置的email 或者执行以下语句: git config user.name "username" git config user.email "email" # 最后查看配置列表 git config --list
通常操做: 远程建立一个仓库,而后拉下来一个文件夹,在文件夹中增删改一些操做
可能的状况:gitlab
- 本地已是已存在的git仓库,但并无与远程库关联
- 本地还没建立git,更别提什么远程库了
若是本地没有git管理,先本地库git初始化 git init git add . git commit -m"log message" 若是已存在或者已经建立好本地git,则:(这里是ssh) git remote add origin git@github.com:WangGuibin/TestDemo.git 没报错则说明关联成功 git pull 拉下来 而后rebase或者git reset --hard commitid移动到正确的位置 而后再把本地的东西提交上去
- 执行
git config --global credential.helper store
,在~/.git/config
目录下会生成一个配置文件(全局的),这里会记录你的密码和账号,再执行git pull
输入一次正确的账号密码以后就不用再痛苦重复输密码这件事了.- 使用
ssh-key
绑定的形式,不管是gitlab
仍是gitblit
应该都支持绑定的,只要绑定了基本不用输密码的操做
git
如何拉取代码?# 组成结构是 协议头 + 用户名:密码@域名 git clone https://{username}:{password}@github.com
oh-my-zsh
工具封装的git快捷命令alias | grep git