Git 快速开始

一. 下载git

地址 : https://git-scm.com/downloads

二.git基础

1.git config 相关命令

# local 只对某一个仓库有效git config --local# global 对当前用户的所有仓库有效git config --global# system 对系统的所有用户都有效git config -system# 查看 local仓库的所有配置列表git config --list --local # 设置用户名git config --global user.name 'name'# 设置邮件git config --global user.email 'name@163.com'# 提交时候转换为LF , 检出时候转换为CRLFgit config --global core.autocrlf true# 提交时候转换为LF , 检出时候不转换git config --global core.autocrlf input# 提交检出时候均不转换git config --global core.autocrlf false

2.git仓库 相关命令

(1). 对于已有项目交给git管理

cd 项目目录git init

(2). 新建项目并交给git管理

cd 某个文件# 会在当前路径下创建和项目名称相同的文件夹git init your_project

3. git提交相关

# 查看 git 状态git status# 将该文件提交到暂存区git add fileName     #提交单个文件git add -u             # 将目录下被git管理的文件全部提交到暂存区# 提交文件到本地仓库git commit -m'commit message'# 查看git提交记录git log

4.git文件重命名

以把 readme 文件重命名为 readme.md 为例

#方法1 : mv readme readme.mdgit rm readme git add readme.mdgit commit -m'renameFile'#方法2 : git mv readme readme.mdgit commit -m'renameFile'

5.  查看版本演变历史

git log # 查看版本记录git log --oneline # 简洁查看git log -n2 # 查看最近2次的git log --all # 查看所有分支信息git log  --all --graph # 查看多个分支之间的关系git log --oneline -n2 --all --graph # 全部分支简洁的最近两次版本历史,并展示多分支关系

6. git 图形界面查看版本记录

# 打开图形界面 , 可以查看git树形图,并进行一些操作gitk --allgitk

三.git进阶

1. 查看提交的内容

 # 显示对象类型git cat-file -t hashvalue # 看内容git cat-file -p hashvalue

例如 :

2. git - 分支

(1)新建分支/切换分支

# 假设基于HEAD : b2v3 创建新的分支git checkout -b newbranchName b2v3 # 不使用暂存区 , 直接提交到本地仓库 git -am'message'git commit -am'Test'# 提交之后commit的信息假设为 b2v6 , 使用b2v6新建一个分支git branch branch_name b2v6# 查看所有分支信息git branch -v # 查看所有分支信息 , 包括远端分支git branch -av # 基于某一个分支创建分支并切换到该分支 (加上-b会新建并自动切换分支)git checkout -b new_branch_name old_branch_name

(2)删除分支

# 查看当前git结构gitk --all## 删除分支# 如果分支没有完全合并无法删除 , 删除请使用 -Dgit branch -d branch_name# --delete --force 表示确实不再使用这个分支git branch -D branch_name

3. 清除记录

清除暂存区和工作区的记录

git reset --hard# 下面比较的参数也可用在这里 , 灵活一些呦# 删除本地代码 , 并回退到某一版本git reset --head HEAD~n# 不删除代码只是回退版本git reset --soft HEAD~n

4. git 比较

# 比较差异 比较 c1v2 的commit 和 c2v3 的commitgit diff c1v2 c2v3# 比较当前HEAD 和其父亲的比较 (父亲可以理解为上一次commit) (~n,可以理解为上几次提交)git diff HEAD HEAD~1git diff HEAD HEAD^# 比较当前HEAD 和其父亲的父亲比较git diff HEAD HEAD^^git diff HEAD HEAD~2

5. git message相关操作

(1)修改最新提交的message

git commit --amend

之后根据弹出的窗口进行修改即可.

(2)修改某次提交的message

示例 :

#查看当前记录git log# 修改某次message , 要修改的是7085d ,由于他是在8c543基础上演变出来的 , 所以要修改的实际上是80543git rebase -i 8c543

# 原来的命令是 pick , 表示只是一次commit , 将其修改为reword , 并保存

# 在新弹出来的窗口修改message , 并保存

# 检查是否修改成功

6. git commit相关操作

(1)合并多个连续commit

# 1.进入交互界面 , 同样选择父亲的 HEADgit rebase -i# 2.pick => squash# 3.提交合并message

(1)合并多个不连续commit

# 1.进入交互界面 , 同样选择父亲的 HEAD# 如果选择的是第一次提交 , 那么该指令出现的列表会缺少第一次的pick , 此时需要手动添加进来git rebase -i# 进行合并操作 : 将需要合并的多次commit 顺序放在一起 , 并修改pick为 squash , 删除已经合并commit的pick# 检查合并结果git state# 进行合并后的message修改git rebase --continue# 查看版本树 , 确认结果git log --graph

7.git diff 操作

暂存区 : add之后文件会存储在暂存区
HEAD : 头指针指向的地方 , (最近一次commit)
工作区 : 本地代码开发环境

(1) 比较暂存区和HEAD所包含文件的差异

git diff --cache

(2) 比较暂存区和工作区所包含文件的差异

# 默认比较的就是暂存区和工作区git diff# 比较 filename1 filename2 这两个文件的差异git diff -- filename1 filename2# 查看不同 commit之间的指定文件差异git diff branchName1 branchName2 -- fileName# 比较 b2v3 b3v4 两次commit的指定文件差异git diff b2v3 b3v4 --filename

8.git 回滚 操作

(1) 如何让暂存区恢复和HEAD一样

# 取消暂存区的所有变更 , 恢复到工作区# 改变暂存区内容 resetgit reset HEAD  # 取消暂存区部分文件的更改 : 只恢复 filename , filename2文件git reset HEAD -- filename filename2

(2)如何让工作区文件恢复为何暂存区一样的

# 将 工作区filename  文件恢复为暂存区文件git checkout -- filename   # 用于改变工作区内容 checkout

(3)清除最近几次提交

# 回滚到b2v3版本git reset --hard b2v3

(4) 删除文件相关操作

# 方法一 : rm fileNamegit rm fileName# 方法二 : 直接使用 git rm .会同时删除工作区的该文件,并同步到暂存区git rm fileName

9.git 临时保存 操作

# 保存git stash# 查看 stash 列表git stash list# 之前存放的内容弹出来 , 放到工作区 , stash列表中该记录删除git stash pop# 之前存放的内容弹出来 , 放到工作区 , stash列表该记录不会删除git stash apply

10. git 忽略指定文件

使用 : .gitignore 进行管理
对于不同语言的项目 , 可以参考gitghub项目进行配置 : https://github.com/github/gitignore

11.git备份

(1) 下载

# 备份远端代码#哑协议备份git clone --bare github.com/YczYanchengzhe/gitbook.git   ya.git#智能协议备份git clone --bare file:///github.com/YczYanchengzhe/gitbook.git   ya.git#查看远端地址git remote -v# 添加远端地址(intelligent : 智能)#git remote add remoteConName 协议git remote add intelligent file:///path/to/repo.git

(2) 推送

# 推送代码 : 推送远端 intelligent   , 本地分支 : localbranchNamegit push --set-upstream intelligent  localbranchName# 把本地所有分支信息同步推送到远端git push intelligent --all

(3) 拉取

non fast forward  : 如果拉取时候出现冲突 ,此时git会提示你的仓库此时处于该状态 . git仓库中已经有一部分其他人提交的代码,所以它不允许你直接把你的代码覆盖上去。

# git fetch:只会把远端代码拉下来,不会和本地关联(intelligent:链接名,master:分支名)git fetch intelligent master
# 相当于执行了 : fetch + mergegit pull

不同情景的merge

# 不同人修改了不同文件如何处理git pull#不同人修改了同文件的不同区域如何处理git pull# 同时变更了文件名和文件内容 , 并未冲突git pull
# 不同人修改了同文件的同一区域git pull# 处理冲突# To doSomeThing# (1) 解决完冲突,进行提交git commit # (2) 冲突不想要了,恢复到未拉取状态git merge --about
# 把同一文件改成了不同的文件名# 此时会冲突 , git会把这两个文件都会拉取下来 , 开发者自行解决# 两个人分别将  old.md 重命名为 new1.md , new2.mdgit rm old.mdgit add new1.mdgit rm new2.md# 之后commit即可

(4) 合并代码

—allow-unrelated-histories : 默认情况下,git mergecommand拒绝合并不具有共同祖先的历史记录。合并两个独立开始的项目的历史记录时,可以使用此选项来覆盖此安全性。因为这是非常罕见的情况,所以默认情况下不存在用于启用此功能的配置变量,因此不会添加。

# 合并远端的master分支代码git merge github/master#  合并代码 允许合并不相干的两个树, 没有共同的父亲git merge --allow-unrelated-histories github/master

12.配置公私钥

查看手册 : https://docs.github.com/en

# 检查sshls -al ~/.ssh# 生成sshssh-keygen -t ed25519 -C "your_email@example.com"# 查看公钥cat /c/Users/A/.ssh/id_rsa.pub

13.优化仓库存储

# 清理不必要的文件并优化本地存储库git gc

git 将暂存区文件提交_Git知识相关推荐

  1. git 将暂存区文件提交_git 暂存区

    一.Git基本工作流程 1.初始化一个仓库 git  init git  clone git仓库分为两种情况: 第一种是在现有项目或目录下导入所有文件到 Git 中: 第二种是从一个服务器克隆一个现有 ...

  2. git 将暂存区文件提交_git文件状态,暂存与提交

    git中文件的状态有两种:已跟踪或者未跟踪. 从现有目录中创建git仓库 git init git仓库(repository),也叫做版本库.使用git的目的是管理项目,并且保存一些随时间变化的文件. ...

  3. git 将暂存区文件提交_git基础命令之提交文件

    原标题:git基础命令之提交文件 测试百晓生 ceshibaixiaosheng 测试圈懂的最多的人,跟着百晓生一起学测试,你定会有收获.我就在你的口袋,你--有问题难得倒我吗? PS:一颗安利,百晓 ...

  4. 16、git删除暂存区文件

    一.查看文件 git status -s 二.删除文件 git rm --cached (文件路径)只删除暂存区文件 git rm --f(文件路径)删除暂存和物理文件

  5. 【原创】Git删除暂存区或版本库中的文件

    0 基础     我们知道Git有三大区(工作区.暂存区.版本库)以及几个状态(untracked.unstaged.uncommited),下面只是简述下Git的大概工作流程,详细的可以参见本博客的 ...

  6. git reset --hard HEAD 后恢复暂存区文件

    git reset --hard HEAD 后恢复暂存区文件 1.参考资料 git reset–hard后恢复暂存区文件 git reset–hard后恢复暂存区(未提交)文件 关于git reset ...

  7. git如何查看缓存区文件内容_GIT实操手册 —— 值得收藏的GIT常用命令字典

    目录git config 配置 git help 显示有关Git的帮助信息 git init 初始化 git add 将文件内容添加到暂存区 git clone 将存储库克隆到新目录中 git sta ...

  8. Git 的暂存区(staging area)理解

    通常在很多传统集中式版本控制系统中,只有两个空间用来管理你的数据,一个是你的working copy(工作区),另一个便是 datastore(版本库),然而在Git中,引入了staging area ...

  9. Git-删除暂存区文件

    Git命令: git rm --cached <file> 当我们使用 git add 命令添加工作区的文件到暂存区时,我们想要对这个暂存区里面的文件执行删除操作时,我们则使用 git r ...

最新文章

  1. 有方向的CNN--Oriented Response Networks
  2. anaconda有什么用?pycharm有什么用?anaconda怎么与pycharm一起联合使用?
  3. linux makefile 只能使用Tab键进行文本缩进
  4. Win64 驱动内核编程-18.SSDT
  5. 当代最值得收藏的画家作品_欣赏当代知名画家谭日群——国画人物画书法作品欣赏...
  6. SAP Fiori应用里一些OData错误排查的最佳实践
  7. Kotlin 第三讲——集合篇1
  8. java可选参数_Java可选
  9. transition css3 渐变效果
  10. Python 玩转数据 17 - Pandas 数据处理 合并 pd.merge() df1.merge(df2)
  11. 键盘代替鼠标工具 Vimac for Mac
  12. 在Postfix里给邮箱定虚拟别名
  13. 魅九网下载最新的android固件下载地址,iOS9固件下载地址一览 全设备下载地址...
  14. BAT批处理如何去写Windows防火墙规则
  15. 留痕笔记2.0升级到delphi11踩过的坑
  16. 聊聊解决方案架构师的那些事儿 | 文末有赠书
  17. ccc.exe_什么是CCC.exe,为什么运行?
  18. 测试用例之性能测试用例
  19. 华为搜索引擎问世!互联网格局将改写?
  20. 计算机实时控制和过程控制,实时控制程序

热门文章

  1. secureCRT 实现windows和linux文件互传
  2. 6264:走出迷宫(DFS和BFS)
  3. gunicorn之日志详细配置
  4. 在Java中使用Socket模拟客户端和服务端(多线程)
  5. javascript的时间段选择
  6. 不用中间变量交换两个变量的值
  7. 【转】解决父容器高度不跟随子元素扩大的问题
  8. 业界谈AI赋能传统金融:精细化、数字化、个性化成三大关键词
  9. 047_输出一下byte的所有值
  10. java 加法表编程_java编程——数据的加法