1. git简介
git是分布式版本控制系统
2. 如何安装git
2.1 方法一
sudo apt-get install git
2.2 方法二
(1) 从官网下载源码解压
(2) ./config
(3) make
(4) sudo make install
3. 创建版本库:版本库又名仓库,英文repository(可以理解为一个目录,这个目录里的所有文件都可以被Git管理起来。
(1)makedir 目录(仓库)
(2)cd 目录 :为工作空间
(3)git init
(4)ls -ah 有一个.git的文件 : 为版本库
(5)此时:目录为工作空间,.git为
4. 把文件添加到版本库里:
4.1 创建文件:
(1)touch 文件名
(2)git status 查看文件在仓库中的状态,应该为未跟踪
4.2 将文件添加到暂存区
(1)git add 文件名
git add
命令用于将文件或目录添加到暂存区(staging area),准备将其包含在下一次提交中。
git add
可以在以下几种情况下使用:
- 添加新文件:用
git add <file>
添加新创建的文件到暂存区。例如,git add myfile.txt
将myfile.txt文件添加到暂存区。- 添加修改的文件:用
git add <file>
将对已修改的文件的更改添加到暂存区。例如,git add myfile.txt
将对myfile.txt文件的更改添加到暂存区。- 添加所有文件:用
git add .
或者git add -A
添加所有修改、删除和新创建的文件到暂存区。例如,git add .将所有文件添加到暂存区。 一旦文件被添加到暂存区,可以使用
git commit`将其提交到本地仓库。
(2) 执行完命令行,其实际上是把文件添加到了暂存区
(3)git status 查看文件在仓库中的状态,可以看到文件已经在暂存区
(4)在执行完(2)后,可以看到,通过 git rm --cached ,可以将已经在暂存区的文件从暂存区移出
将文件提交到本地仓库
(1)git commit -m “本次提交说明”
注:
git commit
用于将暂存区(staging area)中的文件提交到本地仓库。它会创建一个新的提交(commit),并将提交的内容与一个唯一的标识符关联起来,该标识符被称为提交的哈希值(commit hash)。每个提交都包含了一组文件的快照,可以在需要的时候回滚到特定的提交或查看提交历史。提交还可以包含有关提交者、提交时间和提交信息的元数据。提交是Git的核心概念之一,它使得团队成员可以在分布式开发中共享和同步工作。但它们不会立即在远程仓库中可见。要将提交推送到远程仓库,需要使用 git push 命令
(2)git status 查看文件在仓库中的状态,可以看到暂存区里的文件已经都被提交到版本库了,没有文件需要提交
(3)git log查看当前分支的提交历史,可以看到刚刚提交的哈希值、作者、日期、提交信息等
git log
命令用于查看当前分支的提交历史。它会显示提交的信息,包括提交哈希值、作者、日期、提交信息等。
使用git log
命令可以查看以下信息:
(1)提交哈希值:每个提交都有一个唯一的哈希值来标识它。这个哈希值可以用于在版本库中定位和引用提交。
(2)作者和提交日期:记录了谁提交了该更改以及何时提交的。
(3)提交信息:提交者提供的关于该更改的描述性信息。
除了显示提交历史,git log
命令还支持一些选项来定制输出格式和过滤提交历史。例如,可以使用--pretty
选项来指定输出格式,使用--since
和--until
选项来指定时间范围,使用--author
选项来过滤某个作者的提交等等。
使用命令git log
,会按照从最新到最旧的顺序显示提交历史。如果要退出日志查看,可以按下Q键。
(4) 将git commit的提交,回退到暂存区状态
(5)将git commit的提交,回退到未跟踪状态
5. 版本回退:
(1)git log 显示历史版本的修改记录
(2)git log --pretty=oneline 只显示每条历史记录的第一行
(3)在git中HEAD表示当前版本,HEAD^ 表示上一个版本,HEEAD^^表示上上一个版本,HEAD~100表示往上的100个版本。
(4)git reset --hard HEAD^
git reset --hard HEAD^^
git reset --hard 指定的commit ID
(5) git reflog 来显示历史命令
6. 工作区、暂存区和版本库
(1)工作区:就是仓库目录
(2)暂存区和版本库:
.git:就是git的版本库。
.git目录中的index(stage)为暂存区
.git目录中还有git为我们自动创建的第一个分支master,以及只想master的一个指针HEAD
(3)想远程仓库推送的就是HEAD指针指向的分支指向的内容
7. git管理的是修改
8. 撤销修改:
(1)git checkout --file 可以丢弃工作区的修改
(2)git reset HEAD file 可以把暂存区的修改撤掉(unstage)
9. 删除文件:
(1) git rm file
(2) git commit -m “remove file”
(3) git checkout – file
10. 远程仓库:
(1)创建SSH KEY:ssh-keygen -t rsa -C “youremail” 产生的.ssh目录下的两个文件id_rsa(密钥)和id_rsa.pub(公钥)
(2)登录Github-》打开Account setting-》SSH Keys页面 --》Add SSH Key -》在Key文本框里黏贴id_rsa.pub
(3) 将本地仓库与远程仓库进行关联:git remote add origin git@github.com:你的github用户名/你在github上的仓库
(4)将本地库的所有内容推送到远程库上:git push -u origin master
当出现“Error: src refspec master does not match any – How to Fix in Git”时,解决方案,亲测有效
(5) SSH警告:第一次使用SSH连接,会出现警告。
(6) 从远程克隆:先创建远程库,从远程克隆仓库到本地
git clone git@github.com:你的github用户名/你在github上的仓库
对于克隆出现“ERROR: You‘re using an RSA key with SHA-1, which is no longer allowed”时 ,解决方案,亲测有效
11. 创建与合并分支
(1)创建并切换到新分支:git checkout -b 新分支的名字
(2)创建新分支: git branch 新分支的名字
(3)切换到相应的分之: git checkout 相应分支的名字
(4)将当前HEAD所指的当前分支与指定的分支合并:git merge 指定分支的名字
(5)删除分支:git branch -d 分支的名字
12. 解决冲突:冲突发生后:git status 根据状态提示去手动修改。
13. 多人协作:
(1)查看远程库的信息:git remote
(2)查看远程库的详细信息: git remote -V
(3) 推送分支:git push origin 要推送的分支(4)抓取分支:git clone git@github.com:你的github用户名/你在github上的仓库
(5) 查看分支:git branch
(6) 创建远程分支到本地:git checkout -b 要创建的分支 origin/dev
14. 标签:
(1)创建标签:git tag v1.0(标签)
(2) 查看标签:git tag
(3)查看标签信息:git show 标签名称
(4)删除标签:git tag -d 要删除的标签名称
(5)推送某个标签到远程:git push origin 要推送的标签名称
(6)推送尚未推送的所有本地标签
(7)同时删除本地与远程标签: 先从本地删除:git tag -d 要删除的标签
再从远程删除:git push origin :refs/tags/要删除的远程标签名。
15. 配置别名:git config --global alias.最终的名字 要配置别名的名字
eg:git config --global alias.last ‘log -l’
16. 配置文件:
(1)只对当前仓库起作用的别名在:.git/config
(2) 对当前用户起作用的别名在:~/.gitconfig