1.下载git并安装
https://git-scm.com/downloads
安装完git后,在任意文件夹下右键,会出现“Git Bash Here”,即表示安装成功。
2.配置git
打开Git Bash,添加用户名和邮箱(自己名字拼音):
$ git config --global user.name “zhangshan”
$ git config --global user.email “zhangshan@qq.com”
$ git config --global core.autocrlf false
$ ssh-keygen -t rsa -C “zhangshan@qq.com”
然后按三次回车
3.复制key
生成的key存在于目录 ~/.ssh,
4.查看并复制id_rsa.pub里的全部内容
4.配置key
登录服务器192.168.1.xx 用户名:admin(自己的名字拼音哦) 密码:12345678。第一次登进去会重设密码。我们还有一个mail:zhangshan@qq.com(这里也是自己名字拼音),用于提交代码。
然后如下图添加上面复制的key字串
将上面复制的字符串粘贴到key框内。Title写自己名字,点击add key即可。
5.点击helloworld
与服务器连接已完成,现在可以愉快的在本地工作啦。
一、正常工作流程是酱紫的:
- 先新建一个存放代码的文件夹,比如叫git,在git文件夹里面右击,选择git bash.
把远程项目克隆到本地。
命令:$ git clone git@192.168.1.xx:root/hellword.git
你会在git文件夹里看到hellword文件夹。这个就是克隆下来的远程项目。
注意:第一次clone的时候会出现“The authenticity of host ‘192.168.1.xx (192.168.1.xx)’ can’t be established“的提示,输入yes,以后clone不会再出现。
2. 进入该项目工作
为了更清晰的了解工作流程,首先我们来讲讲git的工作机制。
打开我们的项目文件,是不是下面这样子的?
.git里面是版本库。其余a,aa,helloworld.md,test2.md都是我们的代码,就是工作区啦。
看下图,版本库里面还有一个暂存区stage,我们在工作区修改代码,git add提交到暂存区stage,git commit提交到当前master分支。
大致明白git的机制了。我们要开始工作啦。3.
3. $ cd hellword/ //切换到工作路径
4. 你可以在工作区生成文件,也可以直接修改存在的文件。但是注意,不要在主分支下面工作啦,安全考虑,如果你出错了,不会影响主分支,如果你硬要,也是可以的。以添加一个文件为例:
5. $ git checkout -b dev //先创建分支dev并切换到该分支。Checkout是切换分支,加-b是新建分支,并切换。
6. $ touch aa //生成文件aa
7. $ git add aa //把a文件添加到暂存区。
8. $ git commit aa -m “first commit aa” //将改动提交到dev分支。
9. $ git checkout master //如果你确定你的工作完成了,想把改动提交到服务器,那么就要将dev分支合并到master分支啦。先切换到master分支。
10. $ git merge dev //合并dev分支,这时候你的改动就提交到master分支啦
11. $ git push -u origin master //把本地仓库改动push到远程仓库,这样你的改动就提交到服务器了啦。这里origin指的是远程仓库,master指的是本地主分支,当然你也可以push dev分支,把master改成dev即可。不过我们组只推master。
11. $ git branch -d dev //dev的任务已完成,删除。你可以用git branch查看当前存在分支
整个提交过程如此啦。当然,事情并没有这么简单,很多时候push是不会这么轻易成功的。如果主分支已经让别人更新了,你还没有同步,你push就不会成功。
12.$ git pull //将本地主分支和远程分支同步,这样你就会把最新的代码copy到本地.
然后再按上面的方式push就好啦。
所以,我们每天上班的第一件事就是git pull,同步远程仓库咯。
二、出错了怎么办?
1.如果你想看看时刻掌握仓库动态,用git status.
上面的信息有:1.当前分支与远程主分支是同步的 2.你改变了aa这个文件,但是还没有提交。
add 和 commit之后再看git status。
你没有要提交的啦,但是你只提交到本地了,还没有同步到远程。所以你的分支是一次提交ahead of ‘origin/master’ 。是不是很清楚?
2.如果你想看看你对aa文件修改了啥,用git diff aa。前提是你还没有提交哦。
3.如果你想看看提版本管理信息,用git log。只显示简单的一行信息用$ git log --pretty=oneline
长串数字是版本号(commit id),后面是我们commit是提交的信息。HEAD表示当前版本,HEAD表示上一版本,HEAD^表示上上版本。HEAD~100表示上100个版本。
神奇的版本回退来啦。git reset --hard HEAD^ 回退到上一版本
git reset –hard + commit id就是回到该版本。
你回退之后,就没有当前版本了。万一你后悔了怎么办,又想回到之前版本?只要找到之前版本的id就可以啦。怎么找?git reflog查看历史命令,就可以找到id啦。
3. 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,那就是2里面的版本回退。
4.从工作区删除文件rm file,从版本库删除文件 git rm file。如果后悔了怎么办?只是rm file,你可以使用git checkout – file.把版本库的file就会恢复到工作区,如果你是git rm file,版本库已经没有这个文件了,怎么办?你可以版本回退呀,先git reset --hard HEAD^ 再git checkout --file。
当然,以上的前提都是你没有同步到远程仓库。如果你已经同步到远程了,就没辙了吗?嘿嘿,办法还是有的,看这里http://blog.youkuaiyun.com/dss886/article/details/49232051,是不是顿时觉得git很友善?所以说嘛,世上没有后悔药?还是有的。妈妈再也不担心我乱改代码了。
下面有一张指令流程图,如果你看懂了上面的内容,是不是觉得,我啰嗦了那么多,其实这张图已经说明了一切。
好了,git教程就到此为止啦,绝对可以满足工作需要了。如果你嫌指令麻烦,你可以使用source tree,tortoise git等图形界面客户端,这个就自行百度吧,实在太简单啦。
Git常用的命令
1.提交代码
1. $ git add aa //把a文件添加到暂存区。
2. $ git commit aa -m "改动xxx" //将改动提交到dev分支。
3. $ git checkout master //如果你确定你的工作完成了,想把改动提交到服务器,那么就要将dev分支合并到master分支啦。先切换到master分支。
4. $ git merge dev //合并dev分支,这时候你的改动就提交到master分支啦
5. $ git push -u origin master //把本地仓库改动push到远程仓库,这样你的改动就提交到服务器了啦。这里origin指的是远程仓库,master指的是本地主分支,当然你也可以push dev分支,把master改成dev即可。不过我们组只推master。
2.创建分支 合并代码
1. git init
2. git checkout debug //进入debug分支;
git checkout -b dev 创建并进入dev分支
3. git branch -a //查看所有分支
4. git add . //添加所有 ; git add file //添加某个文件
5. git commit file -m “说明信息”
5. git status
6. git log ; git log --pretty=oneline
7. git reset --hard 18f6c9a612d7e10c0abced67ff5ed801962b91f9 重回某个版本
8. git diff readme.txt //对比改动
3.reset version
git log
git reset –hard commit_id
3.tag
//查看
git tag
//先提交代码到git服务器
git add STM32XX
git commit STM32XX -m "XXX"
git push -u origin master
//再打tag
git tag STM32_V1.00
git push origin STM32_V1.00
//查看
git tag