git 配置
查看全局配置
git config --global --list
更改全局配置
git config --global user.name "ivan.ge"
git config --global user.email "ivange@163.com"
git工作区域
git的本地有三个工作区域:工作目录、暂存区、本地仓库,一个远程工作区域:远程仓库
git文件状态
- Untracked 未跟踪。没有加入到git库,通过git add变为staged。
- Unmodify 文件入库,未修改。更改文件会变成Modified,使用git rm会变成Untracked
- Modified 文件修改。通过git add 变成staged,使用git checkout 丢弃修改变成Unmodify
- Staged 暂存状态。通过git commit同步到本地库,变成Unmodify状态,执行git reset HEAD filename 曲线暂存,变成Modified
git忽略文件设置
在主目录下建立.gitignore文件,规则为
- #为注释
- 可以使用通配符,*代表任意多个字符,?代表一个字符,[]代表可选字符范围
- !代表不被忽略
- 名称前面用/,代表忽略与当前目录同等级的其他目录
- 名称后面用/,代表忽略当前目录的子目录
使用SSH
- 设置本机绑定SSH公钥,实现免密码登录
# 生成公钥
ssh-keygen
默认会在默认是 .ssh
目录中生成id_rsa
和id_rsa.pub
两个文件,其中.pub
是你的公钥,另一个是对应的私钥。
-
将公钥粘贴到远程仓库的SSH Key处。
-
将远程仓库与本地联系起来
# 要用ssh的方式下载,不要用http方式
git clone git@github.com:ivan-ge677/MachineLearning.git
常用命令
初始化git仓库
git init
从远程仓库中克隆
git clone [url/ssh]
查看仓库状态
git status
添加到暂存区中
git add <filename>
git add .
提交到本地仓库
git commit -m <message>
提交到远程仓库
git push
查看日志
git log
#日志单行显示
git log --pretty=oneline git log --oneline
#显示版本移动需要的步数
git reflog
版本前进后退
# 使用索引值操作
git reset --hard <索引值>
# 使用^,表示后退一步
git reset --hard HEAD^
# 使用~,表示后退n步
git reset --hard HEAD~n
# 使用soft参数,只在本地仓库移动HEAD指针,
git reset --soft <索引值>
# 使用mixed参数,在本地仓库移动HEAD指针,并重置暂存区
git reset --mixed <索引值>
# 代码添加到暂存区,未提交到本地库时想进行回滚
git reset --hard HEAD
比较文件差异
# 与暂存区版本进行比较
git diff <filename>
# 与仓库版本进行比较
git diff HEAD <filename>
git分支
列出所有本地分支
git branch -v
列出所有远程分支
git branch -r
新建一个分支,但依然停留在当前分支
git branch [branch-name]
切换分支
git checkout [branch]
新建一个分支,并切换到该分支
git checkout -b [branch]
合并指定分支到当前分支
git merge [branch]
当两个分支对同一个文件的同一处都进行了修改,合并的时候会发生冲突
-
打开该文件,对冲突内容进行修改,然后add 、commit
-
放弃合并,现在原来的两个分支修改好再重新合并
-
git commit --abort
git 远程仓库
为远程仓库添加别名origin
git remote add origin <远程地址>
查看远程仓库
git remote -v
推送到远程仓库
git push origin master
将远程库克隆到本地(克隆之后,会将仓库的别名origin也添加好)
git clone <远程地址>
拉取远程仓库
git fetch origin master
git merge origin/master
# 等价于
git pull origin master