Git一文入门(包括github)

169 阅读4分钟

git命令

第一步要进入目标文件鼠标右键Git Bash Here

git init

git有管理这个文件的权限

git status

检测当前文件夹的文件

git add xxx(xxx为文件名)

增加管理文件xxx

git add .

增加所有文件的管理

git commit -m "版本信息描述"

生成版本

如果报错

写上

  • git config --global user.email "you@example.com"
  • git config --global user.name "Your Name" "前有空格

git中文件三种状态的变化

  1. 红色(工作区): 新增的文件/修改了的原文件 => git add 文件名
  2. 绿色(暂存区): git已经管理起来 => git commit -m "描述信息"
  3. 生成版本(版本库)

git log

git log --graph 打印版本图

git log --graph --pretty=format:'%h %s' 简略版 %h表示提交版本 %s表示提交信息

打印过往版本

git reset --hard 版本号(log打印出版本的版本号)

回滚到之前版本

git reflog

可以打印出回滚操作之前的版本(git log)打印不出

git checkout -- 文件名

用于刚修改完的文件 (红色状态) 输入完命令后 文件会回到修改之前的上个版本

git reset HEAD 文件名

让暂存区的文件退回到工作区(红=>绿)

git branch

查看当前所处的分支

git branch 分支名

创建分支

git checkout 分支名

跳到目标分支

git checkout -b 分支名

创建分支并切换到分支

git branch -d 分支名

删除分支

如何合并分支

  1. 切换回master分支
  2. git merge 分支名 合并分支
  3. git branch -d 分支名 删除分支
如果是两个分支跟master合并会得到一个冲突文件,需要自己手动修改

git merge 分支名

合并分支

git barnch -d 分支名

删除分支

git tag -a -tag名 -m '详细信息'

给当前版本加标签

github部分

git remote add origin githubn仓库地址

将origin代替你的仓库地址

PS:如果仓库地址是https的 每次都要输入账号密码,如果是ssh的要设置ssh秘钥 操作可自行百度

git remote set-url origin 仓库地址

切换https与ssh地址

git push -u origin 分支名

将目标分支推到仓库(要输入github账号密码)

git clone 仓库地址

把仓库里的所有代码拿下来(虽然git branch不会显示分支 但是可以通过git checkout 直接切换仓库里有的分支)

git pull origin 分支名

这个命令相当于

git fetch origin 分支名(github到版本库) + git merge origin/dev(版本库到工作区)

更新分支代码

git push origin --tags

把tag标签推送到github

Rebase(变基)(使git记录简洁)

rebase的使用准则

如果提交存在于你的仓库之外,而别人可能基于这些提交进行开发,那么不要执行变基。

git rebase -i 两种写法

  1. 第一个是版本号 如果最新版本v4 写了 v2的版本号 就等于是要操作v4-v2版本记录
  2. 第二个是 HEAD~数字 如果写的是3 就等于操作最新版本开始往下数到第三个 如最新版本v4 写了 git ebase -i HEAD~3 就表示要操作v4-v2
  • 操作之后会进入vim模式 按i编辑 (根据指示 一般合并的记录将pick改成s) 按esc退出 然后:wq保存

  • 保存之后弹出的界面可以修改合并后的详细描述 同样是vim模式

ps:合并记录不要合并已提交到github上的记录

合并分支信息

它的原理是首先找到这两个分支(即当前分支 experiment、变基操作的目标基底分支 master) 的最近共同祖先 C2,然后对比当前分支相对于该祖先的历次提交,提取相应的修改并存为临时文件, 然后将当前分支指向目标基底 C3, 最后以此将之前另存为临时文件的修改依序应用。将 C4 中的修改变基到 C3 上现在回到 master 分支,进行一次快进合并。

更多详细例子可参考下面链接

参考来源 git-scm.com/book/zh/v2/…

  1. 切换到分支
  2. git rebase master
  3. 切换回master 合并分支 还有一种写法可以直接包括第一二步,但还是要写第三步

$ git rebase 目标分支 要变基的分支 上图分别是experience master

打印的信息不会出现分支

情况:假设有个v1版本 在a地写到了v2没上传到github 到b地写了v3功能 这时候再回到a地 从github拿代码下来 如果用pull 会产生分支记录

这时候需要 git fetch origin 目标分支 然后再 git rebase origin/目标分支

简而言之就是 git pull origin 目标分支 写成 git fetch origin 目标分支 + git rebase origin/目标分支

如果rebase操作发生错误 根据指令操作 最后git rebase --continue

快速解决冲突

  1. 安装beyond compare 打开 Beyond Compare -> Beyond Compare Menu ->*** Install Command Line Tools***

  2. git中配置

$ git config --local merge.tool bc3
$ git config --local mergetool.path 'E:\git文件\Beyond Compare\Beyond Compare 4'
$ git config --local mergetool.keepBackup false
  1. git mergetool用

给开源项目贡献代码

  1. fork代码

    copy源代码到自己仓库

  2. 在自己仓库修改代码

  3. 给源代码作者提交修复 bug申请

.gitignore文件 在这个文件里写的文件名 这些文件会被git忽略

参考 github.com/github/giti…