一、 git流程图

1.Git文件状态流向
在这里插入图片描述

2.diff使用

将工作区 记为 (a),将暂存区记为(b),将git本地库记为(c)。

在这里插入图片描述

二、git命令使用宝典教程

1: git clone git@gitlab.niceprivate.com:back/coolly-nice.git
2: cd coolly-nice/
3: git branch userRecommend (创建一个分支,和在git上一样建的名字)
4: git checkout userRecommend (切到刚创建的分支)
5: git pull origin master — -合并主干代码到本地
6: git push origin userRecommend - -分支推到自己对应的远程库分支
7: git add leyagjun.php
8: git commit -m ‘myCodeCi’

git status 查看状态(看下是否有文件被修改)

git blame leyangjun.php 查看文件被修改过的纪录(能后 “git show 分支id” 查看日志就行)

切换分支:
1:git branch leyanjunCheckToken
2:git checkout leyanjunCheckToken
3:git pull origin master
4:git pull origin leyanjunCheckToken
5:git push origin leyanjunCheckToken

二:版本回退和日志查看
git log --pretty=oneline 等同于 git log 提交日志(列出的日志格式不一样)
git log -p 7aee80cd2afe3202143f379ec671917bc86f9771 版本日志
git show 7aee80cd2afe3202143f379ec671917bc86f9771

git reset --hard HEAD^ 回退到上一个版本
git reset --hard 3628164 回退到指定的版本
git reflog 记录你的每一次命令(可以找到版本ID commit id号)

三:工作区和暂存区
git diff HEAD – readme.txt 查看工作去和版本库里面最新版本的区别
git checkout – readme.txt 文件在工作区的修改全部撤销,没有--表示切换分支(分两种情况):
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。

git reset HEAD readme.txt 把暂存区的修改回退到工作区head表示最新的版本(reset也可以回退版本)
git checkout —- readme.txt 将工作区修改的内容撤回(可以不用--也行)

删除文件->在对应删除版本库中的文件
rm test.txt -> git rm test.txt —> git commit -m “remove test.txt” 删除版本库中的文件,记得要提交

删错了想恢复文件:
git checkout —- test.txt 因为版本库里还有能后拉回来,但是删除后能后还提交了就拉不回来了

四:远程仓库
1:可以免费注册个GitHub账号进行托管 我的[https://github.com/leyangjun/]
A:添加远程仓库:
要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;
关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

B:从远程仓库克隆:
git clone git@github.com:leyangjun/gitskills.git

五:分支管理
A 创建分支与合并分支:
git branch 查看分支
git checkout -b leyagjun 等同于 git branch leyangjun + git checkout leyangjun
git merge test 合并指定的分支到当前分支
git branch -d test 删除指定分支

B 解决冲突:
当主分支的代码与本地开发分支的某个文件修改冲突时,会出现合并冲突
git merge test
冲突的解决方法:vim chongtu.txt 编辑冲突的内容能后保存+add+commit
git log --graph --pretty=oneline --abbrev-commit 分支合并情况

合并分支第二种方式:
    git merge --no-ff -m "merge with no-ff" dev   (请注意--no-ff参数,表示禁用Fast forward模式)
    git log --graph --pretty=oneline --abbrev-commit    查看合并情况
    git branch -D test-branch   丢弃一个没有被合并过的分支,强行删除

C 多人协作:
git remote 查看远程库的信息
git remote -v 显示远程库更详细的信息
git push origin master/本地分支 把该分支上的所有本地提交推送到远程库

正常流程:
    1:git clone git@github.com:leyangjun/learngit.git

D 标签管理
git tag v1.0 切到需要打标签的分支上,tag命令打标签
git tag v1.0 查看标签
git tag 查看所有标签
git log --pretty=oneline --abbrev-commit 查看历史提交的commit id,能后大分支(第二种方法打标签)
git tag v0.6 943432 上面方法找到对应的commit id能后打标签

git tag -d v0.1        删除标签
git push origin v1.0   将标签推送到远程
git push origin —-tags 推送所有标签到远程
如果标签已经推送到远程,要删除的方法:
    git tag -d v0.9      先本地删除标签
    git push origin :refs/tags/v0.9   能后删除远程标签

E 自定义git
git config —-global color.ui true 让git显示颜色

   忽略特殊文件:
    忽略某些文件时,需要编写 .gitignore 文件
    有时候一些特殊的文件被过滤了,会提示提交不了
    git add leyangjunApp.class   加入这个文件被过滤了又想要提交
    git add -f leyangjunApp.class  -f表示强制添加到git

    git check-ignore -v leyangjunApp.class   git会告诉你。gitignore的第几行规则忽略了该文件

配置别名:
    比如你觉得git status这个单词不好记, 你就可以跟进自己的设置定义别名
    git config --global alias.st status      这时候 git st = git status
    git config --global alias.co checkout
    git config --global alias.ci commit
    git config --global alias.br branch
    git config --global alias.unstage 'reset HEAD'   撤销的别名    

配置文件:
    cat .git/config

切换到线上某个分支:

git checkout -b leyangjun_test origin/leyangjun_test

重新命名:

    git branch -m oldbranchname newbranchname

git回滚:
git reset --hard ca7b87335c42eb45449bc2bc48553610f91db327
git push -f origin master


转自

https://blog.csdn.net/leyangjun/article/details/52540590
https://blog.csdn.net/leyangjun/article/details/52204871

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐