Git学习
Git是目前世界上最先进的分布式版本控制系统(没有之一)。
本篇记录我学习Git的过程。
安装Git
创建版本库
版本库:repository
在文件夹里右键点击Git Bash Here
- 初始化Git仓库
1 | git init |
- 添加文件到Git仓库
1 | git add <file> |
- eg
1 | git init |
git add可以添加多个文件:
1 | git add test1.txt test2.txt |
.表示当前目录下所有文件,故可以这么写
1 | git add . |
时光机穿梭
版本回退
HEAD
指向的版本就是当前版本,Git允许在版本的历史之间穿梭,使用1
git reset --hard commit_id
上一个版本是HEAD^,上两个版本就是HEAD^^,上一百个版本就是HEAD~100
1
git reset --hard HEAD^
穿梭前用
git log
可以查看提交历史,以便确定要回退到哪个版本。要重返未来,用
git reflog
查看命令历史,以便确定要回到未来的哪个版本。
工作区(working directory)、版本库(Repository)、暂存区(stage)
用
git add
把文件添加进去,实际上就是把文件修改添加到暂存区;用
git commit
提交更改,实际上就是把暂存区的所有内容提交到当前分支。使用
git status
查看状态。
管理修改
撤销修改
- 当改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令
git checkout -- file
。 - 当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令
git reset HEAD <file>
,就把暂存区文件退回工作区,再使git chectout -- file
。 - 已经提交了不合适的修改到版本库时,想要撤销本次提交,使用版本回退。不过前提是没有推送到远程库。
- 当改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令
删除文件
删除工作区某个文件,直接在文件管理器删除或
rm test.txt
此时版本库和工作区不一致,若要删除版本库中该文件,则用
git rm file
,然后git commit
如果工作区文件删错了需要恢复,使用
git chectout -- file
git chectout
是用版本库中的版本替换工作区的版本。
远程仓库
添加远程库(先有本地库后有远程库)
先链接SSH,
ssh-keygen -t rsa -C "youreamil@example.com"
,然后一路回车,找到id_ras.pub文件,复制里面的Key添加到github/gitee。- 关联远程库:
git remote add origin git@server-name:path/repo-name.git
- 关联后,使用
git push -u origin master
第一次推送master分支的所有内容 - 此后每次推送均使用
git push origin master
- 关联远程库:
从远程库克隆(从零开发,先创建远程库,再克隆到本地)
- 创建远程库,勾选
Initialize this repository with a README
,自动创建README.md文件 git clone git@server-name:path/repo-name.git
,此方式通过SSH(速度最快),也可以使用Https协议,但速度较慢:git clone https://github.com/server-name/repo-name.git
- 创建远程库,勾选
分支管理
- 创建与合并分支
- 查看分支:
git branch
- 创建分支:
git branch <name>
- 切换分支:
git switch <name>
- 创建+切换分支:
git switch -c <name>
- 合并某分支到当前分支:
git merge <name>
- 删除分支:
git branch -d <name>
- 查看分支:
- 解决冲突:把Git合并失败的文件手动编辑为我们希望的内容,再提交。
- 分支管理策略
- Bug分支
- Feature分支
- 多人协作
- Rebase
标签管理
创建标签
- 命令
git tag <tagname>
用于新建一个标签,默认为HEAD
,也可以指定一个commit id; - 命令
git tag -a <tagname> -m "blablabla..."
可以指定标签信息; - 命令
git tag
可以查看所有标签。
查看历史提交的commit id:
git log --pretty=oneline --abbrev-commit
- 命令
操作标签
- 命令
git push origin <tagname>
可以推送一个本地标签; - 命令
git push origin --tags
可以推送全部未推送过的本地标签; - 命令
git tag -d <tagname>
可以删除一个本地标签; - 命令
git push origin :refs/tags/<tagname>
可以删除一个远程标签。
- 命令
Sourcetree
可视化软件
基本步骤
创建远程库
克隆远程库到本地
git clone git@server-name:path/repo-name.git
或git clone https://github.com/server-name/repo-name.git
修改工作区文件,添加到暂存区,添加到本地库
1
2git add .
git commit -m "message"推送到远程库
1
git push origin master