1、版本的创建:
git init
git add .\name
git commit -m '版本号'
2、版本的回退:
HEAD为指向当前版本的指针,HEAD^ 表示上一个版本,HEAD ^^ 表示上两个版本……,同时HEAD~加数字,表示前‘数字’个版本,例如HEAD~10表示前十个版本。
git reset --hard HEAD^
git reset --hard 1bcaeb7e1
3、缓存区与工作区
git init 所在的目录称为工作区
工作区中的.git目录,称为版本库
git add就是把文件的修改添加到缓存区中,git commit 提交修改,就是把缓存区所有内容提交到当前分支,创建版本记录
git status
4、管理修改
git commit 只会提交缓存区的内容形成新版本,未提交至缓存区的不会被提交
当你希望丢弃之前工作区的改动,你可以使用:
git checkout -- name \ .
git reset HEAD name
git chechout -- name
git reset HEAD name
git reset --hard HEAD^
5、对比工作区和某个版本中文件的不同
git diff HEAD -- name
下面图片表示 —表示HEAD所代表的文件,+++表示工作区文件,下面内容中不带±号的表示两个文件中共有的内容,带+号表示工作区多出的内容
git diff HEAD HEAD^ -- name
git log --pretty=oneline
6、创建分支
git checkout -b NameOfBranch
git checkout NameOfBranch
git merge NameOfBranch
git branch -d NameOfBranch
git branch
git branch name
git checkout name
git checkout -b name
git merge name
git branch -d name
6.2、解决冲突
在两个分支上面都有了提交,并且编辑的还都是同一个文件,就会产生合并冲突,需要手动解决,需要进行一次新的提交。手动解决,比如删除部分产生冲突的地方,然后保存推出vim,然后再次提交。
如果你在两个分支下分别编辑了两个不同的文件,然后使用Git commit进行提交,不会产生冲突,但是也不会使用“快速合并”,而是会产生一次新的合并与提交,并且需要在一个界面上输入提交信息
上图中,是使用 git merge dev 命令后的结果,v0.3-dev 表示 dev 分支的提交,v0.6-master 表示 master分支的提交。合并分之后,很明显将 dev 分支的提交也放在了master 分支里面,并且将合并后的版本独立进行了一次提交,也就是新的 v0.3-dev-master。
而当只有一个分支更改了一个文件,而另一个分支并没有更改文件的时候,使用 git merge NameOfBranch 命令会产生“快速合并”,直接把 dev2 分支提交的版本号加到 master 分支上,如下图所示:
7、bug消除
git merge NameOfBranch
git log --pretty=oneline --graph
git merge --no-off -m '版本号' NameOfBranch
在git中,每一个BUG都是依靠分支来完成,很自然地,你想到新建一个bug-001分支来修复他,但是,当前分支的工作还没有提交,可以使用以下命令来保存现场
git stash #这个时候就会保存现场
当你在新建分支bug-001中修改bug后,再进行合并:
git merge --no-off -m ‘版本号’ NameOfBranch #使用该命令进行合并分支,在使用上述公式时候,会保留分支现象。
使用上述命令合并以保留分支现象,最
后删除bug-001分支
之后使用 git stash pop 来修复现场
8、如何推送代码
git push origin NameOfBranch
git branch --set-upstream-to=origin/NameOfBranch NameOfBranch
git push
git pull origin NameOfBranch
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)