Git笔记

Git

总览

  • git的工作流程
  • git reset HEAD. 等同于git reset --hard HEAD

设置签名

  • 项目级别/仓库级别:仅在当前本地库范围内有效
git config user.name tom
git config user.email hello@gmail.com
  • 系统用户级别: 登入当前操作系统的用户范围
git config --global user.name tom
git config --global user.email hello@gmail.com

git基础操作

状态查看

git status
查看工作区,暂存区状态

初始化

+ 初始化: git init 文件夹名
+ 初始化: git init # 当前路径全被管理

添加

git add .  # 添加所有文件
git add [file name]  # 添加指定文件  例如 git add hello.txt

提交

git commit -m "commit message" [file name]  or git commit -m "commit message" # 有冲突是不带具体文件名
将暂存区的内容提交到本地库

查看历史记录

  • git log
  • git log --pretty=oneline
  • git log --oneline
  • git reflog

根据log进行前进/后退

本质

基于索引值操作[推荐]

git reset --hard [局部索引值]
例如: git reset --hard a6ace91

使用^符号: 只能后退

git reset --hard HEAD^
注: 一个^表示后退一步, n 个表示后退 n 步

使用~符号: 只能后退

git reset --hard HEAD~n
注: 表示后退 n 步

reset命令的三个参数对比

  • --soft参数
仅仅在本地库移动 HEAD 指针
  • --mixed参数
在本地库移动 HEAD 指针
重置暂存区
  • ***--hard参数***
在本地库移动 HEAD 指针
重置暂存区
重置工作区

删除文件并找回

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

比较文件差异

git diff [文件名]
  将工作区中的文件和暂存区进行比较
git diff [本地库中历史版本] [文件名]
  将工作区中的文件和本地库历史记录比较
不带文件名比较多个文件

分支操作

创建分支

git branch [分支名]

查看分支

git branch or git branch -v

切换分支

git checkout [分支名]

创建并切换分支

git checkout -b dev

删除分支

git branch -d dev

合并分支

第一步: 切换到接受修改的分支(被合并, 增加新内容) 上 git checkout [被合并分支名]
第二步: 执行 merge 命令 git merge [有新内容分支名]

解决冲突

  • 冲突的表现(合并分支是可能会产生冲突)
  • 冲突的解决
第一步: 编辑文件, 删除特殊符号
第二步: 把文件修改到满意的程度, 保存退出
第三步: git add [文件名]
第四步: git commit -m "日志信息"
        注意: 此时 commit 一定不能带具体文件名

忽略文件

  • .gitignore windows上后面加个.就行了
忽略文件
  - 空文件夹不被管理
  - 指定某些文件或者文件夹不被git管理
  - 在项目根路径,跟.git文件夹一个路径,新建.gitignore[.],在里面配置

  语法:
    # 号是注释, 没有用
    文件夹名字,表示文件夹忽略,不被管理
    /dist 表示根路径下的dist文件夹,不被管理
    *.py  表示后缀名为py的文件,都被忽略
    *.log*

本地库和远程库

  • linux下查看隐藏的文件 ls -la 或者 ls -lA
  • 11-18号加------------------------------
  • linux下显示/不显示以.开头的隐藏文件 Ctrl + h
  • 团队内部协作
  • 跨团队协作

创建远程库

  • 刚开始最好不要创建readme等文件,防止冲突

创建远程库地址别名

git remote -v 查看当前所有远程地址别名
git remote add [别名] [远程地址]

推送

  • 后面的分支是本地仓库的名字
    git push [别名] [本地分支名]

克隆

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

团队成员邀请

在setting 下的 collborator-->Add collaborator
copy invite link给其他用户,其他用户登录并访问邀请链接

拉取

pull=fetch+merge
git fetch [远程库地址别名] [远程分支名]
git merge [远程库地址别名/远程分支名]

git pull [远程库地址别名] [远程分支名]

团队内部发生冲突

如果不是基于 GitHub 远程库的最新版所做的修改, 不能推送, 必须先拉取。
拉取下来后如果进入冲突状态, 则按照“分支冲突解决” 操作解决即可。

跨团队协作

  1. 首先fork别人仓库
  2. 本地修改,然后推送到远程[自己的远程仓库]
  3. Pull Request
  • New pull request
  • Create pull request

(团队人员)

  1. 查看Pull requests
  2. 交流
  3. 审核代码
  4. 合并代码(Merge pull request, confirm merge)
  5. 将远程库修改拉取到本地

SSH登录

step1: 进入当前用户的家目录
  $ cd ~
step2: 删除.ssh 目录
  $ rm -rvf .ssh
step3: 运行命令生成.ssh 密钥目录
  $ ssh-keygen -t rsa -C atguigu2018ybuq@aliyun.com
  [注意: 这里-C 这个参数是大写的 C]
step4: 进入.ssh 目录查看文件列表
  $ cd .ssh
  $ ls -lF
step5: 查看 id_rsa.pub 文件内容
  $ cat id_rsa.pub
step6: 复制 id_rsa.pub 文件内容, 登录 GitHub, 点击用户头像→Settings→SSH and GPG keys
step7: New SSH Key
step8: 输入复制的密钥信息
step9: 回到 Git bash 创建远程地址别名
  git remote add origin_ssh git@github.com:atguigu2018ybuq/huashan.git
step10: 推送文件进行测试
原文地址:https://www.cnblogs.com/zranguai/p/15549640.html