git配置
-
安装git
sudo apt install git
-
配置github用户信息,帐号和密码
git config --global user.name “用户名”
git config --global user.email 邮箱名 -
查看git config配置信息
git config -l
-
生成ssh密钥,用来验证登录,使用下面的命令,一直回车,会在当前目录生成一个.ssh文件夹。
ssh-keygen -t rsa -C “your_email@example.com”
-
.ssh文件夹里面有一个名为id_rsa.pub的文件,这就是公钥,要把公钥添加到github中,这样才能解析你的加密内容
git操作流程
-
可以在本地新建一个git本地仓库,并且可以选择把本地仓库推送到github空仓库,注意是github空仓库,就是新建的github仓库。
-
可以直接把github的仓库非空仓库拉取下来,非空就是你已经推送过仓库到github仓库了。
-
直接git clone 一个仓库下来,这种就是拉取别人的仓库下来,不是自己的,修改之后无法推送。
-
注意:自己使用git init,新建一个仓库,此时无法与其他仓库任何分支进行操作,无论是合并还是拉取推送,方法是git pull origin master,得到一个.git,然后才能进行各种操作,表明同一个仓库。
git使用
-
1、初始化仓库:
git init
此时会在当前目录下建立.git文件夹,属于隐藏文件,可以使用ls -a显示,这个目录就是被控制的目录
-
2、使用git add .把目录提交到暂存区,.代表所有改动过的文件
-
3、使用git commit -m ‘提交信息’,提交暂存的文件到git版本中。
-
本质是三个区,工作区,就是你的目录,除了.git文件夹之外的所有文件。
-
暂存区和git版本区都在.git目录下,git版本区是文件最终存放的位置。
-
暂存区是文件中间存放的地方,工作区是你可见的工作区,你在那里编辑更改代码,点击保存之后,保存也是在工作区。
-
这三个区都是存文件的东西,就相当于把工作区的文件保存了两个副本,就很像微信,别人发了一个文件出来,比如名字叫做作业1,你下载保存了,然后又发了一个作业1,你再下载保存就会变成作业1(1),别人再发一个,你再保存就会变成作业1(2),你更改任何一个都不会影响其他两个,是不是git就这了?当然git功能更加强大,你修改作业1,只要git add 作业,那么就可以实现更改作业1(1),使用git commit -m ‘提交信息’,就可以实现更改作业2。
-
-
4、上面的操作都是在你本地工作目录下的,在此之前你要先建立链接,通过git remote add myhub git@你的仓库名字,你可以通过提交你的文件夹到远程仓库,通过git push 你起的链接名 本地分支。
-
5、github仓库多人同时编辑,只需要在github添加多个ssh密钥,本地仓库有一个加密码,gitHub添加解码器,多个解码器自然可以解码多个。
git分支
- 创建分支且切换到新建的分支
git checkout b 分支名
- 切换分支
git checkout 分支名
- 合并另一个分支到当前分支
git merge 另一个分支名
- 合并冲突,手动修改,并且重新提交
vim 冲突的文件名
git add .
git commit -m “提交信息” - 注意点:分支合并,合并的时候,新文件不会冲突,同一个文件,内容不同就会冲突,此时其他不冲突的已经完成合并,只有冲突的没有合并,需要手动修改文件,然后git add .和git commit -m “提交信息”
版本回退
-
版本回退,查看提交信息
git log
-
因为git有工作区、暂存区和git版本区,所以会有三种回退力度,对应三种选项,–soft、–mixed和–hard。
git reset 选项 分支名对应版本
-
使用–soft就仅仅恢复版本区,暂存区以及工作区的所有东西都不变。
-
使用–mixed就恢复版本区和暂存区,工作区依然不变。
-
使用–hard,版本区、暂存区和工作区3个区都会变,恢复到上一次。
-
-
分支版本名有2种方式表示
- git log查看到的版本id
- HEAD表示当前分支名,HEAD^表示当前分支的上一个版本,HEAD~n表示当前分支的前n个版本
- 直接用分支名
-
单个文件回退
- 将文件撤销回到最近一次修改的状态:
git checkout – file
- 回退到某一次
git log filename(用来查看id,为下一步git reset做准备)
git reset id filename
常用命令汇总
- git config –
- git init
- git clone url
- git
- git add [file1] [file2] …
- git add [dir] (注意会包括子目录)
- git add . (注意是暂存当前所有未暂存过的文件包括目录)
- git status
- 显示暂存区和工作区的差异:
git diff [file]
- 显示暂存区和上一次提交(commit)的差异:
git diff --cached [file]
- 显示两次提交之间的差异:
git diff [first-branch]…[second-branch]
- 提交暂存区全部文件到仓库
git commit -m ‘提交信息’
- 提交暂存区对应文件到仓库
$ git commit [file1] [file2] … -m ‘提交信息’
- 将文件从暂存区和工作区中删除:
git rm file
- 创建分支且切换到新建的分支
git checkout b 分支名
- 切换分支
git checkout 分支名
- 合并另一个分支到当前分支
git merge 另一个分支名
- 合并冲突,手动修改,并且重新提交
vim 冲突的文件名
git add .
git commit -m “提交信息” - 注意点:分支合并,合并的时候,新文件不会冲突,同一个文件,内容不同就会冲突,此时其他不冲突的已经完成合并,只有冲突的没有合并,需要手动修改文件,然后git add .和git commit -m “提交信息”
- git log
- git log -filename
- 添加一个新的远程仓库。指定一个远程仓库的名称和 URL,将其添加到当前仓库中:
git remote add 你起的远程仓库别名 远程仓库名
- 从当前仓库中删除指定的远程仓库:
git remote remove 你起的远程仓库别名
- 拉取远程仓库你没有的分支
git fetch 你起的远程仓库别名
- git pull 命令用于从远程获取代码并合并当前分支。
git pull 你起的远程仓库别名 分支名
- git push 命令用于从将本地的分支版本上传到远程并合并。命令格式如下:
git push <远程主机名> <本地分支名>:<远程分支名>
- 如果本地分支名与远程分支名相同,则可以省略冒号:
git push <远程主机名> <本地分支名>