Git客户端
- Git客户端取决于平台的选择,最主要有几种客户端
- 命令行 [Mac 推荐使用Iterm2]
- Git客户端,可在官网下载,既有Mac的客户端也有Win的客户端,非常方便
搭建项目
-
第一步需要找到对应的项目,进入到项目详情中。点击红色箭头按钮指向的地址。复制地址。
注意:如果想要配置SSH协议拉取代码的话需要配置SSH秘钥免密 -
如果没有权限的话会提示如下
-
切换到HTTPS协议进行拉取
- git clone http://xx/back-java/fly-system-sale.git 等待代码拉取完毕
-
使用cd命令,进入到对应目录下
-
使用git branch进行查看,项目拉下来都是默认的master分支
-
如果想切换到某个分支上,使用git checkout
- git checkout -b develop origin/develop 表示在本地创建一个跟远程develop分支相同的分支
提交代码
- 编写代码时,可以随时使用git status 查看当前的工作空间中是否有多代码变动
- 如果出现的是nothing to commit, working tree clean表示当前没有进行代码更新
- 如果有相关的代码改动, 则会出现红色的代码标识为Modified的代码
- 如果代码开发完毕,可以进行代码提交【友情提示,多人共同开发前,使用git pull先拉取一下最新的代码,或者使用IDEA中的拉取进行拉取,Merge相关的代码】
- 使用git add .,表示将本地代码提交到工作区域
- 使用git commit -a -m “comment message” 提交commit log,具体内容是本次开发所涉及的相关内容的描述
- 最终使用git push 进行代码推送,如果分支未跟远程分支进行关联,需要先进行关联
常用Git命令
- git add 添加文件到工作空间
- git commit -m “description” 提交文件
- git clone [url] [project-name] 克隆项目
- git status 查看当前git目录下的文件的情况
- git diff 查看暂存空间中修改的文件
- git diff -staged 将暂存空间的修改与上次提交作比较
- git rm (–cached) file_name 删除文件
- git mv origin_file target_file 对git中的文件进行名称修改
- git log 查看项目中的提交日志
- -p 显示每次提交引入的差异
- -2 显示最后提交的2条
- –stat (hash-objects) 查看分支中那些文件有进行修改,增加或删除了多少行数据
- –pretty=oneline 格式化输出,每一个commit一行
- –since 自动什么时候开始
- git commit
- –amend 如果刚提交了内容,需要将当前代码提交到上次的快照当中,可以使用此参数
- git reset HEAD file_name 将文件从暂存区中移除
- git checkout – CONTRIBUTING.md 将某个文件进行回滚 (谨慎使用此命令)
- git remote -v 查看远程仓库地址URL
- git fetch [remote-name] 从远程分支拉取内容
- git push [remote-name] [branch-name] 将当前分支推送到远程
- git branch [branch_name] 创建一个分支
- git checkout [branch_name] 切换分支
- git branch -d [branch_name] 删除某个分支
Git数据恢复
- git reset --hard 1a410efbd13591db07496601ebc7a059dd55cfe9 强制回滚到某一个节点上
- git reflog 每次进行操作时,git都会默认将操作记录到HEAD中
- git log -g 查看所有的log
- git branch recover-branch hash-objets 创建新分支
- git log --pretty=oneline recover-branch 查看当前分支上存在哪些内容
- git fsck --full 修复数据
- git rev-list --objects --all | grep 83baae61804e65cc73a7201a7252750c76066a30 查找比较大的文件名称
.git目录说明
- config 项目配置项
- description Git-Web项目描述
- info 提供全局忽略规则,就像是项目中的.gitignore文件一样
- 客户端或者是服务端的钩子脚本
- objects 存储所有的内容的数据库
- refs 存储commit objects的指针内容(pointer)
- HEAD 当前checkout下来的是哪一个分支
- index 你存储内容的暂存信息
扩展
-
Git中的文件存在两种状态,跟踪和未跟踪。
- 跟踪的文件就是上一个快照,它不能进行修改以及暂存
- 所有未跟踪的文件都不在快照当中,可以随便进行修改 -
Git中.gitignore文件用来忽略项目中不需要提交的文件的pattern集合
-
Git中使用git fetch只是将文件从远程拉取到本地的仓库中,还需要使用merge才能将文件合并到工作目录中