git入门教程(超全!超详细!已重新编辑,绝对可以看懂)

若有任何地方需要修该,请及时联系,菜鸟一枚,多多指教。

1、git安装

git几乎所有的平台都可以安装,安装教程。
在Linux下安装git
输入git,查看系统是否存在git,若没有安装,它会提示你如何做。

$
git

The program ‘git’ is currently not installed. You can install it by typing: sudo apt-get install git

如果是其他Linux版本,可以直接通过源码安装。先从Git官网下载源码,然后解压,依次输入:./config,make,sudo make install这几个命令安装就好了。

在windows下安装git
直接官网下载安装

2、配置

2.1用户配置

git config –global user.name “Your Name”

git config –global user.email “email@example.com”

注意git config命令的–global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

题外话:我第一次安装的时候忘记user.name和user.email了,它也是命令的一部分。

2.2密钥配置
编写代码之前还需要生成并配置SSH-KEY(这个东东是将本地的工作区中的分支和远程的分支进行关联的)

#生成密钥,一路回车、用默认选项

ssh-keygen -t rsa

#在本地(我的电脑或者计算机)中找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件(id_rsa是私钥,id_rsa.pub是公钥),将id_rsa.pub文件中的内容
复制到粘贴板

cat ~/.ssh/id_rsa.pub | clip # Windows

cat ~/.ssh/id_rsa.pub | pbcopy # MacOS

注意:粘贴的一定是.pub文件,里面的是公钥,另一个文件不能随便透露,里面是私钥。

3、创建版本库

版本库:
官方说法:这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

其实简单说就是管理代码的仓库,你所有的操作都在里面。

步骤:
(windows)首先选择好你要将代码放在哪里。
切换分支

一般公司中的许多人在开发同一个项目,需要在master分支下切一个dev子分支,每个人也可以切换自己的一个子分支,在开发完成后,在merge到主分支。

常用命令:

git branch #查看当前分支

git checkout -b dev #创建并切换子分支,dev可换成自己的分支名字

git checkout dev #切换分支

git branch dev #创建分支

git branch -d dev #删除分支

git merge 分支名 #合并某分支到当前分支

git checkout -b dev origin/dev #创建远程origin的dev分支到本地

注意:Linux服务器下,在本地建好分支后,将要本地分支推送到远程服务上,使得远程也存在该分支:git pull origin 本地分支:远程分支

mkdir+目录名 #新建版本库

touch+文件名 #新建文件(新建文件有两种方式:

touch+文件名 #直接新建一个文件

vi+文件名 #新建一个文件并进入编辑状态(如果文件已存在,则直接进入编辑状态))

cd+目录名 #进入目录

pwd #显示当前所在目录的路径

git init #初始化仓库(把这个目录变成Git可以管理的仓库)

提示:
(1)如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见。
(2)git init后目录里面会多一个.git 文件,没事千万不要手动修改里面的东西!!!!
(3)千万不要使用Windows自带的记事本编辑任何文本文件。

4、编写代码

编写代码的方式有两种,一是你可以自己新建文件,二是克隆公司其他前辈的代码,在此基础上进行修改。

克隆代码
当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin。

git clone 代码库地址

常用命令:
git remote #查看远程库信息
git remote -v #显示更详细信息

编写代码

如果使用的是Linux服务器的话,用vim打开该文件。

vim 文件名或者vi 文件名 #打开文件

:wq #保存退出

注意:强制退出可以在后面加一个“!”,若对文件无任何修改可以直接用“:q”进行突出

编写完成提交代码:
按以下推送步骤来就OK:
注意顺序:修改1->git add->修改2->git add->git commit

git status #查看版本库中修改的文件,需要提交的文件,确定要添加到暂存区的文件。

git add 修改的文件名 #将要提交的文件首先提交到暂存区

git status #查看版本库的状态

git commit -m “提交的说明” #编写提交的说明便于以后查找

git log #查看提交记录

git push origin 本地分支:远程分支 #Linux服务器下将本地分支推送到远程。(我们需要code review,所以是
git push origin 本地分支:refs/for/远程分支)

合并代码
注意:merge的时候,可能会出错冲突,那也咩关系,解决就是了!
在当前分支已编写完成代码并且已经git add和git commit,git push之后,需要合并代码。
首先,假设要讲你当前代码合并到dev分支,切换dev分支,git status查看状态,然后需要git pull代码,因为是多人合作开发,在不断的更新代码,需要将你本地的代码和远程的分支保持一致。然后git status查看状态,git merge +切换当前分支之前的分支,将你刚才编写好的分支与当前dev分支合并。可以会冲突,解决就是了。

解决办法:
  (1)git status查看冲突的文件(注意:Git用<<<<<<<(服务中的代码),=======,>>>>>>>(本地中的代码)标记出不同分支的内容,这种表示冲突。)
  (2)**在本地合并,解决冲突,再推送:git pull --->本地解决冲突--->git commit--->git push origin 分支名**

同样切换分支的时候也需要先git status一下,然后根据它的提示来做就ok了。

常用命令:

git merge dev #当前在master分支,git merge是将某指定分支合并到当前分支
git diff #查看这个做过的修改
git clean -f #删除untracked文件
git branch -d 分支名** #删除分支
git log #查看历史记录,显示从最近到最远的提交日志

     可以添加 --pretty=oneline 参数 友情提示的是,你看到的一大串类似1094adb...的是commit id(版本号)

注意:HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

回退到上一个版本:git reset –hard HEAD^(撤销到原先的最新版本,若没有关界面的话,可以往界面的上查找版本号,将HEAD^换成版本号,若已经关闭,可以用 git reflog命令)
撤销暂存区:git reset head <filename>
撤销工作区的修改:git checkout — filename
查看内容:cat 文件名
查看工作区和版本库里面最新版本的区别:git diff HEAD — 文件名
撤销工作区的所有修改:git checkout –文件名(分为两种,一种是回到和版本库中的一样,一种是回到上次暂存到暂存区的版本。命令中的“–”很重要)
撤销已经提交到暂存区的版本,并重新放回工作区:git reset HEAD 文件名
创建文件:touch 文件名
删除文件:rm 文件名(只是单纯删除文件)
上传文件:rz #回车键,选择要上传的文件(Linux命令,不是git命令)
下载文件:sz 文件名(Linux命令,不是git命令)
移动文件:mv 文件名 path
复制文件:cp 文件名 新的文件名
重命名文件:mv 文件名 新的文件名
假设当前写的东西进行到一半,有紧急任务,但当前的又不想提交:
git stash #将当前的工作储藏起来,以后恢复继续工作
git stash list #查看原先的工作
git stash apply #恢复储存的工作
git stash drop #删除原先储存的工作或者git stash pop #恢复的同时也将stash内容删除
git stash list #查看并没有了
将工作区的文件已经删除了:用git status查看哪些被删除了,然后有两种选择:
(1)删除版本库的文件: git rm 文件名,然后git add ,git commit
(2)删除工作区的文件:git checkout –文件名(用版本库中的文件代替工作区的文件,一键还原)
git log –graph #查看分支合并图:

名词解释:
工作区:在电脑里能看到的目录
版本库:工作区有一个隐藏目录.git,Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

小知识:
(1)git status显示一些Untracked files …文件,在根目录下创建.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。

忽略文件的原则是:

忽略操作系统自动生成的文件,比如缩略图等;
忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。

可能是.gitignore写得有问题,可以用git check-ignore命令检查。

(2)简写,配置别名

git config –global alias.st status #st代表status

其余:
co表示checkout,ci表示commit,br表示branch

删除分支讲解
Git删除分支/恢复分支
• 删除一个已被终止的分支

如果需要删除的分支不是当前正在打开的分支,使用branch -d直接删除

git branch -d <branch_name> • 删除一个正打开的分支

如果我们在试图删除一个分支时自己还没转移到另外的分支上,Git就会给出一个警告,并拒绝该删除操作。

如果坚持要删除该分支的话,就需要在命令中使用-D选项。

git branch -D <branch_name> • 恢复被删除的分支

Git会自行负责分支的管理,所以当我们删除一个分支时,Git只是删除了指向相关提交的指针,但该提交对象依然会留在版本库中。

因此,如果我们知道删除分支时的散列值,就可以将某个删除的分支恢复过来。在已知提交的散列值的情况下恢复某个分支:

git branch <branch_name> <hash_val>

如果我们不知道想要恢复的分支的散列值,可以用reflog命令将它找出来。如:

reflog命令:

显示整个本地仓储的commit,包括所有branch的commit,甚至包括已经撤销的commit。

只要HEAD发生了变化, 就会在reflog里面看得到。

这时恢复分支a_branch分支如下:

git branch <branch_name> HEAD@{4}

    原文作者:年轻即出发
    原文地址: https://segmentfault.com/a/1190000019412396
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞