GIT和GitHub的使用总结

目录


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

GIT初始化设置:

  • 创建密钥
ssh‐keygen ‐t rsa ‐C "[email protected]"
  • 添加远程仓库
添加远程origin库关联
git remote add origin [email protected]:lingcoder/xxx.git

查看远程仓库
git remote -v

删除远程origin库的关联
git remote rm origin
  • 用户名邮箱配置

全局配置

 git config --global user.name "lingcoder"
 git config --global user.email "[email protected]"
 git config --list

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

 git config user.name "lingcoder"
 git config  user.email "[email protected]"
 git config --list
  • Clone远程仓库
git clone 项目地址
  • 创建本地仓库
git init
  • 自定义操作
让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
  1. 关联码云的远程库
git remote add [远程库别名] [email protected]:xxx/xxx.git
  1. 关联GitHub远程库
git remote add [远程库别名] [email protected]:xxx/xxx.git
  1. 查看远程库信息
查看所有远程库信息
git remote ‐v
  1. 分别推送到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

猜你喜欢

转载自www.cnblogs.com/LingCoder/p/10060224.html