Java 版本控制工具-Git 学习总结

1)Git有关的学习书籍和博客推荐

首先推荐的当然是ProGit这本书:https://git-scm.com/book/zh/v2
Git官网也有很多资料:https://git-scm.com/https://git-scm.com/docs
有关的博客:http://www.yangzhiping.com/tech/github.html
Git命令详解:http://blog.csdn.net/prike/article/details/50040723
Git远程操作讲解:http://www.ruanyifeng.com/blog/2014/06/git_remote.html
研发团队 GIT 开发流程新人学习指南:http://blog.jobbole.com/110052/?utm_source=blog.jobbole.com&utm_medium=relatedPosts

2)如何布置项目到Github

step01: 一般我们可以新建一个仓库,给仓库命名,并做相应的初始化处理。
step02:打开刚创建的仓库,选择本仓库的设置界面,将分支选择到master-branch这个选项,这样可以简单地理解为还没有分支合并。
step03:在本地安装Git环境,这里我选择的是命令行模式,图形化界面其实有时候没有命令行模式更加便捷。Git官网
step04:在电脑中存放项目的目录下点击鼠标右键,选择git bash here,进入Git bash模式。
step05:使用git clone 命令将项目从远端Github服务器上拷贝到本地。格式为:https://github.com/username/program.git或者拷贝本地的项目到当前目录
step06:可以在本地对刚项目做一些修改,比如增加一个文件,添加一些自己写的代码。
step07: git add . 将本地的修改添加到上传列表 ,也可以在add后面指定特定的文件名,只添加部分文件到远端暂存区。
step08: git commit -m ”modify”将文件提交到暂存区。
step09: git pull 将远端的项目快照下载到本地。
step10: git push讲修改后的项目上传到远端服务器,这里是github。

3)git与其他集中式版本控制工具的区别

版本控制工具的发展经历了三个过程:
1. 本地的一些vcs(backup,rcs)
2. 集中式版本控制工具cvcs(cvs, svn,perforce)
3. 分布式版本控制工具(git,mercurial,bazaar,darcs)。
常用的版本控制工具有:git, svn(subversion), perforce, cvs,bazaar等。
Git与SVN之间的区别:http://blog.jobbole.com/31444/

4)git中项目文件的三种状态

  1. committed(已提交):表示数据已安全保持到服务器中;
  2. modified(已修改):修改了文件,还没有保存到服务器中;
  3. staged(已暂存):对已修改的文件做了标记,使得在下次提交 时也提交它的快照。
    本地的项目路径下,是工作区。暂存但还没有提交到远端服务器的区域称为staging area。远端服务器的项目称为git directory。

5)Github代码贡献使用流程

  1. Fork别人的项目
  2. 下载项目到本地进行修改贡献
  3. 从master分支中创建一个新的分支
  4. 将这个分支推送到github上
  5. 创建一个合并请求
  6. 讨论,根据实际情况继续修改
  7. 项目的拥有者合并或关闭贡献者的合并请求

6)Git 常用的command

  • 查看当前git 的版本配置情况
    git config –list;也可以查看某一项git配置 git config key

  • 查看当前git 的版本号
    git version

  • 查看文件状态
    git status -v

  • 设定特定的文本编辑器
    git config –global core.editor vim(emacs)

  • 使用git获取帮助
    git help verb

  • 显示当前目录中文件的状态
    git status -s
    ?? file1:新添加未跟踪的文件
    A file2:新添加到暂存区的文件
    M file3:M在右边表示该文件被修改了但还没有放入暂存区,M在左边表示该文件被修改了,并放入了暂存区。
    MM file4:在工作区修改并提交到暂存区后,又在工作区做了修改,所以在暂存区和工作区都有该文件被修改过的记录。

  • 设定当前项目或目录中不会更新到远端的文件
    创建隐藏文件.gitignore,在该文件中可以依据正则表达式定义需要过滤git管理的文件,比如*.log会过滤到所有log文件。这样,即使使用了git add 命令将其加入到暂存区,log文件也不会更新到远端仓库。
    .gitignore格式规范

    1. 空行或以#开头行相当于注释,会被git忽略
    2. 可使用标准glob模式匹配
    3. 以/开头表示防止递归,防止忽略下一层目录的相关文件
    4. 以/结尾指定目录
    5. 要反向忽略指定模式以外的文件或者目录,可以在模式前加!取反。
  • 比较差异
    git diff 比较的是当前目录中文件和暂存区域snapshort之间的差异,也就是修改之后还没有暂存起来的变化内容。
    git diff –cached 或 git diff –staged 查看已暂存的将要添加到下次提交里的内容。

  • 自动提交
    git commit -a 自动把所有已跟踪过的文件暂存起来一并提交,从而跳过git add步骤。

  • 修改文件名
    git mv file1 file2

  • 从暂存区移除,但在工作区不删除该文件
    git rm –cached filename

  • 从暂存区和工作区同时删除文件
    git rm file
    git rm -f file 强制删除modify之后在暂存区的文件。

  • 查看提交的历史记录 git log
    常用option:

    1. -p : 显示每次提交的内容差异
    2. -num 仅显示最近num次提交的内容
    3. –stat 总结有多少文件被修改以及被修改过的文件具体哪些行被移除(-)或添加了哪些行(+)
    4. –pretty (=oneline,short, full fuller) format 定制格式化输出
    5. –graph 展示分支,合并历史。
    6. –since=2.weeks 列出最近两周内的提交
    7. –author 指定作者的提交历史
    8. –grep 搜索提交说明中的关键字
    9. –all -match 同时满足所有限制条件
    10. –until –before 总结指定时间。
  • git commit –amend 提交后如果发现忘记了暂存的某些需要的修改,可以使用命令
    1.git commit -m ‘initial commit’
    2.git add forgotten file
    3.git commit –amend

  • 取消暂存文件
    git reset HEAD filename

  • 取消对文件的修改(该命令不可逆,慎重!)
    git checkout – filename

  • 添加远程仓库
    git remote add shortname https://github.com/username/program_name

  • 对远程仓库重命名
    git remote rename old_name new_name

  • 删除远程仓库
    git remote rm short_name

  • tag
    git的tag分两种,lightweight(轻量级标签,临时使用) 和annotated附注标签(推荐使用)
    git show 可以查看tag信息及相应的提交信息
    git tag -a v1.0 -m ‘my first version’
    -m 是必须的,用来存储在tag中的信息
    -a 是用来添加附注标签。
    lightweight标签不需要添加-m -a 的option

  • 给已经提交过的项目追加tag
    git log –pretty=oneline 查看校验和
    git tag -a version 检验和部分值

  • 共享标签
    git push origin version

  • 一次性将所有标签上传到remote servers
    git push origin –tags

  • 创建分支命令
    git branch branch_name1 branch_name2

  • 显示本项目的所有分支
    git branch

  • 查看各个分支当前所指的对象
    git log –oneline –decorate

  • 分支切换
    git checkout branch_name

  • 创建分支并切换到该分支
    git checkout -b branch_name
    相当于1. git branch branch_name+git checkout branch_name

  • 删除分支
    git branch -d branch_name

  • 合并分支1到分支2(master)
    git checkout master+git merge branch_1

  • 强制删除分支
    git branch -D branch_name

  • 查看每个分支的最后一次提交
    git branch -v

猜你喜欢

转载自blog.csdn.net/weixin_38021928/article/details/70186036