前言
Git学习记录
Git 工具更新
1 2
| git --version git update-git-for-windows
|
Git config
- 配置config
配置git个人信息和生成ssh密钥
打开git bash
,输入
1 2 3 4
| git config --list git config --global user.name "JUNO" git config --global user.email "JUNOYAPIPI@gmail.com" ssh-keygen -t rsa -C "JUNOYAPIPI@gmail.com"
|
- 然后在GitHub导入SSH密匙(C:\Users\JUNO.ssh\id_rsa.pub)
- 文件名过长错误
1
| git config --system core.longpaths true
|
- 禁止git自动将lf转换成crlf
1
| git config --global core.autocrlf false
|
- 提交时转换为LF,检出时不转换
1
| git config --global core.autocrlf input
|
- 拒绝提交包含混合换行符的文件
1
| git config --global core.safecrlf true
|
Git绑定远程仓库
1
| git remote add origin https://github.com/junonin/junonin.github.io.git
|
然后查看是否绑定成功
注:删除远程仓库github(github是仓库名称)
Git pull
git pull
命令的作用是:取回远程主机某个分支的更新,再与本地的指定分支合并。
1
| git pull = git fetch + git merge
|
基本用法:
1
| git pull <远程主机名> <远程分支名>:<本地分支名>
|
例如:
1
| git pull origin master:local
|
将远程主机origin的master分支抓到本地,并和本地local分支合并
将远程主机origin的master分支抓到本地,并和本地当前分支合并
与pull相比fetch用法为:
1 2
| git fetch origin master:local git merge local
|
相比起来git fetch
更安全一些,因为再merge前,我们可以查看更新的情况,决定是否合并分支
Git push
git push
命令的作用是:将本地版本库的分支推送到远程服务器上对应的分支。
基本用法:
1
| git push <远程主机名> <本地分支名>:<远程分支名>
|
例如:
如果当前分支只有一个远程分支,那么主机名都可以省略,形如 git push,可以使用git branch -r
,查看远程的分支名
如果当前分支与远程分支存在追踪关系,则本地分支和远程分支都可以省略,将当前分支推送到origin主机的对应分支
如果远程分支被省略,如上则表示将本地分支推送到与之存在追踪关系的远程分支(通常两者同名),如果该远程分支不存在,则会被新建
1
| git push origin :refs/for/master
|
如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支,等同于
1
| git push origin –delete master
|
Git status
git status
命令用于显示当前Git仓库的状态
工作树和仓库在被操作的过程中,状态会不断发生变化。在Git操作过程中时常用git status
命令查看当前状态
文件前面会有相关符号,符号说明如下:
??:新添加文件,还未跟踪
A:新添加到暂存区中的文件
出现在右边的M:修改过的文件,还没有添加到暂存区中
出现在左边的M:修改过的文件,已经放入暂存区了
MM:被放入暂存区之后又被修改了
Git add
git add
命令后面可以跟:
- 单个或多个文件名
- 如果是目录,git add将递归地跟踪该目录下的所有文件
- 代表所有文件
- 或者其他通配符
git add可以再次更新暂存区中的内容
Git diff
git diff
命令可以查看工作树、暂存区、最新提交(版本库)之间的差别:
git diff
:没添加其它选项,默认查看工作树与暂存区之间的差别
git diff --cached/--staged
:对比暂存区和版本库之间的差别
git diff HEAD
:HEAD是指当前分支中最新一次提交的指针,因此是用来查看工作树和版本库之间的差别
Git commit
1 2
| git add missed-file // missed-file 为遗漏提交文件 git commit --amend --no-edit
|
--no-edit
表示提交消息不会更改,在 git 上仅为一次提交
- Git提供了一个跳过使用暂存区域的方式,只要在提交的时候,给
git commit
加上-a
选项,Git就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过git add
步骤。
Git rm
git rm
支持如下的选项:
-n
,--dry-run
:演习
-q
,--quiet
:不列出删除的文件
--cached
:只从索引区删除,本地的文件还存在
-f
,--force
:忽略文件更新状态检查
-r
:允许递归删除
--ignore-unmatch
:即使没有匹配,也以零状态退出
Git clone
1 2 3 4 5 6 7 8 9 10 11 12 13
| git clone https://github.com/Junonin/BlogBackup.git git clone git@github.com:Junonin/BlogBackup.git
git clone -b master https://github.com/Junonin/BlogBackup.git git clone -b git_仓库_分支 --single-branch git_仓库_url git clone -b master --single-branch https://github.com/Junonin/BlogBackup.git
git clone --depth=10 https://github.com/Junonin/BlogBackup.git
|
git clone
克隆:
git clone git_仓库_url
获取全部branch内容,整体下载时间较长 & 所占磁盘空间较大。
git clone -b git_分支名称 git_仓库_url
根上述 1. 结果一致
git clone -b git_分支名称 --single--branch git_仓库_url
获取指定分支的代码
git clone --depth 10 git_仓库_url
只会获取最近 xx(10条提交记录的)代码,默认是master分支, 如果想要指定分支,可以结合 -b --single--branch
使用!
Git reset
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| git reset –-soft git reset -–hard
git reset HEAD <文件名>
git reset --hard commit_id
git reset --hard HEAD~1
git reset --soft HEAD~1
|
Git stash
stash命令可用于临时保存和回复修改,可跨分支。
注:在未add之前才能执行stash!!!!
1 2 3 4 5 6 7 8 9 10 11 12
| git stash [save message]
git stash list
git stash pop stash@{num}
git stash apply stash@{num}
git stash drop stash@{num}
git stash clear
|