无论是我们自己把本地的项目新建了一个远程仓库 还是 从远程仓库获取到了 本地,现在我们都在本地有了一份项目代码,服务器上对应有项目代码的信息。
现在我们就开始进行交互操作了。
也就是说明一些在 正常开发流程中 常用的一些git命令。
基本上开发的时候常用的就几个命令
查看有哪些分支
git branch
创建分支
git branch 分支名
切换分支
git checkout 分支名
在当前分支代码的基础上新建分支
git checkout -b 分支名
删除分支
git branch -d 分支名
同步(更新下载)服务器代码
git pull origin 分支名 更新分支的所有变动
或者直接在当前分支
git pull
查看有哪些变动的文件
git status
提交三部曲
git add .
git commit -m "注释"
git push origin master
git add .是提交所有,只提交某个文件 例如 git add readme.txt
提交如果失败报不是最新版本则需要先git pull更新版本,可能会有冲突,手动解决后再提交
查看修改内容
git diff readme.txt
查看提交日志
git log
还原文件的修改-与远程库同步
git checkout --readme.txt
回退上个版本(HEAD指向master的指针,^个数表示上几个版本)
git reset --hard HEAD^
回退n个版本
git reset --hard HEAD~100
回退到commit为3628164版本
git reset --hard 3628164
合并某分支到当前分支
git merge 分支名(Fast forward模式,这种模式下删除分支后,会丢失分支信息)
-no-ff参数,表示禁用“Fast forward” 会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
git merge --no-ff -m "注释" dev
忽略文件
vim .gitignore
.gitignore文件是告诉Git哪些目录或者文件需要忽略, 这些文件将不被提交;
常用场景 : 写完代码后会执行变异调试等操作, 使用 .gitignore 文件将这些编译后的文件屏蔽, 这些文件不需要Git工具进行管理;
Android中的.gitignore : 在Android中 bin 和 gen 两个目录可以忽略;
.gitignore位置 : 项目根目录下;
过滤模式 : Git中的 .gitignore 中有两种模式,开放模式 和保守模式,保守模式的优先级要高于开放模式;
开放模式 : 设置哪些文件和目录被过滤, 凡是在文件中列出的文件或者目录都要被过滤掉;
-- 过滤目录 : /bin/ 就是将bin目录过滤, 该文件下的所有目录和文件都不被提交;
-- 过滤某个类型文件 : *.zip *.class 就是过滤zip 和 class 后缀的文件, 这些文件不被提交;
-- 过滤指定文件 : /gen/R.Java, 过滤该文件, 该文件不被提交;
保守模式 : 设置哪些文件不被过滤, 凡是列在其中的文件都要完整的提交上去;
-- 跟踪目录 : !/src , 该目录下的所有文件都要被提交;
-- 跟踪某类文件 : !*.Java , 凡是java文件都要保留;
-- 跟踪指定文件 : !/AndroidManifest.xml , 该文件需要保留, 提交上去;
配置原则 : 一般情况下采用开放模式和保守模式共同使用;
eg : 一个目录下有很多目录和文件, 当我们只需要保留其中的一个文件的时候, 先用开放模式不保留这些文件, 然后用保守模式将这个文件留下来, 保守模式的优先级要高于开放模式;
给版本打标签
版本标签是为了方便我们查找版本
git tag v2.0
git show v2.0
git tag -a v2.1 -m 'first version'
git show v2.1
为之前的提交添加标签 : 先使用 git log --oneline 命令列出之前的提交, 会有一个七位的十六进制数进行标记, 使用
git tag -a v3.1 f1bb97a
删除XX文件
git rm XX