此处记录笔者在学习Git上遇到的坑以及相关的学习笔记,留备日后避坑。新手上路,高手轻喷…

基本操作

跨团队协作

fork //复制他人远程库到自己远程库上
git clone
git push
pull request //拉取请求 >> 审核 >> merge 合并

设置签名

作用:区分不同开发人员的身份
这里设置的签名和登陆远程库(代码托管中心)的账号密码没有任何关系

命令:
项目级别/仓库级别:仅在当前本地库范围内生效(二者都有时优先采用)

git config user.name username
git config user.email email

信息保存位置:本地库/.git/config

系统用户级别:登陆当前操作系统的用户范围

git config --global user.name username 
git config --global user.email email

信息保存位置:~/.gitconfig

版本前进和后退

git reflog

黄色字段为部分哈希值(也是下面的索引值)
HEAD@{移动到当前版本需要多少步}

  • 基于索引值操作[推荐]

git reset --hard 局部索引值
  • 使用^符号:只能后退

git reset --hard HEAD^ //往前回滚一个版本
git reset --hard HEAD^^ //往前回滚两个版本
  • 使用~符号

git reset --hard HEAD~num //num为回退的步数

reset命令的三个参数对不

--soft

  • 仅仅在本地库移动指针

--mixed

  • 在本地库移动HEAD指针
  • 重置缓存区

--hard

  • 在本地库移动HEAD指针
  • 重置暂存区
  • 重置缓存区

删除文件并找回

  • 删除前,文件存在时的状态提交到了本地库
  • 操作:git reset --hard [指针位置]
    删除操作已经提交到本地库:指针位置指向历史记录
    删除操作尚未提交到本地库:指针位置使用HEAD

比较文件

  • 和暂存区进行比较:git diff [files]
    -[Red]
    +[Green]
  • 和本地上个版本进行比较:git diff [本地库历史版本] [files]
  • 不带文件名可以比较多个文件:git diff

分支操作

  • 创建分支:git branch [分支名]
  • 查看分支:git branch -v
  • 切换分支:git checkout [分支名]
  • 合并分支:
    第一步:切换到被合并的分支上:git checkout [被合并的分支名]
    第二步:执行merge命令:git merge [另一个分支名]
  • 解决冲突:
    第一步:编辑文件,删除特殊符号
    第二步:把文件修改到满意的程度,保存退出
    第三步:git add [文件名]
    第四步:git commit -m "日志信息" (此时commit一定不能带文件名)

克隆

  • 完整的把远程库下载到本地
  • 创建origin远程地址别名
  • 初始化远程库
  • 命令:git origin [远程库地址]

拉取

pull=fetch+merge

常用

git init //初始化本地库,并生成.git文件夹
git add <file> //添加到暂存区
git commit //添加到本地库
git status //查看状态
git checkout -- <file> //从暂存区撤销工作区的修改
git reset HEAD  <file> //从暂存区内删除该文件
git commit -m "commit message" <file> //提交到库上,并提交信息
git log //多屏查看历史版本记录。空格翻页、b向上翻页、q退出
git log --pretty=oneline //历史版本以每条一行的方式呈现
git log --oneline //历史版本以每条一行的方式呈现并只截取部分哈希值(仅显示当前版本的历史版本)
git reflog //在--online基础上出现HEAD@{num}(显示历史版本)
git help (command) //command为具体命令,可以查看该具体命令的文档
git branch -v //查看分支
git branch [new-branch] //创建一个名为new-branch的新分支
git checkout [branchname] //切换分支
git remote -v //查看远程库
git remote add [别名] [仓库远程地址] //设定远程库信息
git push [远程库别名] [分支名] //将本地库信息推送到远程库
git clone [仓库远程地址] //克隆远程仓库到本地
git fetch [远程库别名] [分支名] //将远程库信息拉取到本地,但没更改本地工作区的文件
git checkout [远程库别名]/[分支名] //切换到拉取的本地
git merge [远程库别名]/[分支名] //将拉取的本地内容合并到工作区
git pull [远程库别名] [分支名]= git fetch+git merge

REFERER:

Git使用教程,最详细,最傻瓜,最浅显,真正手把手教