菜鸟教程学习记录
Git 配置
git config
命令专门用来配置或读取相应的工作环境变量。环境变量分为三种,分别存在三个地方:
- 所有用户:
/etc/gitconfig
- 个人用户:
~/.gitconfig
- 项目环境:当前项目工作目录中的 .git/config 文件
git config --list
可以查看已有的配置信息,vim ~/.gitconfig
也行。
Git 工作流程
Git 工作区、暂存区和版本库
三个概念:工作区、暂存区/缓存区(英文名叫index或stage)、版本库。
master那一般也被叫做仓库。
慎重使用checkout
命令,会用版本库中的index或者master覆盖掉工作区的内容。
Git基本操作
- git init
- git clone [url]
- git add
git add README.md hello.php
后面可以跟多个文件
- git commit
git commit -m "第一次提交"
-m 提交时候添加评论git commit -a"
-a 跳过git add 到缓存区,直接提交到仓库。可以-am
一起用
- git status
- `git status -s -s 参数,以获得简短的结果输出,如果没加该参数会详细输出内容
- “AM” 状态的意思是,这个文件在我们将它添加到缓存之后又有改动。
- " M" 状态的意思是,本地发生改动
- "M " 状态的意思是,缓存区发生改动
- git diff
git diff
尚未缓存的改动git diff --cached
查看已缓存的改动git diff HEAD
查看已缓存的与未缓存的所有改动git diff --stat
显示摘要而非整个 diff
git reset HEAD
命令用于取消之前 git add 添加到缓存的内容- git mv
git mv
命令用于移动或重命名一个文件、目录、软连接。只是执行mv,只会更改本地的名字,缓存区中的名字不会改,- 执行git mv后,git status -s查看状态会出现"R ",表示文件被重命名
- git rm
git rm <file>
只删除本地git rm -f <file>
删除本地和缓存区git rm --cached <file>
只删除缓存区
通常配置好git之后,进入一个工程下,从初始化开始一般的操作流程包括:
git init
git add *.py # 只想git *.py文件
git commit -m 'commit content'
git status -s # 查看当前状态
如果没有配置好git,先通过如下进行配置:
git config --global yourname "yourname"
git config --global youremail "youremail"
# 不行就试试
git config --global user.name "yourname"
git config --global user.email "youremail"
tips:
- Git 修改已提交的commit注释
常用命令:git commit --amend
Git 分支管理
- git branch
git branch
列出本地的分支git branch newtest
手动创建一个分支
- git checkout
git checkout newtest
切换分支git checkout -b newtest
创建新分支并立即切换到该分支下
Git 查看提交历史
- git log
git log --oneline
--oneline 选项来查看历史记录的简洁的版本git log --pretty=oneline
查看历史记录的简洁的版本--reverse
逆向显示所有日志git log --author=Linus --oneline -5
找指定用户的提交日志- 还可以指定日期等,更详细参考:
git blame <file>
# 以列表形式查看指定文件的历史修改记录
Git 标签
如果你达到一个重要的阶段,并希望永远记住那个特别的提交快照,你可以使用 git tag 给它打上标签。
- git tag
git tag
查看所有标签git tag -a v1.0
-a 选项意为"创建一个带注解的标签"(执行完,Git 会打开你的编辑器,让你写一句标签注解,就像你给提交写注解一样。)。git log --decorate
可以看到标签git tag -a v0.9 85fc7e7
忘记了打标签也可以补上
Git 远程仓库(Github)
参考 菜鸟教程
-
先把密钥给加上
1.1 本地执行:ssh-keygen -t rsa -C "youremail@example.com"
1.2 github上ssh配置上加入 -
再创建或者clone一个远程git
2.1 创建 需要两步:- github上图形界面创建
- 用下面的命令把本地的仓库绑定到远程的仓库上
git remote add origin xxx.git # 还没有克隆现有仓库,并欲将你的仓库连接到某个远程服务器,可以使用如下命令添加 git push origin master # 把本地的推上去
可以指定一个简单的名字,以便将来引用,命令格式如下
git remote add [shortname] [url]
git push <远程主机名> <本地分支名>:<远程分支名>
2.2 clone:
git checkout master
git merge dev # 将dev分支的合并到master分支
git status -s
git push origin master # master分支的内容推送到origin上
其他实用操作
git commit之后想撤销"commit"
参考:
- https://blog.csdn.net/w958796636/article/details/53611133
- https://blog.csdn.net/tsq292978891/article/details/78965693
分为三种mixed
、soft
、hard
:
-
mixed
:git reset --mixed HEAD^
,不删除工作空间改动代码,撤销commit,并且撤销git add . 操作。这个为默认参数,git reset --mixed HEAD^
和git reset HEAD^
效果是一样的。HEAD^的意思是上一个版本,也可以写成HEAD~1
如果你进行了2次commit,想都撤回,可以使用HEAD~2 -
soft
:git reset --soft HEAD^
,不删除工作空间改动代码,撤销commit,不撤销git add .
-
hard
:git reset --hard HEAD^
,删除工作空间改动代码,撤销commit,撤销git add .
。注意完成这个操作后,就恢复到了上一次的commit状态。
通常使用时,用git reflog
找到要回退的版本的commit id,接着回退版本:git reset --hard a7e1d279
远程分支回滚相关操作【todo】
git从别的分支拷贝到本分支
git checkout cur_branch
git checkout master -- utils # 拷贝master分支的utils文件到本分支
git 分支文件比较
git diff branch1 branch2 --stat # 显示出所有有差异的文件列表
git diff branch1 branch2 文件名(带路径) # 显示指定文件的详细差异
git diff branch1 branch2 # 显示出所有有差异的文件的详细差异
删除分支
git branch -d <BranchName>