博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
团队Git使用教程
阅读量:5837 次
发布时间:2019-06-18

本文共 3793 字,大约阅读时间需要 12 分钟。

团队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/TODObuild/ # 忽略 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使用教程
本文链接:
本文作者:SoChishun (邮箱:14507247#qq.com | 博客:)
发表日期:2017年9月8日

转载于:https://www.cnblogs.com/sochishun/p/7496350.html

你可能感兴趣的文章
Java基础之String,StringBuilder,StringBuffer
查看>>
安卓中数据库的搭建与使用
查看>>
AT3908 Two Integers
查看>>
.NET 设计规范--.NET约定、惯用法与模式-2.框架设计基础
查看>>
win7 64位+Oracle 11g 64位下使用 PL/SQL Developer 的解决办法
查看>>
HTML5新手入门指南
查看>>
opennebula 开发记录
查看>>
sql 内联,左联,右联,全联
查看>>
C++关于字符串的处理
查看>>
Breaking parallel loops in .NET C# using the Stop method z
查看>>
修改故障转移群集心跳时间
查看>>
[轉]redis;mongodb;memcache三者的性能比較
查看>>
让你的WPF程序在Win7下呈现Win8风格主题
查看>>
802.11 学习笔记
查看>>
Leetcode-Database-176-Second Highest Salary-Easy(转)
查看>>
构建Docker Compose服务堆栈
查看>>
Hadoop生态圈-Kafka常用命令总结
查看>>
如何基于Redis Replication设计并实现Redis-replicator?
查看>>
浮点数内存如何存储的
查看>>
贪吃蛇
查看>>