在本地创建版本库并推送到远程:
创建本地版本库
$ git init
在本地创建版本库:可以是空的文件夹,也可以是有内容的文件夹
不管是空文件夹还是非空文件夹都会
Initialized empty Git repository
提示这是一个空的版本库
空文件夹的话需要放入相应需要添加的文件
$ git add .
把文件添加到仓库
$ git commit -m 'first commit'
把文件提交到仓库
至此,本地版本库建好了
远程Create a new repository
填入仓库名称和Description,其他保持默认配置
$ git remote add origin git@github.com:wangtongbef/wt-project.git
关联远程仓库(空库可实现)
如果本地库是空的那么可以关联远程库但是不可以推送分支
$ git push -u origin master
把当前分支master推送到远程(空库不可实现)
-u 表示把本地的master分支和远程的master分支关联起来
至此本地仓库顺利添加到远程并与master分支关联
分支管理练习
$ git branch -vv
显示本地分支与远程分支的对应关系
$ git checkout -b dev origin/dev
有origin/dev时 在本地创建并切换到相应的dev分支 此时 dev与origin/dev 已经关联
$ git checkout master
切换到master分支
$ git checkout -b dev
创建并切换到新的dev分支 :此时没有相对应的远程分支
创建的分支指向当前分支最新的一步
$ git push origin dev
将本地该分支上的所有本地提交推送到远程库 并会添加一个dev远程库 dev与origin/dev 并没有关联
$ git branch --set-upstream-to=origin/dev dev
将本地dev与origin/dev相关联
报错:fatal: refusing to merge unrelated histories(拒绝合并不相关的历史)
http://confluence.cmrh.com/pages/viewpage.action?pageId=56344452
$ git merge dev
将dev分支合并到当前分支
此时只是本地版本库的变化,还需要git push一下
$ git branch -d dev
删除本地库中的dev分支
$ git branch -D dev
强制删除未合并的本地库的dev分支
$ git remote
查看远程库的信息
$ git remote -v
显示可以抓取和推送的origin的地址 如果没有推送权限 就看不到push的地址
$ git remote rm origin
git与远程库解绑:origin为远程库名称
$ git branch -r -d origin/dev
$ git push origin :dev
两行代码合起来可以做删除远程分支的操作
$git checkout -b 本地分支名 origin/远程分支名
将远程git仓库里的指定分支拉取到本地(本地不存在的分支)
git合并分支(未验证)
git合并分支可以借鉴:
https://git-scm.com/book/zh/v1/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%9A%84%E6%96%B0%E5%BB%BA%E4%B8%8E%E5%90%88%E5%B9%B6
$ git merge{
$ git cherry-pick 38361a68
将特定的提交合并到本分支(已验证)
$ git merge dev
如果待合并的分支在当前分支的下游,也就是说没有分叉时,会发生快速合并,这种方法相当于直接把master分支移动到test分支所在的地方,并移动HEAD指针
$ git merge --no-ff dev
这种合并方法会在master分支上新建一个提交节点,从而完成合并,此时dev分支得以保存,log不变(适用于有不同提交的分支)
$ git log --graph --pretty=oneline --abbrev-commit
分支详细历史:包括--no-ff合并历史,以图形的方式显示,很直观
$ git rebase dev
将master分支上的多余提交重新在dev上提交一次,然后将master的指针指向最新的提交,dev分支的指针不变化
在rebase的过程中,也许会出现冲突(conflict). 在这种情况,Git会停止rebase并会让你去解决 冲突;在解决完冲突后,用"git-add"命令去更新这些内容的索引(index), 然后,你无需执行 git-commit,只要执行:
$ git rebase --continue
这样git会继续应用(apply)余下的补丁。
$ git rebase --abort
在任何时候,你可以用--abort参数来终止rebase的行动,并且"mywork" 分支会回到rebase开始前的状态。
}
gitLab浏览器合并
参考:1,提交并接受合并 —— https://blog.csdn.net/weixin_43606948/article/details/85489257
2,提交合并请求 —— https://blog.csdn.net/weixin_44253425/article/details/92797933
3,接受合并请求 —— https://blog.csdn.net/weixin_44253425/article/details/92798189
git对比两个分支差异
$ git log dev ^master
查看dev有 而master中没有的
$ git log master ^dev
查看master有 而dev中没有的
$ git log master..dev
查看dev中比master中多提交了哪些内容
列出来的是两个点后边(此处即dev)多提交的内容。
同理,想知道 master 比 dev 多提交了什么
$ git log dev..master
$ git log dev...master
不知道谁提交的多谁提交的少,单纯想知道有什么不一样
在上述情况下,再显示出每个提交是在哪个分支上:
$ git log --left-right dev...master
注意 commit 后面的箭头,根据我们在 –left-right dev…master 的顺序,左箭头 < 表示是 dev 的,右箭头 > 表示是 master的。
指向谁代表是那个分支的提交
修改用户名与邮箱(修改Windows10下用户名密码)
$ git config user.name
查看用户名
$ git config user.email
查看邮箱
$ git config --global user.name 'wangtong'
修改用户名
$ git config --global user.email wangt173111@163.com
修改邮箱
Windows10下更换Git用户名或密码
https://jingyan.baidu.com/article/642c9d3435a6e9644a46f732.html
版本回退
$ git checkout .
放弃工作区所有修改
$ git reset
撤销add操作
git commit 之后 撤销commit
$ git reset --soft HEAD^
不删除工作空间改动代码,撤销commit,不撤销git add .
git reset 参数详解:
HEAD^的意思是上一个版本,也可以写成HEAD~1
如果你进行了2次commit,想都撤回,可以使用HEAD~2
--mixed
不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。
--soft
不删除工作空间改动代码,撤销commit,不撤销git add .
--hard
删除工作空间改动代码,撤销commit,撤销git add .
注意完成这个操作后,就恢复到了上一次的commit状态。
git commit --amend
commit注释写错了,想改一下注释,会进入默认vim编辑器,修改注释完毕后保存就好了
$ git log
查看版本详细历史,基准为commit
$ git log --pretty=oneline
查看版本简略历史,多条
$ git reflog
查看版本库变化命令历史多条
$ git reset --hard 2f640ed
指定回退到某一版本或某一命令
$ git reset --hard HEAD^
回退到上一个版本
git stash将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录
https://www.cnblogs.com/zndxall/archive/2018/09/04/9586088.html
https://blog.csdn.net/stone_yw/article/details/80795669
检查本地的代码修改情况
git diff 可以查看当前没有add 的内容修改(不在缓冲区的文件变化)
git diff --cached查看已经add但没有commit 的改动(在缓冲区的文件变化)
git diff HEAD 是上面两条命令的合并
打tag(暂时没用,后续整理)