git基本操作 git高级操作 git配置ssh
- 2018-11-12 22:08:00
- admin
- 原创 2313
一、git基本操作
下载:https://gitforwindows.org/,https://tortoisegit.org/download/
运行:目录右键点击Git Bash Here
配置用户:需要替换成你自己的git账户
git config --global user.name xiangfeineng
git config --global user.email xiangfeineng@163.com
git config --list
查看和修改远程地址:
git remote -v
git remote set-url origin git@url:xxx/xxx.git
克隆和提交项目:
git clone https://github.com/xiangfeineng/test.git
cd test
touch readme.txt
git add readme.txt
git commit -m "my commit",提交到本地
git commit --amend -m "my commit",修改上次提交
git push origin master,提交到远程
分支仅仅是一个指针,HEAD指向当前工作分支,提交对象包含提交快照:
git branch,显示本地分支
git branch -a,显示本地和远程分支
git branch name,创建分支
git branch -d name,删除分支
git checkout name,切换分支
git push origin name,提交分支
忽略规则:
1、#开头为注释;
2、*.c,忽略当前目录和子目录下所有特定后缀的文件或目录;
3、/do,只忽略此目录下的do文件或目录;
4、do/,忽略do目录下的所有文件,如果do是文件则不忽略;
5、!allow.c,不忽略文件,一个文件跑忽略规则,最后一条规则是不忽略则该文件不忽略;
6、doc/*.txt,只忽略doc/*.txt,不忽略doc/*/*.txt;
标签指向一个提交对象:
查看tag列表:git tag
查看tag详情:git show v1.0
新建tag:git tag v1.0,标签不带创建时间,且不带注释,一般代表临时版本;
新建tag:git tag v1.0 -m "my comment",标签带创建时间,且带注释,一般代表发布版本;
新建特定版本tag:git tag v1.0 f1f2f3f4 -m "my comment",f1f2f3f4可以替换成其他版本;
提交特定tag:git push origin v1.0
提交所有tag:git push origin --tags
删除本地tag:git tag -d v1.0
删除远程tag:git push origin --delete v1.0
同步远程删除的分支和tag:git fetch --prune --prune-tags,新建的分支不会被删除,新建的tag会被删除;
获取指定tag的代码:git fetch origin tag v1.0
二、git高级操作
1、工作区域分为:工作区、暂存区、本地仓库、远程仓库;
2、工作区是本地文件,暂存区是当前分支所有文件哈希记录,本地仓库是隐藏的git目录;
3、HEAD指向本地仓库当前分支最新位置,detached HEAD指向一个提交,不是指向一个分支;
4、FETCH_HEAD指向某个分支上次从远程仓库获取的最新位置,fetch命令更新此引用;
5、ORIG_HEAD指向上次危险操作之前的HEAD,用于异常操作恢复;
6、untrack操作用于取消跟踪已经上传到分支的文件,操作本质是删除暂存区文件的索引;
7、代码比对可以使用官网的Compare工具,源版本需要比目标版本更新,版本可以使用哈希值;
8、支持通过History查看单个文件的历史记录,支持通过Blame查看单个文件的修改构成;
显示版本记录:
1、rev-list中文支持更好,必须指定版本信息;
2、log显示信息更丰富,可选指定版本信息;
3、祖先版本:commit~是父版本,commit~n是第n代祖先版本;
4、版本区间:commit=(,commit],commit1..commit2=(commit1,commit2];
5、git rev-list --oneline head~3..head
6、git log --oneline -10
回滚单个文件:
1、仅回滚工作区的修改:git checkout [commit] <file>,git restore <file>
2、仅回滚暂存区的修改:git reset <file>,git restore --staged <file>
3、checkout支持回滚单个文件到任意历史版本;
回滚整个分支:
1、reset回滚会删除提交记录,根据实际需要决定是否备份分支;
2、reflog保留本地仓库操作记录,可以紧急找回丢失的提交记录;
3、reflog不保留在远程仓库,并且保留时间存在限制;
4、git reset --hard resetVersionHash
5、git push -f origin currentBranch
回滚整个分支并保留提交记录:
1、回滚参数说明:-n不提交到本地仓库,多个提交的回滚生成一条回滚记录;
2、回滚参数说明:--no-edit不编辑回滚消息,每个提交的回滚都会生成一条回滚记录;
3、回滚最近两次提交:git revert --no-edit head head~1
4、回滚最近两次提交:git revert --no-edit head~2..head
合并提交记录:
1、rebase子命令:pick保留提交,squash合并到前一个提交;
2、合并最近两次提交记录:git rebase -i head~2
三、git配置ssh
1、生成rsa公私钥:ssh-keygen -t rsa
2、PuTTYgen转换公私钥为ppk格式,ppk全称是putty private key,TortoiseGit只支持这种格式私钥;
3、GitHub配置公钥,Pageant配置私钥,Pageant设置成自动启动和自动加载私钥;
4、使用TortoiseGit克隆项目;