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:回退到第一个版本(通过commit id回退)
格式:git reset --hard (commit id)
- 例2:直接回退到上个版本
格式:git reset --hard HEAD^ 回退到当前版本的上个版本 格式:git reset --hard HEAD^^ 回退到当前版本的上上个版本
如果进行版本回退之后,发现最新commit id没有了,可以使用git reflog
格式:git reflog 进行所有的commit id的查询
如图:
七、工作区暂存区和提交区
- 撤销工作区的修改操作
格式:git checkout -- (test.txt)文件名 文件中的内容会被撤销掉
- 撤销已在暂存区的内容(使用了git add 命令之后后悔了)
- 第一步:回到提交区的最新版本
格式:git reset HEAD (test.txt)文件名
- 第二步:撤销工作区的内容(回退到刚刚保存的阶段)
格式:git checkout -- (test.txt)文件名 把工作区的内容清空
八、分支
- Master分支指向的是主分支提交的commit id,头指针指向的是我们的当前分支最新的commit id。
- 在主分支Master上切出一个开发分支
格式:git checkout -b (dev_luo)分支名 创建一个分支
此刻的操作都会在新的分支上进行
- 查看分支情况(可以看到当前所处的分支(*号表示当前分支))
格式:git branch
- 切换分支
格式:git checkout (master)分支
- 删除分支
格式:git branch -d (dev_luo)分支名
只能强制性的删除该分支(没有合并):改为 -D 命令
九、合并分支和冲突解决
主分支Master我们不会去动,只会用于版本的发布。
各自在自己的分支开发完成之后,需要将开发的内容合并到主分支上,这就叫做merge。
例1:有一个新的开发人员 dev_zhang
- 第一步:添加新分支
git checkout -b dev_zhang
- 第二步:进行文件的修改并提交
git add (文件名) git commit -m "备注信息"
- 第三步:合并分支
git checkout (master)分支 切换到主分支 git merge dev_zhang
- 第四步:删除新分支
git branch -d dev_zhang 此处已经合并,所以可以删除
例2:有两个开发人员合作开发一个项目,并负责不同的模块,此时Master分支作为一个版本的发布,不应该直接在上面开发
- 第一步:加入两个新分支
git checkout -b dev_luo git checkout -b dev_li
- 第二步:进行小罗文件的修改并提交(该步完成之后就在原来的Master基础上多出一个分支)
git add (test.txt)文件名 git commit -m "小罗完成了商品管理模块"
- 第三步:回到Master分支
git checkout master
- 第四步:进行小李文件的修改并提交(该步完成之后就在原来的Master基础上多出一个分支)
git add (test.txt) git commit -m "小李完成了商品管理模块"
- 第五步:合并分支
a. 回到Master分支
git checkout master
b. 合并小罗分支
git merge dev_luo
c.合并小李分支
git merge dev_li
此时会发生冲突
解决方法
解:需要手动解决冲突,修改文件并且再去add,commit的操作 - 删除分支
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 起一个别名)
- 打上标签
commit id 不容易记住,能不能用一种独特的方式去记住每一个版本
格式:git tag 查看有哪些标签 格式:git tag v3 给当前最新的版本commit id 打上v3这个标签 格式:git tag v2 (以前的commit id) 给以前的版本commit id 打上v2这个标签
- 跳转标签
格式:git reset --hard v2(标签) 跳转到标签v2版本
- 删除标签
格式:git tag -d v2(标签)
二、 忽略文件
希望这个文件不要被 git 管理起来
- 第一步:创建一个( .gitignore)文件并写入想要被忽略管理的文件类型
格式:vi .gitignore
- 第二步:提交( .gitignore)文件
格式:git add 和 git commit
十二、本地仓库和远程仓库
- 本地仓库:工作区
- 远程仓库:
a. 一台公共的电脑
b. GitHub(国外的远程仓库)
c. 码云(国内的远程仓库)
这些远程仓库如果不交一些费用,账号上的内容都是公开的
解决方法
搭建自己一个私有的仓库,让别人不可见 (Gitlab)
十三、操作远程仓库和本地仓库
push、 pull 和 clone
- 第一步:在 GitHub 上创建一个repository(仓库)
- 第二步:设置关联或取消关联
格式:git remote add origin (远程仓库的地址) 让本地仓库和远程仓库关联 格式:git remote rm origin 取消本地仓库和远程仓库的关联 格式:git remote -v 查看关联信息
- 第三步:推送仓库内容
格式:git push -u origin master
没有权限
解决方法(需要添加权限)
a. 需要在本地中生成一个 ssh key
格式:ssh-keygen -t rsa -C "自己注册的邮箱"
b. 把这个key告诉 GitHub/码云
- 第四步:解决权限问题后再次推送
格式: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;">