- 学习系列,git基本命令记录,开始之前,看下git的工作原理图:
- 基础命令
git init # 创建本地仓库
git status #查看信息
git add 文件名(*) #将代码提交至暂存区
git commit -m '备注信息' #将代码提交到本地仓库
git diff 文件名 #对比文件信息
git log (--pretty=oneline) #查看git日志
git log --graph --pretty=oneline --abbrev-commit #查看详细日志
git reset --hard HEAD^ #回退到上一个版本
git reflog #查看版本号
git reset --hard 版本号 #回退到指定版本号
git checkout -- 文件名 #将文件在工作区所做的操作撤销
git rm 文件名 #将文件删除 相当于git add -A 把所有发送变化的文件提交到暂存区;git commit两步操作
rm -rf 文件名 #强制删除(手工删除) 撤销直接使用git checkout -- 文件名
git mv 旧文件名 新文件名 linux/mac 使用git mv win使用git ren
git commit --amend -m "增加信息" # 修改最后一次提交内容
git branch #查看当前分支情况
git branch 分支名 #新建一个分支
git checkout 分支名 #切换到指定分支操作 (指针切换)
git checkout -b 新增分支名 # 新增分支并切换到新分支上
git merge 分支名 #将分支内容合并到主分支
git branch -d 分支名 #删除指定分支
git tag # 查看标签
git tag v1.2 #设置标签
git show # 显示标签。
git tag -a 标签名 -m “标签注释信息” # 添加标签并带有注释信息
git tag -a 标签名 -m “标签注释信息” 版本号 # 添加
git cheakout 标签名 :切换到指定标签,此时不位于任何分支,处于游离状态,可以考虑在此标签创建一个分支,脱离游离状态可以checkout 分支名即可
git tag -d #删除标签名
git clean -n #查看没有被跟踪文件
git clean -f #删除没有被跟踪的文件
git remote add origin https://github.com/demo.git # 添加远程仓库,名称为origin(默认)
git push -u origin master # 把master分支推送到origin仓库(原仓库)
git clone 远程仓库git地址 # 克隆远程仓库到本地
fork /拷贝对方的仓库到自己仓库,修改/增加完成后提交到自己的仓库,推送给对方的仓库使用pull request 进行推送,对方同一后可合并到对方仓库
- 恢复删除在暂存区的文件
1.git reset HEAD 文件名 #恢复暂存区
2.git checkout -- 文件名 #恢复工作区
3.git rm -r --cached 文件名 删除新增到暂存区的文件,再手工删除文件rm -rf +文件名
-
当主分支与其他分支更新冲突时
可以手动解决 将不需要的部分删除或者全部保留,解决后 执行 git add 再执行 git commit -m ""
解决删除分支后还存在历史信息 git merge --no-ff -m '注释' 分支名 -
多人协作产生冲突
方式一:
1、使用gitpull命令把最新的提交拉取下来
2、如果拉取失败一般原因是没有指定本地子分支与远程origin/子分支的链接:可使用该命令gitbranch--set-upstream-to=origin/远程子分支本地子分支
3、此时pull虽然成功,但是合并有冲突,需要手动解决,解决的方法和分支管理中的解决冲突完全一样
4、解决完成之后,使用git push提交
方式二:
使用命令gitpush-f 强制提交,该方式会导致远程仓库之前的修改被覆盖,同时提交日志也会被覆盖。 -
常用的操作
git blame filename #查看谁更改了file中的内容、修改时间
设定git不跟踪文件:在工作目前创建一个名为.gitignore的文件,用于过滤数据,便于非需要管理的文件进行过滤,文件内容如下:
/new/ #过滤整个文件夹
*.txt #过滤所有.zip文件
/new/test.c #过滤某个具体文件
.DS_Store #Mac用来存储文件夹信息的文件
npm-debug.log * #npm报错信息文件
git clean:从工作目录中删除没有被git跟踪过的文件,它包含如下参数:
-n提示哪些文件会被删除
-f删除当前目录下所有没有跟踪过的文件.它不会删除
.gitignore文件里面指定的文件夹和文件
-f删除指定目录下所有没有跟踪过的文件
-df删除当前目录下所有没有跟踪过的文件和文件夹
-xf删除当前目录下所有没有跟踪过的文件,包含.gitignore文件中设置的文件