Git常用操作
Git常用操作 下载地址:https://git-scm.com/
本地版本库
1、创建本地版本库
mkdir git-repository
cd git-repository
git init2、提交 git add 将修改后的文件放到暂存区。git commit 将暂存区的文件提交到版本库
vi readme.txt
aaa
bbb
git add readme.txt
git commit -m ‘add readme.txt’如果不需要将修改提交至暂存区,可以直接使用git commit -a来跳过git add操作,快速提交
3、修改
vi readme.txt
aaa ccc
bbb
git status
git diff readme.txt #查看工作区和版本库里最新版本的区别
git add readme.txt #添加文件
git status
git commit -m ‘add ccc’ #提交至暂存区,-m 添加提交日志
git status #查看当时状态4、版本回退(重置)git reset HEAD(表示当前版本) HEAD^(上一个版本) HEAD~30(往前30个版本)。
版本回滚(撤消) git revert COMMIT_ID
回退(重置)reset跟回滚(撤消)revert的区别 回退(重置)reset是强制恢复到指定版本,同时该版本之后的所有提交记录都被清除 回滚(撤消)revert是撤消指定ID的提交内容生成一个新的合并,同时保留所有(包含撤消节点之后)的提交记录,且不会影响在它之后的已有提交,除非后面的提交内容跟撤消内容有关联(例如同一个文件的修改)。 具体操作可参考[[#如果想要恢复 Git 仓库中的较早历史版本,可以使用 Git 的回滚或者重置操作。]]
5、文件删除
远程仓库
全局配置:告诉git 你是谁
创建仓库(一般是在服务端操作):
全新仓库:在服务端新建了项目,无任何内容
使用本地现有目录:将本地内容提交到新创建的项目中
使用现有仓库:已经提交过多个版本的本地仓库
克隆指定分支:使用-b branch_name来检出指定分支
分支管理
新建分支
分支切换
分支合并
删除本地分支
删除远程分支
正常情况应该是master做为正式分支,所有人围绕dev分支开发,建立自己的分支,开发完成后合并到dev分支,测试无误之后合并到master分支做为上线版本。
这种情况下建议继续保留自己的分支,后期继续开发,那么在合并时就用以下方式
下面是一个完整的操作演示
其它人员直接使用dev分支开发
BUG分支:临时需要紧急处理,但当前工作还没完成,当前版本不合适提交时。
冲突处理
Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容 创建一个分支,并故意制作错误冲突
标签管理:注意,标签不是按时间顺序列出,而是按字母排序的。可以用git show <tagname>查看标签信息
强制恢复到某次提交
如果发现推送了一次错误的提交,请用git revert命令来撤消,然后再推送一次。这样就不会造成冲突错误,如果对别人的合并也造成了回退,别人可以通过在本地reset回退到指定版本,拉取分支,重新跟最新的合并然后再提交就不会有问题。(比如目前版本为A1-A2-B1 B1为别人在你的基础上进行合并后提交的,你撤消到了A1版本,会导致基于B1的版本在提交的时候有冲突 ,这时B用户只需要reset到B1版本,然后拉取一个分支,跟B用户最新的版本合并,然后再提交就不会有冲突)
git 中忽略提交指定文件或目录
在项目根目录下新建.gitignore文件,然后编辑该文件,一行一个内容。在提交的时候就不会同步这个文件中所列的目录或文件
.gitignore文件的使用
.gitignore文件的使用当我们在git库中遇到不想提交的一些文件或目录时,可以使用.gitignore来进行忽略 官方有一些现成的范本可以参考,也可以自己往该文件中添加 格式如下
以上操作会有一个问题,就是如果一个文件已经被提交过,之后将其添加在.gitignore文件中也不会被忽略。 这是因为.gitignore 文件只能作用于 Untracked Files,也就是那些从来没有被 Git 记录过的文件(自添加以后,从未 add 及 commit 过的文件)。 如果已经有这种情况出现,想要忽略,可以使用以下方法来实现
如果想要恢复 Git 仓库中的较早历史版本,可以使用 Git 的回滚或者重置操作。
回滚操作: 使用 git revert 命令可以回滚到指定的历史版本。这个命令会创建一个新的提交,将代码回滚到指定版本的状态。
例如,如果你想要回滚到某个历史版本,可以使用 git log 命令查看历史记录,找到目标版本的 SHA 标识符,然后使用 git revert 命令回滚到该版本:
这将创建一个新的提交来回滚到历史版本。
重置操作: 使用 git reset 命令可以将 Git 仓库的状态重置到指定的历史版本。这个命令会移除所有指定版本之后的提交记录,并且将指定版本设置为当前版本。
例如,如果你想要将仓库重置到某个历史版本,可以使用 git log 命令查看历史记录,找到目标版本的 SHA 标识符,然后使用 git reset 命令重置到该版本:
这将移除所有 1234567890123456789012345678901234567890 之后的提交记录,并将仓库状态重置到该版本。
如果git log中有a1 a2这两个记录,我提交的a3记录后,想撤消a3的提交,应该是 revert a3还是revert a2 如果你想撤消 a3 的提交,最好的方式是使用 git revert 命令来创建一个新的提交来撤消 a3 的更改,而不是回滚到 a2 的提交。
使用 git revert 可以保留所有提交记录,并创建一个新的提交来撤消 a3 的更改。这样,其他开发人员不会失去他们的提交记录,并且你的撤消操作也可以追踪。 要撤消 a3 的提交,可以使用以下命令:
这将创建一个新的提交来撤消 a3 的更改。注意,如果 a3 的提交有多个父提交,那么 git revert 将创建一个新的合并提交来撤消更改。
如果你使用 git reset 命令将 Git 仓库重置到 a2 的提交,会删除所有在 a2 之后提交的内容,这可能导致其他开发人员失去他们的提交记录,而且你的撤消操作也不能被追踪。因此,使用 git revert 来撤消 a3 的提交是更安全、更保险的选择。
如果已经有了a4的提交,撤消a3的提交会不会影响a4的提交内容
使用 git revert 撤消 a3 的提交不会直接影响 a4 的提交内容。当你使用 git revert 撤消 a3 的提交时,Git 会创建一个新的提交来撤消 a3 的更改,而不是直接修改之前的提交。
这意味着,a4 的提交内容不会被改变,Git 仓库中的提交历史记录也会保持不变。但是,如果 a3 的提交和 a4 的提交之间存在冲突,撤消 a3 的提交可能会导致冲突出现。在这种情况下,你需要手动解决冲突,并创建一个新的提交来解决冲突。
总之,使用 git revert 撤消 a3 的提交不会影响 a4 的提交内容,但是可能会引起冲突。为了避免冲突,你应该尽可能在每个提交之间只修改一个文件或者相关的代码,这样可以使你的撤消操作更加安全、可预测。
[[GIT钩子自动更新]]
[[通过gitolite控制权限]]
[[Git错误解决]]
最后更新于