整理:
GIT知识
.Git配置分为三个方面:系统配置、全局(用户)配置、仓库配置
系统配置:--system 会在/etc下生成.gitconfig文件
用户配置:--global 会在用户家目录下生成.gitconfig文件
仓库配置:--local 会在git仓库目录下生成.gitconfig文件
git config --system --list [优先级最低]
git config --global --list [优先级次之]
git config --local --list [优先级最高]
git config --global --list ##这些配置都在C:\Users\****\.gitconfig
git config user.email ##查看邮箱
git config user.name ##查看用户名
git config --list
git config --global core.longpaths true ##当文件太长需要拉的时候,会报错
git config --global core.autocrlf input ##避免提交会变成中文换行符;提交时会变成LF格式
git config --global user.pass P14************z ##添加token,从git web界面生成的
git config --global credential.helper store ##允许git记录用户名和密码
git config --global user.name "csren1" ##修改用户名
git config --global user.email "Your_email" ##修改用户邮箱
git config --global color.branch.upstream "blue bold" ##设置上游分支是蓝色
git config core.ignorecase false ##关闭git忽略大小写配置,git提交的时候就能检测到名称的更改,就能提交到仓库
##若要设置默认的行尾符为Unix格式,需要添加以下两条配置:
使用git pull命令从远程仓库获取最新的更新时,Git会自动将Windows风格的CRLF(Carriage Return + Line Feed)转换为Unix风格的LF
git config --global core.autocrlf input
git config --global core.eol lf
CRLF=`\r\n` carriage return line feed,回车换行,windows常用。
LF=`\n`;line feed,换行,Linux常用。
###core.autocrlf
AutoCRLF
#提交时转换为LF,检出时转换为CRLF
git config --global core.autocrlf true
#提交时转换为LF,检出时不转换
git config --global core.autocrlf input
#提交检出均不转换
git config --global core.autocrlf false
修改分支名字:
git branch -m <new_branch_name> 该命令将更改当前分支的名称为新的分支名称。 如果要更改其他分支的名称,则需要首先切换到该分支
git push origin :old-branch new-branch 删除老分支,推送新分支
当git commimt 提交信息的时候,写错了需要修改
git commit --amend --only 然后编辑或者git commit --amend --only -m "****"
一份新修改(或者创建的)文件处于 – 工作区。
当 git add 之后, 文件会从工作区移动到暂存区。
当 git commit 之后, 文件会从暂存区移动到本地仓库。
当 git push 之后,文件会从 本地仓库 移动到 远程仓库。
回退
- a. git 回退工作区内容到编辑之前的状态: git checkout -- file_name
- b.如果已经git add 提交到了缓存区想要修改:
第1步:将暂存区的代码回滚到工作区: $ git reset HEAD
第2步:将工作区的代码回滚: $ git checkout -- <file> - c.文件在本地仓库进行回退:回滚到工作区(相当于撤销git commit及git add操作)并且丢弃修改内容
git log/git reflog 然后git reset --hard commit_id (这里是 8c12) - d.文件已经在远程仓库中
git log或者git reflog
git log 然后git reset --hard commit_id (这里是 8c12)
加上 -f 来强制推:git push - f
git init ##新建一个文件夹,执行完之后,就会创建一个本地仓库,并在当前文件夹下创建一个.git文件夹.
git log --oneline #打印更简单化
git log --oneline --decorate 在哪个分支上操作的
git log -2 查看最近的两条操作日志
git log branchname ###可以显示特定分支的log
git status:查看仓库状态
git checkout "target branch" ##切换分支
git checkout -b linux #创建分支并切换到该分支
git tag # 查看tag标签列表
git branch -r ##查看远程分支
git branch -d csren ##删除分支csren
git tag -d v1.0 ##删除标签
git tag -a v1.0 ## -a参数会允许你添加一些信息,即make an annotated tag.
##当你运行git tag -a命令的时候,Git会打开一个编辑器让你输入tag信息.
我们可以利用commit SHA来给一个过去的提交打tag:
git tag -a v0.9 XXXX
git diff "xxx.txt" ##工作区和暂存区之间差异对比
git diff --cached(--staged) "xxx.txt" ##暂存区和版本库之间差异对比
git diff master ##工作区和版本库之间差异对比
git log --oneline ###查看提交历史
git status -s ##查看文件状态,如果修改了README.md
git status -s: -s表示short, -s的输出标记会有两列,第一列是对staging区域而言,第二列是对working目录而言
#####输出:
M README.md
git remote -v: 查看远程库信息
如果你clone一个project,Git会自动将原来的url添加进来,别名就叫做:origin.
git remote rm origin(删除关联的origin的远程库)
git remote add [alias] [url]: 添加一个新的remote repo.
git remote rm [alias]: 删除一个存在的remote alias.
git remote rename [old-alias] [new-alias]: 重命名.
git remote set-url [alias] [url]:更新url. 可以加上—push和fetch参数,为同一个别名set不同的存取地址.
git checkout a1 #将暂存区中文件a1覆盖工作目录区中的a1内容
$ git checkout master #切换到master分支
$ git merge dev_CS #将dev_CS分支的内容合并到master分支```
####如果工作区已经修改了,想放弃修改
```bash
git restore file_name ##方式一
########
git restore README.md ##撤回某一个文件
git restore . ##撤回全部修改的文件
########
git checkout -- file_name ##方式二
#####撤销暂存区文件更改:执行完<git add>
git restore --staged file_name ##取消git add file_name的操作
git restore --staged . ##取消git add .的操作
git diff --staged "xxx.txt" ##撤销完之后,再对比暂存区应该和本地仓库应该就一致了
#####文件对比
工作区和暂存区之间差异对比
$ git diff "xxx.txt"
暂存区和版本库之间差异对比
$ git diff --staged "xxx.txt" ###方式一
$ git diff --cached "xxx.txt" ###方式二
工作区和版本库之间差异对比
$ git diff master
HEAD 是最新版本,HEAD^ 是上一个版本
$ git reset --hard HEAD^
######更改分支名字
git checkout <要修改分支的名字> ##先切换到要修改的分支
git branch -m <new_branch_name> ##更改当前分支的名称为新的分支名称
git push origin :old-branch new-branch 删除老分支,推送新分支
#####详细操作
指定分支下载:要clone指定分支是 git clone -b 指定分支名称 项目ssh地址
[root@hadoop101 ~]#mkdir GIT_Code
[root@hadoop101 ~]#cd GIT_Code
[root@hadoop101 ~]#git init
[root@hadoop101 ~]#git clone -b dev https://或者ssh
[root@hadoop101 ~]#git pull ##先切换到dev分支下
[root@hadoop101 ~]#git merge dev ##切换到DEV_CS分支后执行该命令;#将dev分支下的内容合并到dev_CS分支
[root@hadoop101 ~]#git add . ##添加文件
[root@hadoop101 ~]#git commit "***"
[root@hadoop101 ~]#git push