admin管理员组文章数量:1558067
Git的基本使用命令
Git是版本控制工具,它的作用是帮助我们的开发者管理代码的工具,说明白一些就是对文件及文件夹的管理
一、各个区块概念
1、工作区:
存放代码的文件夹
2、暂存区:
要将代码提交到本地仓库中的缓冲区域,可以对文件及文件夹进行撤回或提交操作
撤回操作:将暂存区的内容删除,暂时不去进行管理
提交操作:将暂存区的内容提交到本地仓库中
3、本地仓库:
我们需要将代码提交到一个本地仓库中,进行集中的管理
4、远程仓库:
将本地仓库的代码推送到远程仓库,在远程仓库进行管理
二、文件状态的概念
1、未跟踪状态:
没有被git所管理的文件状态,红色.
2、已跟踪状态:
已经被git所管理的文件状态,绿色.
三、Git命令
1、设置命令(全局)
在使用Git之前,需要先设置我们个人的邮箱和名称,这样才能够标识我们的身份
git config --global user.name "tangseng"
设置用户名称
git config --global user.email "qujing@bjpowernode"
设置邮箱账号(可以使用未知账号)
git config --list
查看设置信息
在进行代码提交或推送的时候,我们的用户名称和邮箱账号都可以标识我们自己的身份在公司中也能一眼看出,
是谁提交的代码,谁的操作,可以给指定的某个人发送邮件
2、Git操作过程
工作区 -> (添加) -> 暂存区 -> (提交) -> 本地仓库(.git) -> (推送) -> 远程仓库中
add commit push
reset(还原) clone(克隆)
3、基本命令
1、创建本地仓库:
git init
初始化一个空的本地仓库,创建处一个.git的隐藏目录.git隐藏目录中,存放的是一些二进制的文件,我们无法
正常查看打开只能够通过命令的方式进行查看
2、查看文件的状态:
git status
3、将文件添加到暂存区:
git add <文件.后缀>
添加单个文件到暂存区
git add <文件1.后缀 文件2.后缀>
添加多个文件到暂存区
git add . git add -A git add --all
添加所有文件到暂存区
4、将暂存区中的文件删除/还原/重置:
git reset <文件.后缀>
5、将暂存区的文件提交到本地仓库:
git commit -m "日志" <文件.后缀>
提交单个文件到本地仓库并加上日志
git commit -m "日志"
提交所有文件到本地仓库并加上日志
git commit
这种方式的提交会自动弹出一个vi/vim编辑器,手动输入日志信息并进行保存退出,Linux保存退出:wq
6、进入编辑模式:
vi/vim <文件.后缀>
弹出一个vi/vim编辑器,按 a / i / o 任意一个,进入编辑模式
:wq
保存退出
:q!
不保存退出
7、删除文件:
删除文件也代表,我们要将该文件从本地仓库中移除掉,要删除和提交两步.
删除文件的时候,有好几种方式:
1.按delete键进行物理删除(文件状态是红色的未跟踪状态,deleted)
2.通过Linux命令删除(文件状态是红色的未跟踪状态,deleted)
rm -rf <文件.后缀>
右键使用git bash here,使用命令行删除,该命令行模拟Linux操作窗口,和cmd是不一样的,cmd命令行是
不支持Linux命令的
3.通过git命令删除(文件状态是绿色的已跟踪状态,deleted)
git rm -rf <文件.后缀>
删除文件后,如果想要找回,不要执行commit操作,执行了commit操作后,就代表本地仓库已经将该文件彻底
移除了,如果删除的文件没有问题,我们需要先执行add操作,将这个文件提交到暂存区,然后再执行commit操
作,此时,我们的文件就已经从本地仓库中移除了,没有执行commit操作之前,不是彻底删除.类似windows
删除后,在回收站还能找到该文件.
8、找回文件:
可以通过git status,提示找回的命令
未跟踪的文件状态(红色):
git restore <文件.后缀> //将已经删除的文件找回(deleted状态而不是提交后的状态)
已跟踪的文件状态(绿色):
git restore --staged <文件.后缀> //将该文件从已跟踪(绿色)的文件状态变为未跟踪(红色)的文件状态,再
次执行git restore <文件.后缀>,即可完成文件找回操作
Git版本控制:
可以对版本进行前进和后退的管理
1、查看日志信息:
git log
查看日志信息,只能查看当前本次的提交以及之前的操作,无法查看到后续的操作
git log --oneline
查看日志,简洁版
git reflog
查看历史日志信息,唯一标识
2、版本切换:
git reset --hard 版本的hash值(唯一标识)
可以通过命令对版本进行切换,查看某个提交的文件信息
3、文件比较:
git diff <文件.后缀>
比较暂存区和工作区的文件的差异
git diff hash值 <文件.后缀>
比较不同版本的差异,和之前不同的版本进行比较当前文件的差别
分支:
分支大家可以想象成树的枝杈,每棵树都有数不尽的枝杈.
分支式用于管理我们的代码的,每个版本的代码都可以形成一个分支,可以创建任意多的分支
默认的分支是master分支在第一次提交时,自动创建这个分支
1、查看分支:
git branch
查看所有分支
2、切换分支:
git checkout 分支名称
切换到指定分支
3、创建分支:
git branch 分支名称
当前所在的分支的代码和创建出的分支代码是一样的
4、删除分支:
git branch -d 分支名称
删除没有修改过代码的分支
git branch -D 分支名称
删除被修改过代码的分支
如果当前所处于比如day01分支,那么必须要切换到其他的分支,才可以删除day01的分支,好比我们无法删
除已经打开的文件,需要将该文件关闭后,才能够进行删除操作
5、合并分支:
git merge 目标分支
将目标分支的代码合并到本地分支(git branch查看当前所处的本地分支)
合并分支就是将两个分支的代码合并到一起,将目标分支的代码合并到我们的本地分支
分支合并或推送代码时可能会产生代码的冲突:
冲突的产生原因:由于多个分支/多个程序员,修改了同一份文件导致的Git不知道以谁为准,就会产生冲突
我们需要手动解决冲突当代码产生冲突时,Git会给我们进行标记,我们自己的分支和合并的那个分支,需要自
己手动修改代码
<<<<<<< HEAD
...本地分支的内容
=======
...合并的分支的内容
>>>>>>> aaa
只有我们自己知道要保留的代码是什么,Git并不知道,所以我们需要手动将标记清除,然后保留代码
提交到本地仓库即可解决冲突
代码在推送时,如果A开发者直接推送,推送成功,B开发者,也是在没有拉取的情况下直接推送,就会产生冲突
冲突产生的原因和合并分支一样,都是修改了相同的文件才会导致冲突的产生,此时需要将代码拉取到本地,
然后修改冲突的内容,提交到本地仓库中,然后推送到远程仓库,解决了由于修改了相同文件导致推送时产生
了冲突
如果想要少或者尽量不产生冲突,需要在推送代码之前,先进行代码的拉取,再去推送(好习惯)
远程操作:
1、远程仓库:
github
国外的代码管理平台
gitee(推荐)
国内的代码管理平台
2、关联远程仓库:
git remote add 远程仓库名称 远程仓库地址
关联指定的远程仓库
3、查询已关联的远程仓库:
git remote -v
远程仓库是可以关联多个的
4、删除已关联的远程仓库:
git remote remove 远程仓库名称
删除指定的远程仓库
5、对远程仓库的名称进行重命名:
git remote rename 旧的名称 新的名称
对指定的远程仓库进行重命名
6、将本地仓库的代码推送到远程仓库:
git push 远程仓库名称 本地分支名称
在第一次推送的时候,需要大家输入用户名和密码,完成登录操作
登录操作完成后,就会记住密码,后续的推送就无需输入了
如果不小心输入错了,需要清除windows中的凭证信息
修改或删除windows上的git用户凭证信息
第一次提交的分支到远程仓库,在远程仓库被定义为默认分支
默认分支是无法删除掉的,我们只能删除非默认的分支
对本地仓库的文件进行增删改查,最终是要推送到远程仓库的
所以我们对本地仓库完成了操作后,需要推送到远程仓库,告知远程仓库我们的某些文件内容变更了
7、删除远程仓库的分支:
git push -d 远程仓库名称 远程分支名称(非默认分支)
删除远程仓库中非默认的分支
8、拉取分支:
git pull 远程仓库名称 本地分支名称:远程分支名称
拉取的是本地没有的远程仓库的分支
拉取分支到本地仓库,本地分支名称和远程仓库名称可以不一致,但是不推荐这样做
最好是拉取的本地分支名称和远程分支名称保持一致
如果是本地已存在的远程仓库的分支
git pull 远程仓库名称 远程分支名称
9、克隆:
将远程仓库的代码下载到本地,以远程仓库创建一个文件夹,文件夹中是代码和本地仓库,包含.git的隐藏目录的
git clone 远程仓库地址
克隆默认分支
git clone -b 远程分支名称 远程仓库地址
克隆指定分支
版权声明:本文标题:Git的基本使用命令 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1727333777a1108843.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论