git练习记录

最后都变了- 提交于 2019-12-01 15:17:06

在本地创建版本库并推送到远程:

创建本地版本库

$ 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相关联

$ git merge dev
将dev分支合并到当前分支
此时只是本地版本库的变化,还需要git push一下

$ git branch -d dev
删除本地库中的dev分支
$ git branch -D dev
强制删除未合并的本地库的dev分支

$ git remote
查看远程库的信息

$ git remote -v
显示可以抓取和推送的origin的地址 如果没有推送权限 就看不到push的地址

$ git branch -r -d origin/dev
$ git push origin :dev
两行代码合起来可以做删除远程分支的操作

$git checkout -b 本地分支名 origin/远程分支名
将远程git仓库里的指定分支拉取到本地(本地不存在的分支)

git合并分支(未验证)

$ 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开始前的状态。
}

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的。
指向谁代表是那个分支的提交

修改用户名与邮箱

$ git config --global user.name 'wangtong'
修改用户名

$ git config --global user.email wangt173111@163.com
修改邮箱

版本回退

$ git checkout .
放弃工作区所有修改

$ git reset
todo

$ git log
查看版本详细历史,基准为commit
$ git log --pretty=oneline
查看版本简略历史,多条

$ git reflog
查看版本库变化命令历史多条

$ git reset --hard 2f640ed
指定回退到某一版本或某一命令
$ git reset --hard HEAD^
回退到上一个版本

打tag(暂时没用,后续整理)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!