git操作

Git操作

0.1、获取 Git 仓库

有两种取得 Git 项目仓库的方法。

  1. 在现有目录中初始化仓库: 进入项目目录运行 git init 命令,该命令将创建一个名为 .git 的子目录。
  2. 从一个服务器克隆一个现有的 Git 仓库: git clone [url] 自定义本地仓库的名字: git clone [url] directoryname

0.2、记录每次更新到仓库

  1. 检测当前文件状态 : git status
  2. 提出更改(把它们添加到暂存区):git add filename (针对特定文件)、git add *(所有文件)、git add *.txt(支持通配符,所有 .txt 文件)
  3. 忽略文件.gitignore 文件
  4. 提交更新: git commit -m "代码提交信息" (每次准备提交前,先用 git status 看下,是不是都已暂存起来了, 然后再运行提交命令 git commit
  5. 跳过使用暂存区域更新的方式 : git commit -a -m "代码提交信息"git commit 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤。
  6. 移除文件git rm filename (从暂存区域移除,然后提交。)
  7. 对文件重命名git mv README.md README(这个命令相当于mv README.md READMEgit rm README.mdgit add README 这三条命令的集合)

0.3、推送改动到远程仓库

  • 如果你还没有克隆现有仓库,并欲将你的仓库连接到某个远程服务器,你可以使用如下命令添加:·git remote add origin <server> ,比如我们要让本地的一个仓库和 Github 上创建的一个仓库关联可以这样git remote add origin https://github.com/Snailclimb/test.git

  • 将这些改动提交到远端仓库:git push origin master (可以把 master 换成你想要推送的任何分支)

    如此你就能够将你的改动推送到所添加的服务器上去了。

0.4、远程仓库的移除与重命名

  • 将 test 重命名位 test1:git remote rename test test1
  • 移除远程仓库 test1:git remote rm test1

0.5、查看提交历史

在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的工具是 git log 命令。git log 会按提交时间列出所有的更新,最近的更新排在最上面。

可以添加一些参数来查看自己希望看到的内容:

只看某个人的提交记录:

1
git log --author=bobCopy to clipboardErrorCopied

0.6、撤销操作

有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。 此时,可以运行带有 --amend 选项的提交命令尝试重新提交:

1
git commit --amendCopy to clipboardErrorCopied

取消暂存的文件

1
git reset filenameCopy to clipboardErrorCopied

撤消对文件的修改:

1
git checkout -- filenameCopy to clipboardErrorCopied

假如你想丢弃你在本地的所有改动与提交,可以到服务器上获取最新的版本历史,并将你本地主分支指向它:

1
2
git fetch origin
git reset --hard origin/master

0.7、分支

分支是用来将特性开发绝缘开来的。在你创建仓库的时候,master 是“默认的”分支。在其他分支上进行开发,完成后再将它们合并到主分支上。

我们通常在开发新功能、修复一个紧急 bug 等等时候会选择创建分支。单分支开发好还是多分支开发好,还是要看具体场景来说。

创建一个名字叫做 test 的分支

1
git branch testCopy to clipboardErrorCopied

切换当前分支到 test(当你切换分支的时候,Git 会重置你的工作目录,使其看起来像回到了你在那个分支上最后一次提交的样子。 Git 会自动添加、删除、修改文件以确保此时你的工作目录和这个分支最后一次提交时的样子一模一样)

1
git checkout testCopy to clipboardErrorCopied

img

你也可以直接这样创建分支并切换过去(上面两条命令的合写)

1
git checkout -b feature_xCopy to clipboardErrorCopied

切换到主分支

1
git checkout masterCopy to clipboardErrorCopied

合并分支(可能会有冲突)

1
git merge testCopy to clipboardErrorCopied

把新建的分支删掉

1
git branch -d feature_xCopy to clipboardErrorCopied

将分支推送到远端仓库(推送成功后其他人可见):

1
git push origin 

1、git 推送

1
2
3
4
5
6
7
8
9
10
11
1. git init //初始化仓库

git add .(文件name) //添加文件到本地仓库

git commit -m “first commit” //添加文件描述信息

git remote add origin + 远程仓库地址 //链接远程仓库,创建主分支

git pull origin master // 把本地仓库的变化连接到远程仓库主分支

git push -u origin master //把本地仓库的文件推送到远程仓库

2、Git命令提交代码

Git 全局设置,依次输入命令:

  1. git config –global user.name “hqz”
  2. git config –global user.email “1161028136@qq.com“ //Git绑定的邮箱
  3. git init //初始化,会在项目根目录生成一个隐藏的.git文件夹
  4. git add . //提交到本地仓库
  5. git commit -m “项目描述”
  6. git remote add origin https://gitee.com/… //提交地址,新建仓库里面就有,复制进来即可
  7. git push -u origin master //提交!
  8. git push -u origin master -f //强制提交

3、Git 代码提交规范

1
2
3
4
5
6
7
8
9
10
feat:新功能 feature
fix:修复 bug
docs:文档注释
style:代码格式(不影响代码运行的变动)
refactor:重构、优化(既不增加新功能,也不是修复bug)
perf:性能优化
test:增加测试
chore: 构建过程或辅助工具的变动
revert - 回退
build - 打包

4、git 回滚

  1. 已提交,没有 push

    1)git reset –soft [版本号] 撤销 commit

    2)git reset –mixed [版本号] 撤销 commit 和 add 两个动作

  2. 已提交并且 push

    1)git reset –hard [版本号] 撤销并舍弃版本号之后的提交记录,使用需要谨慎

    2)git revert [版本号] 撤销,但是保留了提交记录

5、IDEA Git 撤销push(回退到指定版本)

  1. 查看日志(获得指定版本号;回车查看更多,q退出)
1
git log
  1. 回退到指定版本
1
git reset --soft 指定版本ID
  1. 再次推送到远程
1
git push origin master --force

6、Git的回滚与强推

image-20220527150810154

6.1、本地未commit

变更文件——roll back

idea 中 git -> rollback 回滚代码

新增文件——delete

6.2、commit未push

6.3、undo commit

仅适用于最后一次提交进行回滚,代码不会被删除

6.4、drop commit

回滚任意一次提交,且不留下任何痕迹,代码会被删除

6.5、revert commit

回滚任意一次提交,留下一条commit记录,也就是revert记录

6.6、reset

从某个commit点开始,后面的的commit都删除

6.6.1、soft

在选定提交之后所做的所有更改都在暂存区,commit的内容都会保留,其新增文件+文件变更都在暂存区

6.6.2、mixed

在选定提交之后所做的更改将被保留,但不会暂存以进行提交。commit的内容都会保留,新增文件在工作区,文件变更在暂存区

6.6.3、hard

在选定提交之后所做的所有更改都将被丢弃(暂存和已提交),commit的内容 + 暂存区的内容全部被丢弃

6.6.4、keep

在选定提交之后的以commit内容将被丢弃,但未commit的部分将保留

commit部分内容被丢弃,未commit部分保留

6.7、commit&&push

6.7.1、reset + force push

先回滚本地的代码,在进行 force push,使远程的分支和本地的分支一样,操作需谨慎

6.8、找回代码

代码 rollback 之后,发现代码是需要的,通过 local history 中 reset

  • Copyrights © 2022-2023 hqz

请我喝杯咖啡吧~

支付宝
微信