git基本操作

git基本操作

一、初始化git
    格式:git init
二、工作区中状态的查看
    格式:git status
三、设置用户邮箱和用户名

    格式:git config --global user.email "1352785294@qq.com"
    格式:git config --global user.name "Luosir"
四、从工作区向git的暂存区添加文件
    格式:git add test.txt(文件名)
五、从git暂存区提交到提交区(会把提交区的内容全部提交,所以不用加文件名)
    格式:git commit -m “自己设定的备注信息”

分析图:

六、git log和版本切换(查看git的日志信息)

commit:commit id
Author:作者
Date:提交日期

若觉得打印日志信息过多,简化:
格式:git log --pretty=oneline

回退版本:

  1. 例1:回退到第一个版本(通过commit id回退)
    格式:git reset --hard (commit id)
    

  1. 例2:直接回退到上个版本
    格式:git reset --hard HEAD^   回退到当前版本的上个版本
    格式:git reset --hard HEAD^^  回退到当前版本的上上个版本
    

如果进行版本回退之后,发现最新commit id没有了,可以使用git reflog

    格式:git reflog    进行所有的commit id的查询

如图:

七、工作区暂存区和提交区
  • 撤销工作区的修改操作
    格式:git checkout -- (test.txt)文件名    文件中的内容会被撤销掉
    
  • 撤销已在暂存区的内容(使用了git add 命令之后后悔了)
  1. 第一步:回到提交区的最新版本
    格式:git reset HEAD (test.txt)文件名
    
  2. 第二步:撤销工作区的内容(回退到刚刚保存的阶段)
    格式:git checkout -- (test.txt)文件名    把工作区的内容清空
    
八、分支
  • Master分支指向的是主分支提交的commit id,头指针指向的是我们的当前分支最新的commit id。
  1. 在主分支Master上切出一个开发分支
    格式:git checkout -b (dev_luo)分支名   创建一个分支
    

    此刻的操作都会在新的分支上进行

  2. 查看分支情况(可以看到当前所处的分支(*号表示当前分支))
    格式:git branch
    

  1. 切换分支
    格式:git checkout (master)分支
    

  1. 删除分支
    格式:git branch -d (dev_luo)分支名
    


    只能强制性的删除该分支(没有合并):改为 -D 命令

九、合并分支和冲突解决

主分支Master我们不会去动,只会用于版本的发布。
各自在自己的分支开发完成之后,需要将开发的内容合并到主分支上,这就叫做merge。

例1:有一个新的开发人员 dev_zhang

  1. 第一步:添加新分支
    git checkout -b dev_zhang
    
  2. 第二步:进行文件的修改并提交
    git add (文件名)
    git commit -m "备注信息"
    
  3. 第三步:合并分支
    git checkout (master)分支   切换到主分支
    git merge dev_zhang
    
  4. 第四步:删除新分支
    git branch -d dev_zhang   此处已经合并,所以可以删除
    

例2:有两个开发人员合作开发一个项目,并负责不同的模块,此时Master分支作为一个版本的发布,不应该直接在上面开发

  1. 第一步:加入两个新分支
    git checkout -b dev_luo
    git checkout -b dev_li
    
  2. 第二步:进行小罗文件的修改并提交(该步完成之后就在原来的Master基础上多出一个分支)
    git add (test.txt)文件名
    git commit -m "小罗完成了商品管理模块"
    
  3. 第三步:回到Master分支
    git checkout master
    
  4. 第四步:进行小李文件的修改并提交(该步完成之后就在原来的Master基础上多出一个分支)
    git add (test.txt)
    git commit -m "小李完成了商品管理模块"
    
  5. 第五步:合并分支
    a. 回到Master分支

    git checkout master
    

    b. 合并小罗分支

    git merge dev_luo
    

    c.合并小李分支

    git merge dev_li
    

    此时会发生冲突

    解决方法
    解:需要手动解决冲突,修改文件并且再去add,commit的操作

  6. 删除分支
    git branch -d dev_luo
    git branch -d dev_li
    
十、git config 和配置别名
    格式:git config -l   查看所有的配置信息
    格式:git config --global -e   编辑全局级别的内容信息

  • 这里的所有信息实际上都是整合出来的(仓库级别、全局级别、系统级别)
    格式:git config --global --add user.name luosir   增加用户名
    格式:git config --global --unset user.name    删除用户名
    
  • git config 还可以配置git的命令
    例1:用 git st 来表示查看用户状态

    格式:git config --global alias.st status
    

例2:用 git one 来代替 git log --pretty=oneline

    格式:git config --global alias.one log --pretty=oneline

十一、打标签和忽略文件
一、 标签(给 commit id 起一个别名)
  1. 打上标签
    commit id 不容易记住,能不能用一种独特的方式去记住每一个版本

    格式:git tag      查看有哪些标签
    格式:git tag v3   给当前最新的版本commit id 打上v3这个标签
    格式:git tag v2 (以前的commit id)   给以前的版本commit id 打上v2这个标签
    
  2. 跳转标签
    格式:git reset --hard v2(标签)   跳转到标签v2版本
    
  3. 删除标签
    格式:git tag -d v2(标签)
    
二、 忽略文件

希望这个文件不要被 git 管理起来

  1. 第一步:创建一个( .gitignore)文件并写入想要被忽略管理的文件类型
    格式:vi .gitignore
    

  2. 第二步:提交( .gitignore)文件
    格式:git add   和   git commit
    
十二、本地仓库和远程仓库
  • 本地仓库:工作区
  • 远程仓库:
    a. 一台公共的电脑
    b. GitHub(国外的远程仓库)
    c. 码云(国内的远程仓库)

这些远程仓库如果不交一些费用,账号上的内容都是公开的

解决方法

    搭建自己一个私有的仓库,让别人不可见 (Gitlab)
十三、操作远程仓库和本地仓库

push、 pull 和 clone

  1. 第一步:在 GitHub 上创建一个repository(仓库)
  2. 第二步:设置关联或取消关联
    格式:git remote add origin (远程仓库的地址)   让本地仓库和远程仓库关联
    格式:git remote rm origin   取消本地仓库和远程仓库的关联
    格式:git remote -v   查看关联信息
    

  3. 第三步:推送仓库内容
    格式:git push -u origin master
    

    没有权限

解决方法(需要添加权限)

a. 需要在本地中生成一个 ssh key

    格式:ssh-keygen -t rsa -C "自己注册的邮箱"

b. 把这个key告诉 GitHub/码云

  1. 第四步:解决权限问题后再次推送
    格式:git push -u origin master
    

如果在其他分支进行了修改,则需要进行分支的合并或者指定推送的分支:

    格式:git push -u origin dev_luo(其他分支)

克隆(clone)
例:新来的一个成员小李需要进行一个开发

a. 在本地建立一个工作区(xiaoli)

b. 克隆操作(前提是 sshkey 也要完成添加)

    格式:git clone (远程仓库地址)


在(xiaoli)这个文件夹下输入命令

两个人同时开发时,当远程仓库内容和本地仓库内容不一致,需要先 git pull 把远程仓库的内容拉下来,然后手动解决这个冲突(手动修改文件内容),最后在提交并上传

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

posted on 2019-09-02 15:01  wawzzll  阅读(96)  评论(0编辑  收藏  举报

导航