一 对与Git的介绍 讲解这里不再赘述只梳理 操作与使用
1. 找个文件夹 cd 到你文件夹目录。 查看文件夹路径是否是自己要操作的仓库 pwd
2. git clone +git地址 代码会被拉下来 之后的操作,如果直接拉取分支的代码如下
git clone -b +branchname +git地址
检查自己的分支: git branch 一般都在在master下面
这个时候查看一下所有分支: git branch -a
需要切换分支的话 git checkout +分支
OK到这里基本上准备工作已经搞完了
3.从远程库获取到本地:git pull 前提是进入你文件仓库目录下 git pull origin branchname
拉取分支代码并合并(该命令简单粗暴)
4.将本地提交远程库:git push origin master
5.获取本地文件状态: git status 查看工作区代码相对于暂存区的差别
6 把修改后的文件 添加进去 git add 文件名 (从工作区添加到暂存区) 删除的命令:git rm 文件名 ( git add -A . -A 表示将所有的已跟踪的文件的修改与删除和新增的未跟踪的文件都添加到暂存区。git add . 不包括删除 git add -u . 不包括新增加的文件
)
7 提交 git commit -m +' 提交说明 ' 之后 (将缓存区内容添加到本地仓库) 推送到服务器 git push
8 基本的常规操作也就这些 平时开发项目也够用 (没冲突情况下)
9 git show --stat +commitid 查看提交的文件列表
二 分支相关
创建
git branch -a(查看所有分支包括本地分支和远程分支).
git branch -r(查看远程分支).
git checkout -b branchname(直接新建一个分支然后切换至新创建的分支).就是创建加切换分支.
git checkout branchname(是切换分支名).
删除. 先切换到别的分支才可以
git branch -d branchname 删除本地分支
git push origin: branchname 删除远程分支 记得加 :这个符号
问题解决
1、改完bug忘记切换分支了,代码改了很多怎么办。
莫慌,git如果这种问题都解决不了何谈高效。
使用以下命令即可解决。
git add . (把所有改动暂存)
git stash (把暂存的文件提交到git的暂存栈)
git checkout 本该提交代码的分支
git stash pop (将暂存栈中的代码放出来)
至于是继续改还是提交就随你了
2.代码不但改了,还push提交了怎么办。
最常见的是这种问题,这种场景也能解决
git reset HEAD~1 (最近一次提交放回暂存区, 并取消此次提交)
git stash (把暂存的文件提交到git的暂存栈)
git checkout 该提交代码的分支
git stash pop
git add . 再 git commit -m ' '
git pull 拉下代码 再 git push origin branchname
但是呢 该提交的分支是提交好了, 但是那个错的分支依旧有提交的内容 这个时候要再切换回去再提交一次如下:
git checkout branchname 此时是 不该提交的那个分支
git log 看下 因为reset的缘故 本地的提交已经不见了,但远端是存在的
git push origin branchname -f (把不该上去的文件回退掉)
3在A分支下对代码做了修改,执行add + commit操作后,切换到B分支下,代码丢失
git checkout A 先切换到A
git log 查看提交的 commitID 复制记录下来
git checkout B 再切换到B
git cherry-pick commitID 接下来的push
但是A分支下有你提交的内容需要撤销A分支 执行 git reset --hard commit_id
OK了
4代码都提交了但有些文件不想push怎么处理
1 这时候需要撤销 git reset id. 这个操作只是撤销,代码不会变。 把要提交的东西重新提交一下
2 代码回滚 git reset --hard id 一切都恢复到你回滚到的状态 自己写的代码会被覆盖 若想保留这个操作不想解释了。看上面。
三标记 tag
git tag 列显已有的标签
git tag -l 'v1.4.2.*' 特定的搜索模式 1.4.2 系列
创建一个含附注类型的标签 用 -a (译注:取 annotated 的首字母)指定标签名字即可 git tag -a v1.4 -m 'my version 1.4'
对于已提交的内容补上标签 git tag -a v1.2 9fceb02 git tag -a +版本号+ commitID
删除 本地 git tag -d v1.0 删除远程 git push origin :refs/tags/v1.0
此外tag 相当于是一个快照,是不能更改它的代码的,如果要在 tag 代码的基础上做修改,你需要一个分支 git checkout -b branch_name tag_name
四 冲突情况操作 这是难免的
Git工作得小心注意,特别是涉及到一些高级操作,例如 reset, rebase 和 merge
1当前版本的历史版本:git log 简版显示:git log --pretty=oneline
2 历史版本命令:git reflog
3 对比工作区和仓库区中某版本某文件的不同 git diff HEAD -- 文件名
4 回退历史版本到暂存区
git reset HEAD^或版本号 回退到上一个版本
例子 git reset --hard HEAD~100
git reset --hard 版本号 想回退到的版本
5 git reset --hard FETCH_HEAD 将本地的冲突文件冲掉,不仅需要reset到MERGE-HEAD或者HEAD,还需要—hard。没有后面的hard,不会冲掉本地工作区。只会冲掉stage区。小心使用这个命令
git checkout -- file 命令恢复状态 必须要先add才存在恢复一说
文件丢失了 然后push到服务器 导致一些文件没有了 这个时候不要着急
1. git reflog 先看历史记录 重制回到那一次的提交状态 git reset --hard +版本号。文件即可找回
除非你的操作已经被git当做垃圾处理掉了,一般是30天以后
2. 碰到 error: Your local changes to the following files would be overwritten by merge:
/。。/。。/
Please, commit your changes or stash them before you can merge. 文件内部冲突 (代码冲突)
解决方式1:希望保留生产服务器上所做的改动,仅仅并入新配置项, 处理方法如下:
git stash
git pull
git stash pop 然后可以使用git diff -w +文件名 来确认代码自动合并的情况. 打开文件查看
<<<<自己的代码 ========= 服务器代码(别人)>>>>>> 删除整合 重新提交即可
解决方式2: 反过来,如果希望用代码库中的文件完全覆盖本地工作版本. 方法如下:
git reset --hard
git pull
有时候 会经常的碰到 Xcode 的配置文件 冲突 .Dstore .... 等等 这个时候就需要 忽略文件 把一些不必要的 需要忽略的文件 添加到 .gitignore
怎么创建 .gitignore 文件 文件里面的内容又该如何配置
1. touch .gitignore 就会生成 这时候查看一下 他是隐藏文件 如果看不到 尝试一下 coomand +shift +. 就会显示出来
2. open .gitignore
那么里面的内容又该如何书写:个人工程配置如下:加cocopods 的忽略
这个文件 最好配置到服务端 也就是代码库 避免他人内部有这个.gitignore 导致冲突
其他的问题 待总结持续更新