1 安装Git
Windows
可以从官网下载,若速度太慢,从百度网盘中下载。
下载与系统相对应的版本,按默认配置安装即可。
2 安装后配置
2.1 打开git安装目录下的git-bash.exe,使用命令配置全局的用户名与邮箱。
1 2
| $ git config --global user.name "YourName" $ git config --global user.email "YourEmail"
|
2.2 通过ssh获取私有的远程仓库。
生成rsa加密用的私钥与公钥,按默认配置生成即可,windows下生成的文件在 C:\Users\{{ 你的用户名 }}\.ssh
目录下,id_rsa为私钥,不可泄露,id_rsa.pub为对外公开的公钥
1
| $ ssh-keygen -t rsa -C "YourEmail"
|
查看公钥的内容,复制,添加到远程仓库的ssh配置中。例如git@osc的Key配置页面。
添加完成后进行测试:
1
| $ ssh -T git@git.oschina.net
|
若提示:
1
| Welcome to Git@OSC, Astian!
|
说明ssh配置成功。
复制需要克隆到本地的项目的ssh链接,用以下命令即可进行克隆:
1
| $ git clone git@git.oschina.net:hsinan/FZBike.git
|
3 commit的步骤
对代码进行修改测试完毕后要及时commit到仓库中,具体流程如下:
3.1 查询状态,可以看出哪些文件发生变化
3.2 若对变化有疑问,可用diff命令对比文件具体的变化
3.3 确认无误后,先用add命令添加文件,再commit实现提交
1 2 3 4
| $ git add index.html $ git commit -m "修改主页的提示" $ git push
|
4 时光机穿梭
4.1 版本回退与切换
1 2
| $ git reset --hard commit_id
|
4.2 撤销修改
1 2
| $ git checkout -- file $ git reset HEAD file
|
4.3 删除文件
在工作区删除文件后,若为误删,可以从版本库中进行恢复
1
| $ git checkout -- test.txt
|
若确实要从项目中删除,需用git rm命令:
1 2
| $ git rm 'test.txt' $ git commit -m "remove text.txt again"
|
5 远程仓库
5.1 将本地项目推送到远程仓库
1 2 3 4 5
| $ git remote add origin git@git.oschina.net:hsinan/learngit.git
$ git push -u origin master $ git push origin master
|
5.2 克隆远程仓库
1 2 3 4
| $ git clone git@git.oschina.net:hsinan/learngit.git
$ git clone https://git.oschina.net/hsinan/learngit.git
|
6 分支管理
git创建分支与切换分支非常快,当你需要开发一个大版本功能,无法在短时间内开发完成但是又想commit以防止本地代码丢失的时候,可以创建分支放心开发,开放完毕后再合并到master中
6.1 分支的创建与合并
1 2 3 4 5 6 7
| $ git branch $ git branch dev $ git checkout dev $ git checkout -b dev
$ git merge dev $ git branch -d dev
|
6.2 解决冲突
当要提交的代码在不同分支中存在冲突时,需要先合并有冲突的文件,再手动解决冲突,最后才能成功提交
1 2
| $ git merge dev $ git status
|
打开文件,可以发现如下格式的内容:
1 2 3 4 5
| <<<<<<< HEAD Creating a new branch is quick & simple. ======= Creating a new branch is quick AND simple. >>>>>>> dev
|
以上内容即为有冲突的部分,手动修改后即可成功提交。
当本地仓库与远程仓库中的代码有冲突时,直接push会报错,需要先pull下远程仓库的代码,git会对有冲突的部分进行合并,之后在本地仓库中手动修改冲突部分,最后add-commit-push。
6.3 分支策略管理
开发中要多利用分支,master作为主分支应该是要非常稳定的,不应该直接修改master。
而是建立个dev分支,以及开发者自己的分支,开发者在各自的分支上开发完毕后再合并到dev中进行测试,没问题后才合并到master中进行发布。
1 2 3
| $ git merge --no-ff -m "merge with no-ff" dev $ git log --graph --pretty=oneline --abbrev-commit
|
在修复bug时,也建议创建一个分支。例如“issue-101”,修复完毕后再合并回去。
在修复前若手上的开发工作进行到一半,无法提交但是又必须提前解决bug,那么可以用stash功能将当前的分支暂存起来:
1 2 3 4
| $ git stash $ git stash list $ git stash apply $ git stash pop
|
6.4 多人协作
将需进行协作的人的公钥添加到远程仓库的ssh设置中,他便能一起开发项目了
1 2 3 4
| $ git clone https://git.oschina.net/hsinan/learngit.git
$ git checkout -b dev origin/dev
|
多人协作的工作模式通常是这样:
首先,可以试图用git push origin branch-name
推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull
试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin branch-name
推送就能成功!
如果git pull
提示“no tracking information
”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch –set-upstream branch-name origin/branch-name
。
7 标签管理
git可以对当前的版本创建自定义的标签,方便版本管理
7.1 创建标签
1 2 3 4
| $ git tag v0.2 $ git tag v0.1 026d4b5 $ git tag -a v0.1 -m "version 0.1 released" 026d4b5 $ git show v0.1
|
7.2 操作标签##
1 2 3 4
| $ git push origin v0.1 $ git push origin --tags $ git tag -d v0.01 $ git push origin :refs/tags/v0.01
|
8 自定义git
8.1 忽略特殊文件
通过在仓库根目录下添加”.gitignore”文件来实现,常见的配置文件可到github中下载。
1 2
| $ git add -f App.class $ git check-ignore -v App.class
|
8.2 设置别名
将常用的命令设置成别名来快速使用
1 2
| $ git config --global alias.lg "log --graph --pretty=oneline --abbrev-commit" $ git config --global alias.cm "commit -m"
|