下载地址:https://registry.npmmirror.com/binary.html
https://registry.npmmirror.com/binary.html?path=git-for-windows/
卸载
1.清理环境变量
2.程序卸载
安装下一步,默认安装即可
Git Bash:Unix与Linux风格的命令行,使用最多,推荐最多
Git CMD:Windows风格的命令行
Git GUI:图形界面的Git,不建议初学者使用,尽量先熟悉常用命令Git 配置
git config --global user.name "duxiaowei"
git config --global user.email 529208215@qq.com
$ git config --global --list //全局配置
全局配置:D:\Git\install\Git\etc\gitconfig
用户配置:C:\Users\duxiaowei.gitconfig
工作区域
基本概念:(核心)
- 工作区:平时存放项目代码的地方。
- **暂存区(Stage/Index):**暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列 表信息
- **版本库:**又称本地仓库,这个不算工作区,而是 Git 的版本库,里面有你提交到所有版本的数据。
- 远程仓库:托管代码的服务器
在工作目录中添加,修改文件;
将需要进行版本管理的文件放入暂存区域; git add. // .表示所有文件
将暂存区域的文件提交到git仓库; git commit
因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)
Git项目搭建
-
创建一个全新的仓库,需要Git管理的项目的根目录
# 在当前目录新建一个Git代码库 $ git init
执行后会看到,仅仅项目目录多出一个.git目录,关于版本等信息都在这个目录
-
克隆远程仓库
# 克隆一个项目和他的整个代码历史(版本信息) $ git clone [url]
# 查看当前暂存区,文件状态 $ git status # 文件红色,Untracked,没被跟踪 $ git add . # 绿色了,会提示相应的文件,to be committed 没有被提交 $ git commit -m "xxxx" # 提交暂存区内容到本地仓库
忽略文件
有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件等
在主目录下建立”.gitignore”文件,此文件有如下规则:
- 忽略文件中的空行或以井号(#)开始的行将会被忽略。
- 可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号 ([abc])代表可选字符范围,大括号({string1,string2,…})代表可选的字符串等。
- 如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
- 如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不 忽略。
- 如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件 (默认文件或目录都忽略)。
#为注释*.txt #忽略所有 .txt结尾的文件!lib.txt #但lib.txt除外/temp #仅忽略项目根目录下的TODO文件,不包括其它目录tempbuild/ #忽略build/目录下的所有文件doc/*.txt #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
*.class
*.log
*.lock
# Package Files #
*.jar
*.war
*.ear
target/
# idea
.idea/
*.iml
*velocity.log*
### STS ###
.apt_generated
.factorypath
.springBeans
### IntelliJ IDEA ###
*.iml
*.ipr
*.iws
.idea
.classpath
.project
.settings/
bin/
*.log
tmp/
#rebel
*rebel.xml
使用码云gitee
注册账号,完善个人信息
建立跟码云之间的免密码认证
$ ssh-keygen -t rsa # 使用rsa加密方式,会生成两个文件
公钥:id_rsa.pub
将公钥放到码云,ssh公钥位置,保存,确定。
使用码云创建一个自己的仓库
然后可以克隆一个到本地
IDEA集成Git
-
新建项目,绑定git
- 将我们远程的git文件目录拷贝到项目中即可!里面有隐藏文件夹.git会产生钩子关联上
- 注意观察idea中项目变化
- 可以使用Terminal,命令行
- 可以使用左下角Version Control跟右上角拉去、提交
- 可以单独选中文件右键,有个git操作栏
-
修改文件,使用idea操作git
- 添加到暂存区
- commit提交
- git push
- 使用左下角Version Control查看
Git分支
列出所有本地分支
$ git branch
列出所有远程分支
$ git branch -r
列出所有本地分支和远程分支
$ git branch -a
新建一个分支,但依然停留在当前分支
$ git branch [branch-name]
新建一个分支,并切换到该分支
$ git checkout -b [branch]
新建一个分支,指向指定commit
$ git branch [branch] [commit]
新建一个分支,与指定的远程分支建立追踪关系
$ git branch —track [branch] [remote-branch]
切换到指定分支,并更新工作区
$ git checkout [branch-name]
切换到上一个分支
$ git checkout -
建立追踪关系,在现有分支与指定的远程分支之间
$ git branch —set-upstream [branch] [remote-branch]
合并指定分支到当前分支
$ git merge [branch]
选择一个commit,合并进当前分支
$ git cherry-pick [commit]
删除分支
$ git branch -d [branch-name]
删除远程分支
$ git push origin —delete [branch-name]
$ git branch -dr [remote/branch]
查看信息
显示有变更的文件
$ git status
显示当前分支的版本历史
$ git log
显示commit历史,以及每次commit发生变更的文件
$ git log —stat
搜索提交历史,根据关键词
$ git log -S [keyword]
显示某个commit之后的所有变动,每个commit占据一行
$ git log [tag] HEAD —pretty=format:%s
显示某个commit之后的所有变动,其”提交说明”必须符合搜索条件
$ git log [tag] HEAD —grep feature
显示某个文件的版本历史,包括文件改名
$ git log —follow [file]
$ git whatchanged [file]
显示指定文件相关的每一次diff
$ git log -p [file]
显示过去5次提交
$ git log -5 —pretty —oneline
显示所有提交过的用户,按提交次数排序
$ git shortlog -sn
显示指定文件是什么人在什么时间修改过
$ git blame [file]
显示暂存区和工作区的差异
$ git diff
显示暂存区和上一个commit的差异
$ git diff —cached [file]
显示工作区与当前分支最新commit之间的差异
$ git diff HEAD
显示两次提交之间的差异
$ git diff [first-branch]…[second-branch]
显示今天你写了多少行代码
$ git diff —shortstat “@{0 day ago}”
显示某次提交的元数据和内容变化
$ git show [commit]
显示某次提交发生变化的文件
$ git show —name-only [commit]
显示某次提交时,某个文件的内容
$ git show [commit]:[filename]
显示当前分支的最近几次提交
$ git reflog