志宇-git命令使用

Git

Git相对svn的好处
1、当中央仓库挂掉后svn不能继续使用,git可以选出一个代码比较全本地仓库的作为中央仓库使用,不影响开发;
2、svn只能局域网内使用而git可以通过网络使用;
一、下载安装git
Git下载地址

二、安装

在这里插入图片描述
登录github,创建一个仓库用于学习git

三、git使用

git init ​ 生成空的本地仓库 ​
—初次commit之前,需要配置用户邮箱及用户名,使用以下命令
git config --global user.name “lizhiyu”
git config --global user.email “[email protected]
在这里插入图片描述

1) git 本地操作

git --help ​ 调出Git的帮助文档 ​ git +命令 --help ​ 查看某个具体命令的帮助文档
​git --version ​ 查看git的版本 ​
git status 查看工作区和版本区的区别
git add ​ 将文件添加到暂存区
git commit -m “这里是提交注释” (将暂存区里的文件提交到仓库区)
git reset 可以回滚到指定版本,也可以移除暂存区内容
git checkout 可以将远程分支或者版本区内容更新到工作区

2) 推送、拉取远程仓库

git pull --rebase origin master 首先将远程仓库的信息更新下来
git push -u origin master 将信息提交至远程仓库
在每次提交前要先将远程仓库更新下来git pull origin master
然后看那些不同,不同的修改后再提交 git diff

3) 可以使用另一种方法拉取代码

git fetch 拉取远程仓库的变更到本地仓库
git merge origin/master 将远程仓库变更合并到本地仓库的master分支
git pull (不建议使用,fetch加merge等于pull)

4) 文件状态

git status
用于查看git的状态
git rm --cache 文件名
用于git文件的删除操作 ​ 如果只是 git rm --cache 仅删除暂存区里的文件 ​ 如果不加–cache 会删除工作区里的文件 并提交到暂存区
git checkout 文件名
git checkout 分支名 文件名
从暂存区将文件恢复到工作区,如果工作区已经有该文件,则会选择覆盖加了【分支名】 +文件名 则表示从分支名为所写的分支名中拉取文件 并覆盖工作区里的文件
新建文件—>Untracked 使用add命令将新建的文件加入到暂存区—>Staged
使用commit命令将暂存区的文件提交到本地仓库—>Unmodified
如果对Unmodified状态的文件进行修改—> modified ​
如果对Unmodified状态的文件进行remove操作—>Untracked

5) 分支操作

git branch 分支名 (在本地创建分支)
git branch 不加任何参数,列出所有的分支,
分支前面有*号,代表该分支为当前所在分支
创建分支的时候,分支名不用使用特殊符号
git branch -d 分支名 (删除分支,不能删除当前所在的分支 )
git branch -m 旧分支名 新分支名 (分支重命名)
git checkout 分支名 切换分支
如果在分支上面对文件进行修改之后,没有commit就切换到另外一个分支b, 这个时候会报错,因为没有commit的文件在切换分支之后会不覆盖。所以Git 报错提示。
git checkout -f 分支名 强制切换到分支
如果当前有未提交的变更,会直接丢弃。 -f 参数一定一定要非常非常小心使用,一般情况下不建议使用,除非真的要强制去执行
git checkout -b 分支名 相当于先创建分支然后再切换

6) git log 查看提交日志(q退出)

git log 输出信息的定制
在这里插入图片描述
信息含义: 提交的id、作者、时间、注释
git log -数字 表示查看最近几次的提交
git log -p -2 显示最近两次提交的不同点
git log --author 查看具体某个作者的提交
git log --online 输出简要的信息
git log --graph 以一个简单的线串联起整个提交历史

7) git differ

git diff --stat 用于罗列有变更的文件
git diff 不加任何参数 用于比较当前工作区跟暂存区的差异
git diff --cached 或者–staged 暂存区和当前仓库差异
git diff HEAD 当前工作区和 仓库差异
git diff 分支名 查看当前分支跟指定的分支的差异
git diff 分支名1 分支名2 查看两个指定分支(已提交的)的差异,分支2 跟分支1的差别
git diff 文件名 查看指定文件的差异
git diff commitid1 commitid2 用于列出两个历史提交的差异

8) git reset

git reset HEAD 文件名 移除不必要的添加到暂存区的文件
git reset HEAD^ 或者 commitid (去掉上一次的提交)
git reset --soft 只是将HEAD引用指向指定的提交,工作区跟暂存区的内容不会改变
git reset --mixed (默认选项)将HEAD指向指定的提交,暂存区的内容随之改变,工作区内容不变
git reset --hard 将HEAD指向指定的提交,暂存区跟工作区都会改变

9) 合并分支

git merge 分支名(v1)
表示:将v1分支中的代码合并到本地分支
git diff --name-only --diff-filter=U 用于查看产生冲突的文件

10)git 标签

git tag 不加任何参数 表示显示标签(按字母序) 非按时间
git tag 标签名 默认是给最近一次提交打上标签
git tag 标签名 commitId 给响应的提交打上标签
(commitId 是git log --online 中显示的)
git show 标签名 显示该标签相关的那次提价的相关信息
git tag -d 标签名 删除该标签
git push 远程分支名 标签名 把某个标签(必须是本地已存在的,否则推动失败) 推送到远程分支
删除远程标签的步骤
删除本地标签 git tag -d 标签名
在删除远程的 git push origin :refs/tags/标签名

11) git stash

可以将文件暂存起来,然后再恢复(例如:切换分支前进行保存)

git stash save "save message"  
 相当于将代码存储起来,然后本地代码和HEAD处代码相同
 执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别。
git stash list  
 查看stash了哪些存储
git stash apply 
 应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储
git stash clear 
 删除所有缓存的stash

12)gitignore

为什么要使用.gitignore 文件
大量与项目无关的文件全推到远程仓库上,同步的时候会非常慢,且跟编辑器相关的一些配置推上去之后,别人更新也会受其影响。所以,我们使用该文件,对不必要的文件进行忽略,使其不被git追踪
一把情况下,.gitignore文件,在项目一开始创建的时候就创建,并推送到远程服务器上。这样大家初次同步项目的时候,就是用到该文件,避免以后,团队成员把与项目无关的文件,传到远程服务器上
.log 表示忽略项目中所有以.log结尾的文件 ​ 123?.log 表示忽略项目中所有以123加任意字符的文件 ​ /error.log 表示忽略项目中根目录中的error.log 这个文件 ​ src/main/test/ 表示忽略/src/main/test/目录下的所有文件 ​ *.class ​ **/java/ 匹配所有java目录下的所有文件 ​ !/error.log 表示在之前的匹配规则下,被命中的文件,可以使用!对前面的规则进行否定
对于已经提交到远程或本地仓库的文件,.gitignore配置之后不会生效。我们必须先删除本地暂存区里的文件,之后在加上.gitignore 文件,最后再把变更提交到远程仓库上。
git rm --cached 文件名 从暂存区删除某个文件
git rm -rf --cached 文件夹 表示递归删除暂存区该文件夹的所有东西

遇到如下情况处理

1. 当要推送代码时(在你推送前有人推送了代码,修改了相同的文件)怎么

–首先将要提交的代码放到本地仓库
git add .
git commit -m “提交内容”
–拉取代码
git fetch origin master:tmp
–对比拉取的代码 (如果太多差异可以不合并到工作区上)
git diff tmp
–将拉取的代码合并到工作区上 (要将不同的文件提交到工作区上)
git merge tmp

2. 撤销推送到远程仓库的信息

git log 查看 (当前的head 位置)
在这里插入图片描述

 git reset --soft 要恢复位置的版本号

 --soft 代表 保留当前工作区,以便重新提交 

3. 如何查看已经commit的信息

git log 查看所有的commit提交记录
在这里插入图片描述
git show 查看提交的详情
1.查看最新的commit
git show
2.查看指定commit hashID的所有修改:
git show commitId
3.查看某次commit中具体某个文件的修改:
git show commitId fileName

4.撤销commit操作

git reset --soft HEAD^

这样就成功的撤销了你的commit
注意,仅仅是撤回commit操作,您写的代码仍然保留(暂存区跟工作区都会改变)

HEAD^的意思是上一个版本,也可以写成HEAD~1
如果你进行了2次commit,想都撤回,可以使用HEAD~2

5 强制拉取覆盖本地代码

git fetch --all
git reset --hard origin/master
git pull

git操作笔记

创建github项目,拉取项目代码

在github上面创建一个项目,选定项目对应的license(许可)来设定项目开发许可
这里选择Apache
在这里插入图片描述

下载项目
git clone [email protected]:lizhiyuIsMe/learnGit.git

提交代码

git status       //可以查看到分支和修改的文件
git add .       //将文件存储到暂存区
git commit -m "提交代码"    //将文件提交到仓库区
git push     //将代码推向远程

创建新分支,在新分支上提交代码

git branch dev    //在本地创建新分支
git branch        //查看创建的分支
git checkout dev     //切换分支(切换时需要本地没有修改代码,或者可以强制切换)
git push origin HEAD -u   //将创建的分支推送到远程或者git push --set-upstream origin dev
//如果是要加载已经创建好的分支
//1、如果是两个github上的项目要求先添加这个项目 git remote add origin https://github.com/lizhiyuIsMe/learnGit.git
//2、同一个github项目上加载不同分支 
//git checkout -a   查看本地和远程的分支
//git checkout 分支名
git remote -v         //查看远程仓库详细信息,可以看到仓库名称
git add .    //提交相关代码在新的分支上
git commit -m "提交代码"
git push

将新分支上修改的代码合并到主分支上

git branch    
git checkout 主分支名  //切换到主分支上(切换时候本地代码要和远程代码相同)
git merge 新分支名   //相当于将新分支的代码 git add 加 git commit 到主分支
//如果有冲突可以用下面命令查看所有的冲突文件
//git diff --name-only  --diff-filter=U
git push   //将代码推送

idea操作git笔记

猜你喜欢

转载自blog.csdn.net/fenkanghong9779/article/details/104007875