git学习

首先下载git 打开git Bash

由于是分布式控制系统,每台机器必须自报家门

输入:

$git config --global user.name "guojiale"

$git config --global user.email "gil102@sina.cn"

--global这个参数表示这台机器上所有的git仓库都会使用这个配置,当然也可以对特定仓库使用特定的用户名和email

$mkdir learngit

$cd learngit

$pwd //pwd用于显示当前目录

创建git仓库

$git init //把learngit这个目录变成仓库

该目录下会出现 .git目录,若看不见,则用ls -ah

用notepad++在该目录下创建并编写文件readme.txt

$git add readme.txt //将文件添加到仓库

$git commit -m "批注信息" //将文件提交到仓库

 //////////////////////////////////////////////////////////

修改文件后

$git status //查看状态

提示:changes not staged for commit

意思是单纯只是修改了,但没有提交到仓库,成为临时状态

$git diff readme.txt //查看不同

$git add readme.txt //将修改提交修改

$git status //查看仓库状态

提示:changes to be commited

readme.txt进入临时状态,改变等被commited

$git commit -m "add three lines"

//////////////////////////////////////////////////

$git log //显示所有版本

$git log --pretty=oneline //让历史版本显示更简单

$git reset --hard HEAD^  //回到上一个版本

$git reset --hard HEAD~100 //回到前100个版本

当你回到过去后,关闭git窗口,又想回到未来

$git reflog //查看你过去的命令,找到相应版本号,commit在上面的是时间偏后的版本

 该命令通常只会有针对版本库的命令(commit,reset)

////////////////////////////////////////////////////////

在一个目录(learngit) $git init后,该目录下会产生 .git 文件目录,该目录即为版本库

工作区:learngit目录就是一个工作区

假设增加了一个Lisense并修改了readme.txt

$git status

会提示:readme.txt modified

    Lisense.txt untracked

同时$git add 两个文件,把他们提交到暂存区

一次性commit到master分支

每次修改,必须被add到暂存区,然后commit,

否则修改了->add->再修改->commit(只会把暂存区的给commit了),第二次修改就没实现

补救:$git add->commit

///////////////////////////////////////管理修改

$cat readme.txt 可用股查看工作区的文件内容

$git checkout -- readme.txt //可撤销工作区的修改

如果add到了暂存区,再次对工作区做修改,会变回之前被放在暂存区之后的样子

////////////////////////////////////////////////////////// $git reset HEAD readme.txt

若把修改提交到了暂存区用 $git reset HEAD readme.txt 撤销暂存区的修改,退回到工作区

接着 $git checkout -- readme.txt 撤销工作区的修改,回到上一次commit的状态

/////////////////////////////////////////////////////////////////////////////////////////$rm readme.txt

$rm readme.txt //删除工作区的文件

$git status //有修改没被提交到暂存区

此时如果确实想删:

$git rm readme.txt

将版本库里面的该文件也给删了

如果是误删:

$git checkout -- readme.txt //撤销工作区的文件删除操作,因为版本库里还有,仿佛版本库里面就是参照

/////////////////////////////////////////////////////////////////////////////////////////////////////////添加远程库

$cd learngit ///进入本地git仓库

$git remote add origin https://github.com/gabygoole/learn.git //让本地仓库关联github上的learngit仓库
$git push -u origin master //由于是第一次推送,github上仓库为空,加-u

总结:要关联一个远程仓库用
$git remote add origin http...
关联后使用:
$git push -u origin master
本地commit后:
$git push origin master

我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令
$cd是返回上级目录
$ls //列出该目录下所有文件
//////////////////////////////////
要克隆一个远程仓库,先知道其地址 有ssh格式(原生协议,最快)的,有http格式的,http要慢很多
$git clone http...
////////////////////////////////////////////////////创建/删除分支
$git checkout -b dev //创建dev分支
接着修改文件
$git add README.md
$git commit -m "branch test"
$git branch master
$git merge dev //将指定的dev分支合并到当前分支
$git branch -d dev //删除dev分支

总结:$git branch //查看branch
1.
$git branch dev //新建分支
$git checkout dev //转换分支
2.
1等同于2
$git checkout -b dev //新建dev分支,并且转换到dev分支
/////////////////////////////////////////////////////解决冲突
$git log //当出现<end>标记,输入q可退出历史记录
当遇到master分支和fea1分支上下并行时,这时$git merge fea1就要冲突
解决办法是在master分支重新修改这个冲突的文件,再commit,两个文件会分支会合并在一起,最后删除fea1分支
/////////////////////////////////////////////////////
当我误操作
$git commit README.md
做操作提示:
If no other git process is currently running, this probably means a
git process crashed in this repository earlier. Make sure no other git
process is running and remove the file manually to continue.
解决:

  rm -f ./.git/index.lock


续:分支管理策略
git pull:从其他的版本库(既可以是远程的也可以是本地的)将代码更新到本地,例如:'git pull origin master'就是将origin这个版本库的代码更新到本地的master主枝

原文地址:https://www.cnblogs.com/gabygoole/p/4972633.html