热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

GIT和GitHub的使用总结

目录一、GIT初始化设置:创建密钥添加远程仓库用户名邮箱配置Clone远程仓库创建本地仓库

目录

  • 一、GIT初始化设置:
    • 创建密钥
    • 添加远程仓库
    • 用户名邮箱配置
    • Clone远程仓库
    • 创建本地仓库
    • 代理设置
    • 自定义操作
  • 二、GIT基本操作
    • 添加到暂存区区
    • 提交
    • 删除
    • 版本回退
    • 撤销修改
  • 三、GIT分支操作
    • 创建分支
    • 分支合并
    • 分支推送
    • 分支绑定
    • 分支删除
    • stash功能
  • 四、GIT标签操作
    • 本地操作
    • 远程操作
  • 五、Github同步原作者代码
  • 六、GIT多人协作的工作模式
  • 七、GIT关联Gitee和GitHub
  • 八、Github 解决敏感配置文件上传问题
  • 九、.gitignore文件忽略原则
    • 忽略文件的原则
    • 检查文件忽略情况
  • 十、搭建git私服,以ubuntu为例
    • 基本使用
    • 扩展使用

Git的官方网站:http://git-scm.com

一、GIT初始化设置:

创建密钥

ssh‐keygen ‐t rsa ‐C "xxxx@xxxx.com"

添加远程仓库

添加远程origin库关联
git remote add origin git@github.com:[用户名]/[仓库名].git

查看远程仓库
git remote -v

删除远程origin库的关联
git remote rm origin

用户名邮箱配置

全局配置

 git config --global user.name "xxxx"
 git config --global user.email "xxxx@xx.com"
 git config --list

项目单独配置(在项目根目录下)

 git config user.name "xxxxx"
 git config  user.email "xxxxx@xxxx.com"
 git config --list

Clone远程仓库

git clone 项目地址

创建本地仓库

git init

代理设置

查看全局代理设置
git config --global http.proxy

设置http,https,socket代理 以`127.0.0.1:1080`为例
git config --global http.proxy 'http://127.0.0.1:1080'
git config --global https.proxy 'http://127.0.0.1:1080'
git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'

需要代理用户名密码的情况,以http为例
git config http.proxy http://username:password@127.0.0.1:1080

忽略SSL证书错误
git config --global http.sslVerify false

删除 proxy 
git config --global --unset http.proxy
git config --global --unset https.proxy

自定义操作

让Git显示颜色,会让命令输出看起来更醒目
git config ‐‐global color.ui true

自定义git命令,以简化"git status"成"git st"为例:
git config ‐‐global alias.st status

自定义日志颜色
git config ‐‐global alias.lg "log ‐‐color ‐‐graph ‐‐pretty=format:'%Cred%h%Creset ‐%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' ‐‐abbrev‐commit"

git lg

二、GIT基本操作

添加到暂存区区

表示添加所有内容 
 git add -A
 
表示添加新文件和编辑过的文件不包括删除的文件
 git add . 
 
表示添加编辑或者删除的文件,不包括新添加的文件
 git add -u
 
强制添加一个被.gitignore文件忽略的文件的版本库
git add ‐f [文件名]

提交

git commit`

删除

从版本库删除某个文件
git rm [文件名]

版本回退

撤回到某个版本
git reset --hard [提交ID]

查看过去的提交历史
git log

查看所有的提交历史
git reflog

撤销修改

让file回到最近一次 "git commit" 或 "git add" 时的状态
git checkout -- [文件名]

可以把暂存区的file修改撤销掉(unstage),重新放回工作区
git reset HEAD [文件名]

三、GIT分支操作

创建分支

创建一个dev分支并且切换到dev分支
git checkout ‐b dev

创建dev分支
git branch dev

切换到dev分支
git checkout dev

创建远程origin的dev分支到本地
git checkout ‐b dev origin/dev

查看分支
git branch

分支命名规范: issue-100 bug修复分支 feature-sms sms功能分支

分支合并

合并dev到当前的分支
git merge dev

合并分支,并且禁用 Fast forward 
git merge ‐‐no‐ff ‐m "merge with no‐ff" dev

Fast forward模式: Git在merge时生成一个新的commit,以便于从分支历史上就可以看出合并分支信息

分支推送

当前master分支推送到远程
git push ‐u origin master

分支绑定

将本地的dev分支和远程的origin的dev分支绑定
git branch ‐‐set‐upstream dev origin/dev

以后就可以直接pull了
git pull

分支删除

删除dev分支
git branch ‐d dev

强行删除 
git branch ‐D dev

stash功能

把当前的工作状态保存下来,以便于后面恢复,包括index区。
git stash

把当前的工作状态保存下来,以便于后面恢复,包括index区。
git stash list

恢复statsh内容,但是不删除statsh
git stash apply

恢复指定的stash
git stash apply stash@{0}

删除stash内容
git stash drop

恢复同时删除stash内容
git stash pop

四、GIT标签操作

本地操作

查看分支
git tag

给当前分支打标签
git tag 

给某个提交打标签
git tag [标签名] [提交ID]

创建带有说明的标签,用 -a 指定标签名, -m 指定说明文字
git tag ‐a [标签名] ‐m "第一个正式版本" [提交ID]

查看标签说明
git show [标签名]

删除标签
git tag -d [标签名]

远程操作

标签推送
git push origin [标签名]

推送全部尚未推送到远程的本地标签:
git push origin ‐‐tags

删除远程标签
1. 先删除本地标签
    git tag -d [标签名]
2. 再推送远程
    git push origin :refs/tags/[标签名]

五、Github同步原作者代码


1. 查看远程状态
    git remote -v
    
2. 添加原作者的远程仓库到remote
    git remote add upstream 原作者远程仓库地址
    
3. 同步fork
    git fetch upstream
    
4. 切换到本地主分支
    git checkout master
    
5. 把 upstream/master 分支合并到本地 master
    git merge upstream/master
    
6. push到远程仓库
    git push origin master
    
7. 解决冲突
直接编辑冲突文件,然后提交更改重新push即可

六、GIT多人协作的工作模式

1. 首先,试图推送自己的修改
    git push origin branch-name 

2. 如果推送失败,则因为远程分支比你的本地更新,需先试图合并
    git pull 
    
3. 如果合并有冲突,则解决冲突,并在本地提交

4. 没有冲突或者解决掉冲突后,再推送就能成功!
     git push origin branch-name

如果"git pull"提示“no tracking information”,则先命令绑定关系
git branch --set-upstream branch-name origin/branch-name

七、GIT关联Gitee和GitHub

1. 删除已有的默认远程库:
    git remote rm origin

2. 关联码云的远程库 
    git remote add [远程库别名] git@gitee.com:xxx/xxx.git

3. 关联GitHub远程库
    git remote add [远程库别名] git@github.com:xxx/xxx.git

4. 查看远程库信息
    git remote ‐v

5. 分别推送到github和gitee

    以别名github为例,推送到GitHub,使用命令:
    git push github master

    以别名gitee为例,推送到码云,使用命令:
    git push gitee master

至此,我们的本地库就可以同时与多个远程库互相同步

八、Github 解决敏感配置文件上传问题

  1. 将真正的config文件加入.gitignore,然后推送一个基本的config_example文件
  2. push 结束后,再把 config_example 添加到 .gitignore 中。
  3. 经典情景: 别人先clone 你的项目,把 config_example 文件 pull 下来后,复制一份再重命名为config,根据自己的环境稍加修改config文件。然后把两文件都添加到.gitignore 中。以后push 则不会再对远程仓库造成影响。

九、.gitignore文件忽略原则

忽略文件的原则

1. 忽略操作系统自动生成的文件,比如缩略图等;
2. 忽略编译生成的中间文件、可执行文件等;
3. 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。

检查文件忽略情况

git check‐ignore ‐v [文件名]

十、搭建git私服,以ubuntu为例

基本使用

1. 安装git:
    sudo apt-get install git
 
2. 创建一个git用户,用来运行git服务:
     sudo adduser git
 
3. 创建证书登录:
 收集员工公钥`id_rsa.pub`文件,导入到`/home/git/.ssh/authorized_keys`文件里,一行一个。
 
4. 初始化Git仓库:
 选定目录作为Git仓库,假定是`/srv/sample.git`,在`/srv`目录下输入命令:
     sudo git init --bare sample.git

5. 把owner改为`git`
     sudo chown -R git:git sample.git
     
6. 禁用shell登录: 编辑`/etc/passwd`文件
    git:x:1001:1001:,,,:/home/git:/bin/bash
    改为:
    git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
    
7. 克隆远程仓库:
    git clone git@server:/srv/sample.git

扩展使用

  1. 管理公钥
    Gitosis
  2. 管理权限
    Gitolite

推荐阅读
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 前言可能你并不太了解msys2,但是作为一个程序员,你一定知道mingw,而msys2就集成了mingw,同时msys2还有一些其他的特性,例如包管理器等。msys2可以在wind ... [详细]
  • Docker系列 七. Docker 安装Jenkins
    Docker系列七.Docker安装JenkinsJenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作 ... [详细]
  • mongodb复制集部署文档 ... [详细]
  • Day 5 20190120 老男孩python学习第5天 内容整理
    今天继续看MasteringPycharm的视频,一个半小时看git的教学视频:视频1小时44分钟,看了2个半小时以上https:www.youtube ... [详细]
  • Shell脚本统计文件行数转自http:www.jb51.netarticle61943.htm示例:row_count.sh文件awk{printNR}row_co ... [详细]
  • JS·经典·炫彩菜单(动画效果) for jquery
    CSS样式body{font-size:12px;}.menuBox{width:50%;height:auto;margin:0auto;}.menuBoxul{margin:0 ... [详细]
  • 1.Looper消息机制,postDelay的Message怎么处理,Looper中的消息是同步还是异步?什么情况下会有异步消息Andr ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 建立的索引后,select语句中,where条件和排序条件必须完全和索引一样,索引才能真正起到作用,并且排序条件的先后顺序必须和索引一致.where的字段必须处于索引最开始的位置, ... [详细]
  • SQL Server中TempDB管理(version store的逻辑 ... [详细]
  • IssuesonGithubaremeantforbugreporting.Pleasepostfeaturerequestsonthe ... [详细]
  • rabbtimq相关下载与安装
    rabbitmq与elang版本关系查看https:www.rabbitmq.comwhich-erlang.html#eol-series  rpm下载地址https:githu ... [详细]
author-avatar
橡树NO洋_640
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有