团队Git使用教程
团队git使用教程(不要使用IDE自带版本控制功能)
角色分配:项目观察者、项目拥有者、项目开发人员

场景:项目拥有者创建项目
1. 在当前目录新建一个git代码库 
    git init "testgit_pm"

2. 切换bash路径到工作目录,否则无法使用git命令
	cd testgit_pm

3. 添加目录或文件 切换目录 cd [xxx] 然后 
	git add .




4. 忽略文件
	vi .gitignore



4. 提交到暂存区
	git commit -m "描述内容"

5. 再次提交文件
	git add ./
	git commit --amend -m "修改内容"
6. 显示当前分支的最近几次提交
	git reflog #简略显示当前分支的最近几次提交
	git log #详细显示当前分支的版本历史


5. 配置当前项目用户信息(随便填就可以了,这里和远程Git系统分配的账号无关)
	git config user.name "[name]"
	git config user.email "[email]"

设置不自动转换换行符号(如果项目在linux系统和windows系统开发会有换行符号差别)
git config --gobal core.autocrlf false
6. 推送到远程仓库(这里会弹出输入用户名和密码的认证窗口)
	git push "https://git.oschina.net/sutroon/testgit.git" --all

场景:项目拥有者创建分支
1. 新建分支
git branch [branch_name] # 新建分支,但依然停留在当前分支(以当前内容为分支内容)
git branch [branch_name] [commit] # 新建一个分支,指向指定commit
2. 切换到指定分支,并更新工作区
git checkout [branch_name]
git checkout - # 切换到上一个分支
3. 上传本地指定分支到远程仓库
git push "https://git.oschina.net/sutroon/testgit.git" "develop1"
git push "https://git.oschina.net/sutroon/testgit.git" "develop1":master # // 提交本地develop1分支作为远程的master分支
场景:项目开发人员修改文件
1. 克隆项目 
	git clone "https://git.oschina.net/sutroon/testgit.git" "testgit_deve1"

2. 显示有变更的文件
	(粗略显示本次修改的文件,即使执行git add命令也会显示)
	git status


3. 显示暂存区和工作区的差异
	(详细显示修改后,未执行git add命令之前的文件详情)
	git diff

4. 显示当前分支的最近几次提交
	git reflog

5. 配置当前项目用户信息(随便填就可以了,这里和远程Git系统分配的账号无关)
	git config user.name "[name]"
	git config user.email "[email]"
设置不自动转换换行符号(如果项目在linux系统和windows系统开发会有换行符号差别)
git config --gobal core.autocrlf false
6. 推送到远程仓库(这里会弹出输入用户名和密码的认证窗口)
	git push "https://git.oschina.net/sutroon/testgit.git" --all

项目观察者
统计操作:
1. 显示所有提交过的用户,按提交次数排序
	git shortlog -sn
文件管理操作:
1. 显示指定的文件是什么人在什么时间修改过的
	git blame [file]
每日工作
取回远程仓库的变化,并与本地分支合并(保存用户名和密码:git config credential.helper store)
	git pull "https://git.oschina.net/sutroon/testgit.git" "master"

推送所有分支到远程仓库
git push "https://git.oschina.net/sutroon/testgit.git" --all
场景:文件冲突
pm编辑了file1.txt,执行git add .; git commit -m "pm编辑了file1"; git push ... --all;
dev编辑了file1.txt, 执行git add .; git commit -m "dev编辑了file1"; git push ... -all;


方法1:
冲突的时候,如果想直接用远程的
git checkout --theirs file1.txt
git add .
冲突的时候,如果想直接用本地的
git checkout --ours .
git add .
方法2:




撤销操作:
1. 显示commit历史以及每次commit发生变更的文件
	git log --stat
2. 恢复某个commit的制定文件到暂存区和工作区
	git checkout "[commit]" "[file]"
忽略文件:
在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如无,则需自己手工建立此文件)。这个文件每一行保存了一个匹配的规则例如:
# 此为注释 – 将被 Git 忽略
*.a # 忽略所有 .a 结尾的文件
!lib.a # 但 lib.a 除外
/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/ # 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
规则很简单,不做过多解释,但是有时候在项目开发过程中,突然心血来潮想把某些目录或文件加入忽略规则,按照上述方法定义后发现并未生效,原因是.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
更改操作
1. 恢复暂存区的指定文件到工作区
(比如工作区的文件被改乱了,想撤销,就可以从暂存区恢复最后一次提交的文件到工作区)
	git checkout [file]

2. 恢复某个commit的指定文件到暂存区和工作区
	git reflog #简略显示当前分支的最近几次提交,获取[commit]ID。
	git checkout "[commit]" "[file]"

删除操作

git之从过时的header还原到master的最新header
git stash //先备份已经改变的文件
git checkout master  //从过时的header还原到master的最新header,(即当前header是老的,过时的)
git stash pop        //恢复备份的文件
git add                 //添加改变的文件
git commit         //提交到本地库
git checkout回之前版本后,如何把旧版本写的代码push上去?
保存你的修改
git commit ...
git tag tmp
更新主分支到remote最新
git checkout master
git pull origin master
合并你的修改并提交到remote
git merge tmp
git push origin master
clean
git tag -d tmp
参考文章:
Git忽略规则及.gitignore规则不生效的解决办法 [http://www.pfeng.org/archives/840]
git之从过时的header还原到master的最新header [http://blog.csdn.net/conjimmy/article/details/51512378]
git checkout回之前版本后,如何把旧版本写的代码push上去? [https://segmentfault.com/q/1010000004056628/a-1020000004056703]
| 
 版权声明:本文采用署名-非商业性使用-相同方式共享(CC BY-NC-SA 3.0 CN)国际许可协议进行许可,转载请注明作者及出处。  | 
团队Git使用教程的更多相关文章
- Git基础教程(二)
		
继续上篇Git基础教程(一),在开篇之前,先回顾一下上篇中的基本命令. 配置命令:git config --global * 版本库初始化:git init 向版本库添加文件:git add * 提交 ...
 - git 入门教程
		
git 入门教程之协同开发 前面我们已经介绍过远程仓库的相关概念,不过那时并没有深入探讨,只是讲解了如何创建远程仓库以及推送最新工作成果到远程仓库,实际上远程仓库对于团队协同开发很重要,不仅仅是团队协 ...
 - Git简明教程一、基本概念
		
文本是写给新手的Git入门教程.本文的目的是让新手能够快速了解并开始使用Git,因此只会介绍最基本.同时也是最核心的知识.其中包括使用Git的基本步骤和Git中最常用的命令,以及如何使用GitHub托 ...
 - Git全面教程
		
Git全面教程 简介 Git分布式版本管理系统. Linus在1991年创建了开源的Linux,但是一直没有一个合适的版本管理工具,在2002年以前,世界各地的志愿者都是通过把源代码文件通过diff的 ...
 - [译]Atlassian Git系列教程
		
国庆期间把Atlassian的Git系列教程看完了.边看边翻译了相关文章. 原教程: https://www.atlassian.com/git/tutorials/ 我翻译的: git init g ...
 - Git使用教程【转】
		
Git使用教程 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是 ...
 - Git 使用教程
		
Git 使用教程 更详细请参考:廖雪峰的官方网站 - Git教程 1. 安装Git客户端软件 Git for Windows http://msysgit.github.io/ 2. 创建版本库 两点 ...
 - 记一次小团队Git实践(下)
		
在上篇中,我们已经能基本使用git了,接下来继续更深入的挖掘一下git. 更多的配置自定义信息 除了前面讲的用户名和邮箱的配置,还可以自定义其他配置: # 自定义你喜欢的编辑器,可选 git conf ...
 - 记一次小团队Git实践(中)
		
对于初学者,从使用上先入手,往往学的最快,并从中汲取教训,再回头更深入的学习,效果尤佳. 安装git 安装git自不必说,mac已经内置了git,linux下一个命令就能搞定,windows下需要下载 ...
 
随机推荐
- vim打开多窗口、多文件之间的切换
			
打开多个文件: 一.vim还没有启动的时候: 1.在终端里输入 vim file1 file2 ... filen便可以打开所有想要打开的文件 2.vim已经启动 输入 :e file 可以再打开一 ...
 - 第五节  HTML&CSS -- 关于浮动和清除浮动的解说,以及两个大坑不要踩
			
1.随便唠叨几句 这一节课我会对浮动元素和怎样清除浮动相关的技术进行一个讲解,同时,我会列举一些我们前端开发中常见的坑,希望大家以后不要在这些地方犯错.在开始今天的课程之前,有一个东西我需要先讲一 ...
 - 洛咕 P2336 [SCOI2012]喵星球上的点名
			
洛咕 P2336 [SCOI2012]喵星球上的点名 先求出SA和height,一个点名串对应的就是一段区间,还有很多个点,就转化成了 有很多个区间,很多个点集,对每个区间计算和多少个点集有交,对每个 ...
 - chrome播放m3u8視頻失败
			
由于项目后台需要播放m3u8视频,但此视频格式在移动端和Safari支持比较友善但是PC浏览器中都不太尽如人意,所以想在Chrome中播放只能借助第三方插件来播放. 有一款Video.js插件极大的简 ...
 - Mvc4_mvc4跟mysql语法
			
mvc4: 子页面:@section A{} 母页面:@RenderSection("A",false) false:别的页面没有定义为A的Section的话 也没事,layout ...
 - NX 栈不可执行的绕过方式--ROP链
			
目标程序下载 提取码:5o0a 环境:Ubuntu linux 工具 pwn-gdb pwntools python库 ROPgadget ( 这些工具可以到github官网找) 1.检查程序开了哪些 ...
 - Unity光照与渲染设置学习笔记
			
学习了一下unity中有关光照和渲染的一些设置,现在才明白之前遇到的一些问题只是没有正确设置而已. unity不同版本的光照设置会有一些差异,而且可以调节的参数非常多,这里只记录一些重要的参数和使用方 ...
 - 微软职位内部推荐-Software Engineer-Sharepoint
			
微软近期Open的职位: SharePoint is a multi-billion dollar enterprise business that has grown from an on-prem ...
 - BugPhobia开发篇章:Beta阶段第VI次Scrum Meeting
			
0x01 :Scrum Meeting基本摘要 Beta阶段第六次Scrum Meeting 敏捷开发起始时间 2015/12/18 00:00 A.M. 敏捷开发终止时间 2015/12/18 23 ...
 - 剑指offer:从上往下打印二叉树
			
题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 解题思路: 实际就是二叉树的中序遍历问题.之前在leetcode刷过类似题目. 利用队列完成即可. 代码: /* struct Tr ...