事情的起因的是老板让我把代码推送到githup上,老板要看我写的代码。我在公司的组织里新建了一个仓库,想把代码提交上去,但是最后一步推送一直失败。很尴尬,最后请教了我旁边的一个脾气很好的哥,帮我解决了,所以我决定简单系统的过一遍git。

git的常见命令

alt text
git config 用来配置操作人信息

初始化新仓库

  • git init :创建新仓库
    在一个新建的文件夹中,使用该命令 可以创建一个新的git仓库。初始化刚才文件夹,将它变成Git可以管理的仓库

克隆仓库

  • 克隆仓库本地 git clone /path/to/repository
  • 克隆远端服务器仓库 git clone username@host:/path/to/repository

推送代码

  1. git的工作流
    你的本地仓库由 git 维护的三棵“树”组成。第一个是你的 工作目录,它持有实际文件;第二个是 暂存区(Index),它像个缓存区域,临时保存你的改动;最后是 HEAD,它指向你最后一次提交的结果。
  • git add filename 将文件加入到缓存区
  • git add . 将所有改动过的文件加入到缓冲区
    这是git的第一步
  • git commit -m “代码提交信息” 该命令可以将提交到了 HEAD,但是还没到你的远端仓库
  • git push origin master 会将HEAD指向的提交结果推送到远端仓库,可以把 master 换成你想要推送的任何分支。

  • git remote add origin git@github.com:Elysia-zfy/仓库名字.git 关联远端仓库

分支

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

分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN。
如果两个平行宇宙互不干扰,那对现在的你也没啥影响。不过,在某个时间点,两个平行宇宙合并了,结果,你既学会了Git又学会了SVN!
pEFFr8g.png

  • git branch 分支名 创建一个分支
  • git branch -v 查看分支
  • git checkout -b feature_x 创建一个叫做“feature_x”的分支,并切换过去.
  • git checkout master/main 切会主分支
  • git branch -d feature_x 删除分支
  • git push origin将分支推送到远端仓库,不然别人看不到

合并与更新

  • git pull 拉取本地仓库或者远端仓库的最新代码
  • git merge合并分支,将你现在的分支与其他分支进行合并

    这个合并分支并不是每次都会成功的,并可能出现冲突(conflicts)。 这时候就需要你修改这些文件来手动合并这些冲突(conflicts)。改完之后,你需要执行如下命令以将它们标记为合并成功:git add

  • git diff在合并改动之前,你可以使用如下命令预览差异

状态回退

1
2
3
4
5
6
7
8
- git checkout -- file

一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次git commit或git add时的状态。
git checkout --其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
  • git reset HEAD file 将add后也就是放到暂存区但还没有commit的文件撤销add

  • git status 查看当前缓存区的状态

  • git rm —cached a.txt 将a.txt 文件从缓存区移动到工作区