Git常用命令总结

169 阅读9分钟

1. git使用总结

git简单的介绍

  • 1.git是一个开源的分布式的版本控制系统,用于高效的处理任何的大小项目.
  • 2.git的安装很简单,这里不介绍,可以直接百度,之后再使用git -v来查看是否安装成功(成功会显示对应的git的版本号)
    • 一般安装很无脑直接下一步下一步就可以,不管是window还是mac都需要在安装的过程中作文和的修改

配置用户名邮箱

1.直接从官网上下载Git 安装,在开始菜单查找git bash ,说明安装成功
2.设置
	2.1 git config --global user.name "your name"
	2.2 git config --global user.email "email@example.com"

git的使用

创建一个版本库

版本库其实就是一个仓库,也可以说就是 一个目录,在这个目录的所有的文件都会被git管理起来,每个文件的修改,删除,git都可以跟踪任何时刻,还可以复原.

1.在一个自己觉得合适的位置创建一个空目录(也不一定必须是空目录,主要是如果在自己还不熟悉的学习阶段还是创建一个独立的空目录来学习),在使用git init就可以把这个目录变成一个Git可以管理的仓库,在这个目录下就会生成一个.git的文件,不要动这个文件,不然git仓库就会被破坏.

因为master分支是创建项目和远程仓库的时候默认就会有的,并且master分支一般是防保存上线的代码的,生产一般是单独再创建一个dev创建分支的方式:

方法1 : 直接在远程仓库上创建dev分支,之后在本地使用

git fetch (拉取远程分支)
git checkout -b dev origin/dev (利用远程origin仓库的dev分支再本地创建dev分支)

方法2 : 在本地仓库创建分支

git checkout -b dev (创建分支)
git push -u origin dev (推送本地的分支到远程仓库,并在远程仓库创建dev分支)
git add .  (将修改添加到暂存区,所有文件,git add xxx.txt // 添加某个具体的文件)
git commit -m "提交说明" (提交到HEAD(当前分支))
git remote add origin git@github.com:funny0628/xxx/ss.git (关联远程仓库)
git push -u origin master (只在第一次提价时使用,之后可以使用省略 -u 的)
git remote remove origin (删除指定仓库名的远程仓库)

//如果commit 的说明写错了需要修改(按i进入编辑,完成按Esc退出编辑,非编辑模式下:wq保存结果并退出,查看结果)
git commit --amend  (修改git commit 的说明)

git branch (查看本地分支)
git branch -a (查看远程分支)
git branch -d dev (删除本地分支)
git push origin --delete dev (删除远程分支)
git checkout -b dev (创建并且切换分支)

问题

在项目中团队负责人有时会在创建仓库的时候加上README.md,这样就会导致push的时候报错,解决办法,可以使用将远程的仓库合并到本地,再push就没有问题了,操作命令如下:

git push --rebase origin master

2.服务器上Git 生成SSH公钥

//1.如果没有ssh文件
ssh-keygen -t rsa -C "your _email@example.com"  (生成ssh文件后,一直回车就可以(总共三次))

//2.前提支持linux语法,有ssh文件夹的前提
cd ~/.ssh  (进入ssh文件夹)
ls         (查看文件夹下的文件)

<-- 一般显示是这样的 -->
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        2020/3/25     17:48           1823 id_rsa
-a----        2020/3/25     17:48           399 id_rsa.pub
-a----        2020/7/13     15:24           2188 known_hosts

cat ~/.ssh/id_rsa.pub  (查询公钥显示如下)
ssh-rsa AAAAAB3NzaC1yc2EAAAADAQABAAABAQDPrfWsvBtww23V0MQRYf9XDJJ4Y6jtUtQTL7JZLuuEmeP+tSi+c4yE2E/22ahy+Y57mpU55Bd16i3+MGkq2vKqzkl8dk5SOaoO5YOrBg6NS5WOT4Lod37DOIcoe0nImBhX5v4IceBrAgPi+xU5LXyOOhw4Ph7my9eQuLGVxzH3xzLub1k7SVsI4ySMxvQi9MjiJ9LtEzUIsAMbo7AgBB5Hj5Xun+1sTn3xMxIjDg/ttpfup2iAZKmX/OP9+eyjPYGsL1Q4q7EoVhoQ2AOY0Zq79rhDjEKHBPK4l6apEN fenni@example.com

3.git其他的命令

git status  (查看仓库当前的状态,文件的修改和新添加的文件)
git diff  (可以看到具体修改了那些内容,新添加的文件不会被显示)
git log  (查看提交的历史记录)
git log --pretty=oneline  (优美的显示在一行的提交记录)


'注意: git checkout -- <file> 是对工作区修改的撤销, git checkout <file> 是切换分支,有 -- 的位置都要注意 -- 的前后都是有一个空格的,如果没有命令是会报错的'

版本回退
1.commit -> add ->工作区
git reset --soft HEAD^ (commit-> add)
git reset HEAD (add -> 工作区,(如果想指定特别的文件可以使用git reset HEAD <file>))
git checkout -- <file> (工作区 -> 上一个版本)

2.如果是直接撤回上到上一个版本库的话
git reset --hard HEAD^

//注意HEAD指的就是当前的版本,^就是上一个,上几个就有几个^,太麻烦简化的写法就是HEAD~'X',X代表层数
git reset --hard HEAD^  (回退到上一个版本)
git reset --hard HEAD~'X'  (回退到上'x'个版本)


//假如从版本3回退到了版本2之后,还想回到版本3 (之前的命令窗口没有关闭还可以找到版本3的版本号)
git reset --hard '版本3的版本号'  (回退到指定的版本,版本号不必要写全)
//假如命令窗口关闭了已经找不到已经关闭的版本号
git reflog  (查询每一次的操作记录)
git diff HEAD -- <file>  (查看"工作区"与"版本库"(HEAD)里面最新版本的区别,注意: -- 前后都有一个空格)


//在已经提交到版本库中的文件再删除的话由git status 查看可以知道会提示有一个文件删除了,
1.这是就要重新的在git add . / git commit -m "提交删除文件的信息",
2.但是如果这个文件缺失需要从版本库中删除的话可以直接使用以下命令删除,之后在再commit就可以了
git rm <file>
git commit -m "提交信息"

//删除文件
rm <file>  (命令行删除文件,注意当前要在这个文件所处的目录下)

//如果是误删除的文件也可以通过以下命令来恢复
git checkout -- <file> (撤销工作区的修改,删除,本质上是把版本库的内容替换工作区的内容,删除和修改都可以恢复)
需要注意的是如果从来没有被添加到版本库中的文件被删除了(可以在资源管理器中使用Ctrl+Z来恢复)

git实战使用记录

一般在项目中往往不止一个分支,master是用于上线的主分支,一般不会直接在上面开发,只是作为测试成功的发版的分支,多人协作的时候回根据实际情况创建一个或多个开发主分支,开发同事在创建自己不同的开发分支,那么每次在自己的分支写完代码之后需要合并到开发主分支上去,
1.当前在自己的开发分支
git add .
git commit -m "提交说明" 
git checkout dev  //切换到dev开发主分支
git pull origin dev  //拉取远程的dev分支的最新的代码
git merge 自己的开发分支名  //将自己的开发分支的代码合并到当前所在分支
这个过程如果有冲突就解决冲突,如果没有就合并成功,之后再
npm run build  // 对项目进行打包
git add . 
git commit -m "build"
git push origin msater  //此时自己分支的代码已经同步到开发主分支并且打包推到远程仓库了,
这个时候就要看项目的发版是怎么配置的了,有的是根据框架配置的自动发版跟新,开发人员只需要将代码提交到远程仓库就可以了,有的是需要运维的同事手动发版的
git checkout 自己的开发分支  // 回到自己的开发分支继续工作
这时可以将开发主分支的代码合并到自己的分支,使代码同步
git merge dev  // 之后就继续编辑自己本地的项目文件之后再重复执行上面的步骤就可以了.


把自己的本地分支共享到远程仓库中
git push --set-upstream origin fanny_4.0
拉取别人共享到远程仓库的分支
git fetch origin 远程分支名 (这里只是将远程的分支拉取到本地)
git checkout -b 本地分支名 origin(关联的仓库名)/远程分支名  (这里是将远程仓库的分支与本地的分支进行关联)

文件暂存的问题

在实际的使用过程中,当我们在一个分支进行编码到一半的时候,需要切出到别的分支处理紧急的需求,但是当前的分支编码并没有处于一个完整的节点,不便于提交commit,这时我们可以在当前的分支使用
1. git stash  //将当前工作区的代码先暂存起来,他会回退到我们上一次commit记录时的代码
正常切出分支处理我们自己的逻辑,完成之后再回到当前的分支,使用
2. git stash pop  // 将之前暂存的没有提交的代码在拉取回来这样就很方便,
**默认情况下只是用命令2就可以实现想要达到的目的,但是有时会不成功,就需要使用到命令1辅助**

查看一个分支是从哪一个分支检出的

在项目上线之后,出现的一些bug和新的需求,根据问题的严重性和必要性,有些任务需要紧急上线,有些需要在修复分支暂存解决的问题,等到一个特定的时间节点在一起上线,所以分支的情况就会比较的复杂
在时间久了之后就需要确认一下某一个分支是从哪一个分支检出的,这个命令不是很常用,在这里记录一下,便于以后参考和学习
git reflog --date=local --all | grep 要查询的分支名称

打标签(tag)

实战过程中,项目时分为几个迭代开发的,会有几个不同迭代的开发分支,但是自己的本地开发分支只创建了一个,为了区分不同的迭代和需求记录,这里就简化使用了tag的方式来记录一下,
git tag (查看当前有哪些tag)
git tag -a tag名字 -m "tag的描述"
git show tag名字 (可以查看某一个tag的详细信息(commit编号+描述等记录))

结束

当然我们的记录并不是完全全面的,但是对与平时操作过程所遇到的问题大多都是可以解决的,以后在慢慢地积累吧

注意:github 学习参考文件

邀请同事加入团队 : www.pianshen.com/article/220…

github官方学习地址 : docs.github.com/cn/github/s…