git-分布式版本控制系统
下载安装后,进入自己的项目文件目录里,右键点击Git Bush Here。
一、准备:
1、输入用户名和邮箱
命令1:git config --global user.name +"用户名"
命令2:git config --global user.email +邮箱账号
例1:git config --global user.name "zs"
例2:git config --global user.email 123456789@qq.com
补充:
(--global:全局配置,对所有仓库有效)
(--system:系统配置,对所有用户生效)
(--local:本地配置,只对本地仓库有效)
2、保存配置
命令:git config --global credential.helper store
3、查看git配置信息
命令:git config --global --list
二、创建仓库
进入自己的项目文件目录下
1、直接初始化
命令:git init或者git init +目录名
例:git init 或 git init my-repo
(init后面可以指定目录的名称,指定后会在当前目录下创建.git文件)
2、克隆远程仓库
命令:git clone +远程仓库的地址;
例:git clone https://...
三、将文件添加到仓库里
1、查看当前仓库的状态
命令:git status
2、将文件添加到暂存区:
(1)命令:git add +文件名
例:git add file1.txt
(2)命令:git add .
表示将目录里的所有文件都提交到暂存区,add后面记得加空格再加英文格式的点
3、将文件从暂存区提交到仓库
命令:git commit -m "提交备注"
例:git commit -m "第一次提交"
4、查看提交记录
查看提交记录命令:git log
查看简洁的提交记录命令:git log --oneline
四、git reset:撤销之前提交的内容,或者回退版本。
1、命令:git reset --soft +版本号(版本号获取方式如下图4.1,即使用三、4的命令查看)
例:git reset --soft 2a35358
图4.1
2、撤销文件后,工作区暂存区都删除文件
命令:git reset --hard HEAD^
3、撤销文件后,工作区保留,暂存区删除文件
命令:git reset HEAD^
五、若不小心误操作,撤销了想要的文件,可用git reset --hard +版本号找回
1、查看操作记录
命令:git reflog
2、查看误操作的版本号(见4.1图)
3、找回误操作的版本
命令:git reset --hard +版本号
例:git reset --hard 2a35358
六、git diff 可查看工作区、版本库、本地仓库之间的差异或者不同版本之间的差异
1、查看修改前后的内容,比较暂存区和工作区的差异,结果见图6.1
命令:git diff
图6.1
2、比较工作区和版本库的差异
命令:git diff HEAD
3、比较暂存区和版本库的差异
命令:git diff --cached
4、比较两个版本之间的差异
4.1、通过版本号(见四(1)图)直接比较两个版本:
命令:git diff +版本号1 +版本号2
例:git diff 2a35358 45f90f4
4.2、比较HEAD文件和上一次提交版本的差异
命令:git diff HEAD~ HEAD或者git diff HEAD^ HEAD
4.3、比较HEAD文件和某一个版本文件
命令:git diff +版本号 HEAD
例:git diff 2a35358 HEAD
或者命令:git diff HEAD~数字 HEAD
例:git diff HEAD~3 HEAD
(表示比较HEAD文件和提交之前的第三个版本,数字为几比较的就是提交前的第几个版本。)
4.4、只比较提交版本中某一文件的差异
例:git diff HEAD~3 HEAD file3.txt
(表示只查看file3的差异内容,在HEAD文件和提交前的第三个版本中比较。)
4.5、 查看两个分支间的差异(前提已有分支)
git diff 分支名1 分支名2
例:git diff dev main
七、从版本库中删除文件
1、rm删除工作区的文件后,还需用“git add .” 的命令再更新一次暂存区的状态,否则暂存区里还会存在删除的文件。
命令:rm +文件名.后缀
例:rm file2.txt
2.删除工作区和暂存区的文件
命令:git rm +文件名.后缀名
例: git rm file1.txt
3.删除后记得提交,不然版本库里还是存在删除的文件。
八、gitignore忽略指定文件,不提交到版本库中
1、命令:echo 文件名.后缀名 > .gitignore
例:echo 1.log > .gitignore
九、添加一个远程仓库
1、命令:git remote add origin +url
例:git remote origin git@github.com:geekhall-zhangsan//firstrepo.git
(origin是Git给克隆的仓库服务器的默认名字)
十、创建分支
1、命令:git branch +分支名
例:git branch main
十一、切换分支
1、命令:git checkout +分支名或者git switch +分支名
例1:git checkout dev
例2(更推荐):git switch main
十二、将本地仓库的修改推送到远程仓库
1、命令:git push -u +远程仓库名 +分支名
举例:git push -u origin main
(意思是将main分支与远程的origin仓库的main分支关联起来)
十三、将远程仓库的修改拉取到本地
1、命令:git pull +远程仓库名 +分支名
例:git pull origin main
十四、合并分支
1、命令:git merge +将要被合并的分支名称
例:git merge dev
(当前所在的分支就是合并后的目标分支,所以需要先切换到目标分支再输入命令)
2、解决合并冲突
若两个分支修改了同一个文件的同一行代码,那么git无法自动合并分支。
解决方案:手动修改冲突文件,具体操作如下:
git merge dev命令执行时遇上合并冲突时,会报CONFLICT,可使用git status查看冲突列表,也可以使用git diff查看冲突的具体内容(等号上下的内容分别是两个分支的修改内容),这时需要(使用vi+文件名.后缀名)手动编辑这个文件,把左箭头、等号、右箭头都删掉,将第二行的内容合并为一行,即将两个分支的修改内容合并到一起,再提交。
十五、删除分支
1、删除已经完成合并的分支
命令:git branch -d +分支名
例:git branch -d dev
2、删除未完成合并的分支,即强制删除分支
命令:git branch -D +分支名
例:git branch -D dev
十六、将不同分支的内容合并到一起,也可使用rebase(中文叫变基)
记住,使用rebase后,提交记录会变成一条直线,类比移植嫁接,但是在不同的分支下使用会使提交记录的顺序变的不同,举例说明如下:
原分支情况:
图16.1
可在任意分支上执行rebase操作,见下文
1、在main分支上执行git rebase dev
意思是将main分支的共同祖先(例中main:3节点)后面的提交记录移动到目标分支dev的后面,结果见下图16.2
图16.2
2.在dev上执行git rebase main
dev分支的共同祖先(例中main:3节点)后面的提交记录都会移动到main分支的后面,结果见下图16.3
图16.3
十七、rebase和merge的区别与如何使用
1、区别
(1)Merge:
A优点:不破坏原分支的提交历史,方便回溯和查看
B缺点:会产生额外的提交节点,分支图较复杂。
(2)Rebase:
A优点:不新增额外的提交历史,形成线性历史,较直观干净。
B缺点:会改变提交历史,改变了当前分支branch out的节点,避免在共享分支使用。
2、如何使用?
(1)只想合并分支,不关注提交历史,且不是共享分支,则使用merge
(2)想提交历史清晰明了,且自己在一个分支上开发,则使用rebase
十八、例图
1、github代码上传例图
十九、其他命令,补充说明:
0、git命令行粘贴快捷键:
命令:Shift+Insert
1、echo用法:创建文件
命令:echo "文件内容">文件名.后缀
例:echo "first file">file1.txt
2、ls用法:查看目录下的文件
命令:ls
3、cat用法,查看文件内容
命令:cat 文件名.后缀名
例:cat file1.txt
4、查看暂存区的内容命令:
命令:git ls-files
5、在命令行直接修改文件内容
命令:vi +文件名.后缀
例:vi file3.txt
(输入此命令,会进入到vi编辑器模式,输入完成后先按ESC键,再同时按住shift+英文的冒号键(:),再输入wq回车后即可退出)
6、查看本地仓库中的文件命令
命令:ls -ltr
感谢!