常用命令:
git status #命令查看当前git仓库的状态
git
diff 文件 #查看文件修改的内容
......
配置git:
$ git config --global user.name "username"
$ git config --global user.email "email"
获得一个Git仓库
1.Clone一个仓库
git clone <git地址>
2.初始化一个新的仓库
git init
正常的工作流程
git的基本流程如下:
- 创建或修改文件
- 使用
git add
命令添加新创建或修改的文件到本地的缓存区(Index) - 使用
git commit
命令提交到本地代码库 - (可选,有的时候并没有可以同步的远端代码库)使用
git push
命令将本地代码库同步到远端代码库
git push origin master
代码回滚
git log 查看所有提交过的版本
git reset --hard HEAD^ #回滚到上一个版本 HEAD^^ 就是上俩个版本
git reset --hard ID # 回滚的ID指定版本
git reflog #每次操作的记录
撤销修改
git add . # 之后对某个文件修改了
git checkout -- 文件 #这样就撤销了修改的地方了
删除文件
在提交后的版本中
rm 文件
这个时候,Git知道你删除了文件,因此,工作区和版本库就不一致了,git status
命令会立刻告诉你哪些文件被删除了:
现在你有两个选择:
一是确实要从版本库中删除该文件,那就用命令git rm
删掉,并且git commit
另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本,git checkout -- 文件
分支
当前在master中
git branch 分支名 # 创建一个分支
git checkout 分支名 # 切换到该分支
git branch #查看当前分支
对改分支的文件编辑修改
git checkout master
git pull # master分支有可能被修改过,要pull最新的
git merge 分支名 # 将该分支的代码合并到master分支中
注意这里可能出现俩种情况:
一种是直接帮你把内容合并
还有一种情况,master分支已经被修改,合并时候提示冲突,需要手动合并
Git用<<<<<<<
,=======
,>>>>>>>
标记出不同分支的内容:
<<<<<< 是master的代码
====== 分割线
>>>>>> 是分支的代码
完成后 add ,commit ,push
# git branch -d 分支名 # 删除
分支策略
在实际开发中,我们应该按照几个基本原则进行分支管理:
首先,master
分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
那在哪干活呢?干活都在dev
分支上,也就是说,dev
分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev
分支合并到master
上,在master
分支发布1.0版本;
你和你的小伙伴们每个人都在dev
分支上干活,每个人都有自己的分支,时不时地往dev
分支上合并就可以了。
所以,团队合作的分支看起来就像这样:
dev就相当于一个测试分支,稳定了在往master上发。
处理bug
现在在自己分支的上开发代码,但是来了一个bug要去其它分支修改,这时候你的代码没有提交是不能切换的。
所以要使用stash
功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作。
git stash # 临时保存
现在就可以切换到有bug的分支了;
git checkout dev1 # 切换到dev1 bug分支中
git checkout -b issue-1 # 创建一个issue分支,并切换
修改bug...
git add .
git commit -m 'commit issue-1.1'
git ckeckout dev1
git merge issue-1 # 合并
git branch -d issue-1 # 删除issue 分支
完成bug后,回到自己的分支
git checkout 分支
git status #查看一下状态,是空的工作区
git stash list # stash 列表
git stash pop # 删除stash,并恢复,也可以先git stash apply 恢复,再 git stash drop
来删除。
忽略特殊文件.gitignore
https://github.com/github/gitignore
已经有现成的,也可以自己加,自定义