基本操作入门
基本操作流程
- 在对代码进行了一些修改之后,使用:
git add --all将本地所有新增文件和修改内容添加到暂存区。 - 使用:
git commit -m 备注将代码提交到本地版本库。(备注内容没有空格的话不需要加引号) - 使用:
git pull origin从服务器拉取代码,更新本地版本库。 - 使用:
git push origin将本地版本库推送到服务器。
克隆与配置
克隆版本库
git clone https://github.com/xaoxuu/AXKit.git |
配置版本库
要忽略某些文件的改动需要配置 .gitignore 文件:
# 这是macOS文件夹属性的隐藏文件,不需要同步到git |
基本操作指令
创建与切换分支
创建并切换 branchgit checkout -b 分支名 |
查看分支和标签
查看本地 taggit tag |
删除分支和标签
删除本地 branch / taggit branch -d 分支名或标签名 |
推送分支和标签
推送某个 branch / taggit push origin 分支名或标签名 |
重命名分支
重命名本地分支:
git branch -m 旧分支名 新分支名 |
重命名远程分支:
- 删除远程分支
- 重命名本地分支
- 推送本地分支
拉取、合并分支
拉取某个远程标签
git fetch origin tag 远程标签名 |
合并某本地分支到当前分支
git merge 分支名 |
合并某远程分支到当前分支
git pull origin 远程分支名 |
merge 和 rebase
简单的说:用 rebase 方式合并的分支会合并成一条直线,而 merge 方式合并会记录合并操作。
合并前:
使用 merge 进行合并:
使用 rebase 进行合并:
代码冲突
我一般使用 Tower 客户端操作,pull 之后有冲突的文件会列出来。建议使用一个比较好的编辑器,有冲突的部分会用两种颜色高亮。
未完待续
代码回退
如果冲突文件没有妥善解决就提交到版本库导致严重后果,这是需要查看某个历史时刻的代码,使用:
git log |
然后 copy 某个 commit id 进行回退,回退的类型有两种:
soft
这是默认的回退方式,版本库的 HEAD 回滚到某个 commit 但本地代码不变,处于未 commit 的状态。
git reset [commit id] |
hard
HEAD 和本地代码都回到某个 commit,后面的更改将会被丢弃。(如同时光穿梭)
git reset --hard [commit id] |
版本迭代
查看本地所有标签
git tag |
把当前 HEAD 打个标签(名为:1.0)
git tag 1.0 |
切换到某个标签(1.0)
git checkout 1.0 |
把标签 push 到远程
push指定的taggit push origin 1.0 |
删除标签(1.0)
# 删除本地tag |
客户端操作
Stash
- save:将当前未 commit 的代码保存到 stash,并且回到上次 commit 的状态。
- apply:应用某个 stash 的代码。
Git-Flow
自动化管理功能,例如:
- 准备开发新版本的时候:点击 Start Release,客户端会自动新建一个 release 分支。
- 准备增加一个新特性的时候:点击 Start Feature,客户端会新建一个 feature 分支。
- 需要修复 bug 的时候:点击 Start Hotfix,客户端会新建一个 fix 分支。
- 当修复完 bug,点击 Finish Hotfix 的时候,客户端会自动把 fix 分支合并到创建它的分支,并且创建一个 tag。
- 当一个新特性开发完成,点击 Finish Feature 的时候,客户端会自动把 feature 分支合并到创建它的分支,并且创建一个 tag。
- 当一个新版本开发完成,点击 Finish Release 的时候,客户端会自动把 release 分支合并到创建它的分支,并且创建一个 tag。