前言:在日常开发中,多人协作开发已为常态,并行开发提高开发效率的同时,项目版本控制是我们需要考虑的。多分支开发,主分支上线,代码合并、冲突解决是我们作为一名程序开发者需掌握的基础技能。
Git的文件管理:
Git 保存的不是文件的变化或者差异,而是一系列不同时刻的文件快照
在工作目录下的文件状态:
在工作目录下文件不外乎两种状态:已跟踪或未跟踪
已跟踪:已跟踪的文件是指那些被纳入了版本控制的文件,在上一次快照中有它们的记录,在工作一段时间后,它们的状态可能处于未修改,已修改或已放入暂存区。
未跟踪:工作目录中除已跟踪文件以外的所有其它文件都属于未跟踪文件,它们既不存在于上次快照的记录中,也没有放入暂存区。
-
Untracked:未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过
git add
状态变为Staged
-
Unmodify:文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为
Modified
. 如果使用git rm
移出版本库, 则成为Untracked
文件 -
Modified:文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过
git add
可进入暂存staged
状态, 使用git checkout
则丢弃修改过, 返回到unmodify
状态, 这个git checkout
即从库中取出文件, 覆盖当前修改 -
Staged:暂存状态. 执行
git commit
则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify
状态. 执行git reset HEAD filename
取消暂存, 文件状态为Modified
Git基本命令操作
一、拉取远程主分支项目:
1.创建本地文件夹
2.在本地文件夹下初始化本地仓库
$ git init
3.拉取远程主分支代码
$ git pull http://ip:port/project/project.git
4.在开发工具中打开拉取的新项目
二、拉取远程分支项目
1.新建一个空文件夹
2.在新建文件夹下初始化本地仓库
$ git init
3.与远程origin master建立连接
$ git remote add origin master http://ip:port/project/project.git
4.将远程分支拉到本地
$ git fetch origin dev(dev为远程分支名称)
5.在本地创建分支并切换到该分支
$ git checkout -b dev(本地分支名称) origin/dev(远程分支名称)
6.将远程某个分支代码拉到本地
$ git pull origin dev(远程分支名称)
三、将本地创建的项目首次提交到Git
1.在项目文件夹下初始化本地仓库
$ git init
2.添加对指定文件跟踪
$ git add .
3.提交到本地仓库
$ git commit -m '提交代码'
4、git branch -M main
5. 添加远程仓库
$ git remote add origin url
6.拉取远程分支代码
$ git pull [remotename] [branchname] --allow-unrelated-histories
#该选项可以合并两个独立启动仓库的历史,解决首次创建远程仓库时顺带在仓库中创建后提交了文件
7.将代码推到远程
$ git push [remotename] [branchname]
四、查看提交历史
1.查看本地所有提交历史(q退出查看)
$ git log
2.查看远程分支提交历史
2.1查看远程分支
$ git branch -a
2.查看远程分支提交历史
$ git log <branchname>
3.查看指定条数每次提交的内容差异
$ git log -p(显示每次提交的内容差异) -2(指定条数)
4.查看每次提交的简略统计信息
$ git log --stat
5.使用定制要显示的记录格式展示提交历史
$ git log --pretty=format:"%h - %an, %ar : %s" --graph
6.限制输出长度
6.1限制查看条数
$ git log -<n>
6.2指定时间范围查看
$ git log --since=2.weeks (2周内)
$ git log --since="2020-08-01" (指定某个时间)
$ git log --since="2 years 10 days ago" (多久之前)
7.搜索提交说明中的关键字
$ git log --grep="keyword"
8.按作者搜索
$ git log --author="xianming"
9.git log输出乱码
https://blog.csdn.net/qq_383698639/article/details/81280512
五、撤销操作
1.查看文件状态
$ git status [filename]
2.提交暂存
$ git add [filename]
3.取消暂存
$ git reset Head [filename]
4.取消文件修改
$ git checkout [filename]
4.提交修改文件到本地库中
$ git commit [filename]
5.将代码移除版本库(可解决.gitignore文件修改失效问题)
$ git rm -r --cached [filename]
6.在上次提交之前未做任何修改前,修改上次提交的说明或者补充文件
$ git commit --amend '重新提交'
六、远程仓库使用
1.查看远程仓库
$ git remote
2.查看远程仓库的简写与对应的URL
$ git remote -v
3.添加远程仓库
$ git remote add [shortname] [URL]
4.与已有的远程仓库建立连接
$ git remote add [remotename] [shortname] [URL]
4.拉取远程仓库
$ git fetch [remotename]
5.推送项目到远程仓库
$ git push [remotename] [branchname]
5.重命名仓库名称
$ git remote rename [oldname] [newname]
6.移除仓库
$ git remote rm [remotename]
七、创建标签与别名
1.查看标签
$ git tag
2.模糊查看特定定标签
$ git tag -l 'ceshi*'
3.创建轻量标签
$ git tag [tagname]
4.创建附注标签(附注标签是存储在 Git 数据库中的一个完整对象。它们是可以被校验的)
$ git tag -a [tagname] -m [description]
5.给已提交记录打上标签
$ git tag -a [tagname] [commitid]
6.共享标签,将标签提交到远程
$ git push origin [tagname]
7.检出标签(我们并不能真的切换标签,只能在特定的变迁上创建分支)
$ git checkout -b [branchname] [tagname]
8.创建别名
$ git config --global alias.[alia] [command]
八、分支管理
1.查看使用过的分支
$ git branch
2.查看使用过的分支最后一次提交
$ git branch -v
3.查看所有分支
$ git branch -a
4.查看已经合并到当前分支的分支
$ git branch --mereged
5.查看没有合并到当前分支的分支
$ git branch --no-mereged
6.删除分支(必须合并所有分支才能删除)
$ git branch -d
7.回退分支到某一版本
7.1查看分支的提交历史获取版本号
$ git log --graph
7.2选择回退方式
7.2.1回退到某一版本A,该版本A后的所有版本丢失
$ git reset --hard <versionnumber>
$ git push -f <remotername> <branchname> ##强制提交到远程
7.2.2撤销某一版本A,版本A之后的版本保留(A版本之后改动的内容保留,但是同一文件中改动的内容会出现冲突),新创建一个版本
$ git revert -n <versionnumber>
$ git add .
$ git push <remotername> <branchname>
参考文献: