1. Git配置
- 安装Git:https://git-scm.com/
- 本地命令行生成密钥绑定GitHub账号
1 2 3 4 5 6 7 8
| ssh-keygen -t rsa -C "youremail@example.com"
cat ~/.ssh/id_rsa.pub
ssh -T git@github.com
|
3. 配置用户名和邮箱信息:
1 2 3 4 5 6 7 8 9 10 11 12 13
| git config --list
git config --global user.name "你的名字" git config --global user.email "你的邮箱"
git config --local user.name "你的名字" git config --local user.email "你的邮箱"
|
2. Git基本概念
- 本地仓库:本地仓库上存放所有相关的文件,具体可分为工作区、暂存区和仓库区,工作区即项目文件夹下不包含
.git
文件夹的所有文件,暂存区和仓库区则在.git
文件夹下
- 工作区:即我们工作的文件夹,在里面进行文件的增删改操作
- 暂存区:临时保存工作区上的改动,通过
git add
操作将工作区的修改同步到暂存区
- 仓库区:当执行
git commit
操作时,将暂存区上的所有变动同步到本地仓库
- 远程仓库:GitHub/GitLab上保存的仓库,通过
git push
将本地仓库同步到远程仓库,也可以通过git fetch/pull
将远程仓库同步到本地仓库
3. Git基本操作
创建版本库
创建版本库有两种方式,一种是将本地的文件夹直接变成一个git仓库,另一种是直接将远程的仓库克隆到本地
1 2
| git init git clone <url>
|
修改与提交操作
1 2 3 4 5
| git add <file> git add . git commit -m "messenge" git status git diff
|
远程操作
1 2 3 4 5 6
| git push origin master git pull git fetch
git remote add origin <url> git remote -v
|
撤销与回退操作
撤销操作:当修改了工作区/暂存区的文件,但是还没有commit时,想要撤销之前的操作:
1 2 3 4 5 6 7 8 9
| git checkout <file>
git reset HEAD <file> git checkout <file>
git reset --hard HEAD
|
回退操作:当已经进行了commit操作,需要回退到之前的版本:
1 2 3 4 5
| git reset --hard HEAD^ git reset --hard HEAD~n git reset --hard HEAD commitid git reset --soft HEAD commitid git reset --mixed(默认) HEAD commitid
|
关于reset三种模式的说明:
4. Git分支管理
git的最强大之处就在于分支管理了,具体有两种应用场景:
- 多人协作:每个人都基于主分支创建一个自己的分支,在分支上进行开发,然后再不断将写好的代码合并到主分支
- 自己修复bug/增加feature:创建一个bug分支或者feature分支,写好代码后合并到自己的分支然后删除bug/feature分支
1 2 3 4 5 6
| git branch <name> git checkout <name> git checkout -b <name> git merge <name> git branch -a git branch -d <name>
|
5. Git多人协作
多人协作在同一个分支上进行开发的工作模式:
- 首先,可以试图用
git push origin <branch-name>
推送自己的修改;
- 如果推送失败,则因为远程分支比你的本地更新,需要先用
git pull
试图合并;
- 如果合并有冲突,则解决冲突,并在本地提交;
- 没有冲突或者解决掉冲突后,再用
git push origin <branch-name>
推送就能成功!
- 如果
git pull
提示no tracking information
,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>
。
6. Git分支重命名
1
| git branch -m new_branch_name
|
1
| git branch -m old_branch_name new_branch_name
|
如果是已经推送到远端,应该怎么做呢?
重命名远端分支(假设是在当前分支,并且远端分支与本地分支名是一致的)
1
| git branch -m new_branch_name
|
1
| git push --delete origin old_branch_name
|
1
| git push origin new_branch_name
|
1
| git branch --set-upstream-to origin/new_branch_name
|
7. 参考
- Git教程 |
菜鸟教程
- Git教程 -
廖雪峰的官方网站