git使用指南:
Git就是用来控制文件版本的。
git将文件的位置划分为四个区域:工作区,暂存区,版本库区,隐藏区。
- 工作区:就是还未被管理的文件(和.git同一个目录的就是工作区)
- 暂存区:通过Add添加文件会添加到暂存区
- 版本库区:通过commit提交会将文件提交到版本库区
每次提交文件到版本库区,Git都会有一个对文件的记录,通过这个记录,Git可以实现对文件的各种操作。这就是git的版本控制方法。
使用步骤:
- 安装Git(这个很简单)
给仓库取个名字
- git config –global user.name “输入名字”
- git config –global user.email “输入邮箱”
存数据
- 先 add到缓存区 git add 文件名.后缀
- 在commit到仓库 git commit -m ‘提交说明’
查看数据
- git status 这个是查看当前还有哪些文件没有被管理起来。
- git diff 文件名.后缀 查看当前文件有哪些改变。
- git log 查看历史记录(简洁版:git log –pretty=oneline:退出log查看按ctrl+c或者q)
- cat 文件名 可以直接查看文件内容
- git branah 会列出所有分支当前分支前面会有一个星号
- git remote 可以查看已关联远程库的信息
- git remote -v 查看详细远程库信息
版本回退
- git reset –hard HEAD^回退一个版本一个^也可以用 ~10 表示回退10个版本号
撤销回退
- 先用git reflog 查看版本号(所有提交记录都会有一个版本号)再用 git reset –hard 版本号 就可以恢复。
git 删除文件操作和恢复已经删除文件
恢复(这里的前提是已经提交到版本库)
直接回退到没有删除的版本吧,如果没有commit。。。默哀吧
如果之前有提交到版本库,可以选择回退到删除前的版本,也可以用 git checkout –文件名.后缀 恢复回来。
如果一个文件之前commit提交过,现在删除文件再commit。也可以通过 git reset –hard 版本号恢复回来。
总结:只要版本库里面有记录,就可以通过回退版本号恢复文件删除操作
- rm 文件名.后缀 直接删除文件 这样删除文件后可以用 git checkout – 文件名.后缀 恢复回来如果这时候执行一个commit操作,就彻底没法恢复了
- git rm –cache 添加到缓存区的文件名(这个命令是用来删除错误提交到缓存区的文件的)
- git rm -f 文件名(同时删除缓存区和工作区的文件)
- 删除版本库里面的某个文件要用git reset命令,这个命令有三个选项:
- git reset –hard 版本库ID 彻底删除版本库,缓存区,工作区的文件
- git reset –mixed 版本库ID 删除版本库文件,缓存区的文件,不影响工作区
- git reset –soft 版本库ID 删除版本库文件,不影响其他两个区
远程仓库
远程仓库,相当于一个服务器,可以和本地仓库关联起来,关联起来后就可以在不同的设备上管理文件。就像玩网游一样,数据放在服务器上,随便找哪台电脑登录游戏都能接着玩
以下两个方法都可以将远程仓库和本地仓库联系起来。
- git clone 远程仓库地址 这个是克隆远程仓库
- git remote add orgin 远程仓库地址 这个是关联远程仓库
远程仓库和本地仓库关联起来后可以通过 git push -u origin master 将本地仓库的内容推送到远程仓库。(第一次推送加上-u操作,可以把本地master分支和远程master联系起来,以后就可以用简化的推送命令了)
创建分支与合并分支
分支就像PS里的图层一样,建立不同的图层,在A图层的操作不会影响到B图层。但是最后AB图层可以融合到一起。
协同工作的时候各自创建一个分支
- git checkout -b dev 创建dev分支并切换到dev分支
- git checkout 分支名 切换到该分支
- git merge dev 在当前分支上合并dev分支
- git branch 查看当所有的分支
- git branch -d 分支名 删除指定的分支
切换分支的时候会连同工作空间一起切换
如果两个分支都有同一个地方的修改,合并时就会冲突。解决冲突的办法就是保留其中一个分支的操作。分为两种:
- 树冲突
文件名修改造成的冲突(两个同样内容,但是文件名字不一样)
- 解决办法就是直接删除一个文件,只留下一个文件再合并
- 内容冲突
修改同一块内容造成的冲突,有三种解决办法
- rebase冲突解决
- 编辑冲突文件。
- 既然是两个文件改了一样的地方产生冲突,那把改的地方统一一下在Commit。
- 利用图形化工具解决冲突
- 在冲突非常复杂的情况下,采用图形化工具解决冲突
在解决冲突后进行合并时Git会让用户输入为什么要这么解决冲突的记录信息。输入方式是:
按 i 进入输入模式
输入信息
按esc 然后输入 :
这时输入框会跑到屏幕下方,说明输入成功,按下enter结束输入。
2017/3/18有空再继续写吧。睡觉了
Bug分支
Bug分支的作用:在开发中,我们正在做某个功能的开发,还没做完,但是现在来了个bug,必须立即修复。可是现在正在做的功能还没有做完,代码没写完,又不想提交,这时候,可以选择将当前工作空间隐藏,然后在主分支再开一个分支解决Bug,当Bug解决完之后再恢复工作空间继续做没做完的事情。
git stash 这个命令可以将当前工作空间隐藏。
git stash list 这个命令会列出所有的隐藏工作空间。
git stash apply 恢复隐藏的工作空间(不会删除隐藏空间记录)
git stash pop 恢复隐藏的工作空间(会删除隐藏空间的记录)
git stash drop 删除隐藏空间记录(最上面的一条)
多人协作
从远程库克隆的本地库,自动与远程库关联。远程库默认名称是mrigin
推送命令 git push mrigin master 这条命令会自动推送到远程库的master分支
master做为主分支,本地和远程库要随时保持一致。Bug分支不要提交到主分支,Bug分支都是本地合成到master分支,然后再提交到远程库。其他模块的分支按照完成一个节点推送一次。
开发时,各自将自己的工作内容提交到自己的分支。如果某个同事要用我的分支那么他需要把我的分支抓取到本地,clone远程库的时候默认只clone master分支
git checkout -b 远程分支名 origin/远程分支名 通过这段命令可以将远程的某个分支拉取到本地并关联。
工作做完,再提交。
Git常用命令
mkdir: XX (创建一个空目录 XX指目录名)
pwd: 显示当前目录的路径。
git init 把当前的目录变成可以管理的git仓库,生成隐藏.git文件。
git add XX 把xx文件添加到暂存区去。
git commit –m “XX” 提交文件 –m 后面的是注释。
git status 查看仓库状态
git diff XX 查看XX文件修改了那些内容
git log 查看历史记录
git reset –hard HEAD^ 或者 git reset –hard HEAD~ 回退到上一个版本
(如果想回退到100个版本,使用git reset –hard HEAD~100 )
cat XX 查看XX文件内容
git reflog 查看历史记录的版本号id
git checkout – XX 把XX文件在工作区的修改全部撤销。
git rm XX 删除XX文件
git remote add origin https://github.com/tugenhua0707/testgit 关联一个远程库
git push –u(第一次要用-u 以后不需要) origin master 把当前master分支推送到远程库
git clone https://github.com/tugenhua0707/testgit 从远程库中克隆
git checkout –b dev 创建dev分支 并切换到dev分支上
git branch 查看当前所有的分支
git checkout master 切换回master分支
git merge dev 在当前的分支上合并dev分支
git branch –d dev 删除dev分支
git branch name 创建分支
git stash 把当前的工作隐藏起来 等以后恢复现场后继续工作
git stash list 查看所有被隐藏的文件列表
git stash apply 恢复被隐藏的文件,但是内容不删除
git stash drop 删除文件
git stash pop 恢复文件的同时 也删除文件
git remote 查看远程库的信息
git remote –v 查看远程库的详细信息
git push origin master Git会把master分支推送到远程库对应的远程分支上