git 命令使用

git 使用

全局配置

首次安装git后进行一些配置,提交代码的时候就会将用户名和邮箱存入版本库中,其他开发人员就可以看到是谁提交的代码

  1. 设置全局用户名:git config --global user.name github上的用户名
  2. 设置全局的邮箱:git config --global user.email 邮箱
  3. 查看全局邮箱:git config --global user.email
  4. 查看所有配置信息:git config --list

因为git是分布式版本控制系统,所以, 每个机器都必须自报家门:你的名字和Email地址。

公钥配置

详见博客

从github或码云上下载项目

  1. 切换到存放git版本库的地方
  2. Git clone url(github上的地址)

cd 项目名(进入项目文件夹内)master:主分支

  1. 注:如果不想从远程获取版本库,在本地计算上生成版本库:git init 详见-git remote

git的三个区

  1. 工作区(当前编辑的代码区)
  2. 暂存区(作为过渡层、避免误操作、保护工作区和版本区、分支处理;add)
  3. 版本库(版本控制)

git 命令

  • git status (查看工作区)
  • git add 文件名(将文件添加到暂存区)/ git add .(点或者星*) (将所有工作区的中内容加入暂存区)

执行后可能出现的状况:1.不会有任何提示,但是提交成功了;2.失败会提示fatal:xxx;3.可能会出现警告,由于linux和window的换行符不一致导致,警告内容:warning:LF will be replaced by CRLF in a.txt. 解决方式:git config --global core.autocrlf false

  • git commit –m "注释内容"(提交暂存区所有文件存入版本区)/ git commit -a -m "注释" (直接从工作区存入暂存区再存入版本区,-a:存入暂存区,-m:存入版本区)

如果只输入git commit 会出问题,这时需要ESC + : + q! 退出就好

  • git push(提交到远程仓库)

git分支

  • git branch (查看分支)
  • git branch 分支名 (创建一个新分支)
    • git branch –d 分支名(删除分支)(如果出现无法删除子分支,将-d改为-D,强制删除)
    • - -merged (查看当前分支下所合并的分支)
    • --no-merged (查看没有合并的分支)
  • git checkout 分支名(切换分支)
    • git checkout –b 分支名 (创建并切换到新分支)禁止在空分支基础上去切换另一个分支,会删除上一个空分支
  • git merge 分支名(合并分支;git merge dev:合并dev分支到当前分支)
  • git diff branch1 branch2 (显示出两个分支之间所有有差异的文件的详细差异)
  • git diff branch1 branch2 --stat (显示出两个分支之间所有有差异的文件列表)
  • git diff branch1 branch2 xxx (显示指定文件的详细差异)

在本地创建分支并提交到远程

git checkout -b dev1 origin/dev
git push origin dev1

差异对比

  • git diff (暂存区-与工作区+的差异对比)
  • git diff --cached(--staged) (版本库-与暂存区+的差异对比)
  • git diff master (版本库-与工作区+的差异对比)

日志+版本号

  • git log (查看日志) : 如果版本太多,一次显示不全,想要退出此状态,请按q
  • git reflog (操作记录,可以回到当前版本;查看历史记录的版本号id)

撤销

  • git reset HEAD <file.name> (从暂存区撤销回工作区)/ git reset HEAD (用版本库中的文件去替换暂存区的全部文件)
  • git checkout -- <file.name> (从工作区撤销回上一次提交的版本区,用暂存区指定文件去替换工作区的指定文件)/ git checkout HEAD <file.name> (用版本库中的文件替换暂存区和工作区的文件)
  • git commit --amend (撤销上一次的提交命令,重新提交新的代码)

删除

  • git rm <file.name> (如果工作区删除了一个文件,通过此命令可以把暂存区的文件删除)
  • git rm -f <file.name> (如果删除暂存区的文件,那么工作区和暂存区的文件都会删除)
  • git rm --cached <file.name> (只删除暂存区的文件,工作区的文件保留)
  • git rm -r xxx (删除文件夹)

恢复/版本回退

  • git checkout (commit id) <指定文件> (还原删除的文件)
  • git reset --hard (commit id)(还原版本,回退到指定commit id版本)
    1. git reset --hard HEAD^ (返回上一个版本,回退一次提交)git reset --hard HEAD^^
    2. git reset --hard HEAD~ (返回上几个版本)

版本冲突

合并分支时,如果在同一个文件,在同一个地方,都修改了或新增内容会引起版本冲突。

同步到远程仓库

  • git remote (查看远程仓库的名字) git remote add origin 远程仓库名字(地址)(关联一个远程库)
    1. git remote –v (查看远程地址)
    2. origin (远程仓库的名字)
  • git push origin master (git会把master分支推送到远程仓库对应的分支上)
  • git push -u(第一次要用-u,以后不用) origin master
  • git push -u origin master -f (强制push到远程仓库)

若成功推送过一次代码后,电脑不能够自动记住github的账号和密码,执行以下命令解决:git config --global credential.helper store

多人协作解决冲突

  • git fetch (从远程获取但不与当前代码合并)
  • git diff master origin/master (查看两个冲突文件的异同)
  • git merge origin/master (合并)
  • git pull(从远程获取并与当前代码合并)
  • git pull origin master(将远程库的更新拉取到本地并自动合并)

拓展

git bash跟cmd命令行不是一个东西,git是Linux的 cmd是window的

Linux的命令

mkdir xx:创建一个空目录 xx指目录名
vi x.txt 新建文件(visual editor)
输入i进入编辑模式
ESC + : + wq 保存并退出
ESC + : + q! 不保存并退出
rm -r xx:删除文件夹
pwd:显示当前目录的路径
cat xx.txt:查看xx文件内容
clear:清屏幕
ls:列出当前文件夹中所有文件
ll:列出当前文件夹中所有文件的详细信息
cd xx:进入xx目录
cd .. :返回上一级目录

原文地址:https://www.cnblogs.com/lisaShare/p/12778920.html