Git命令学习笔记
1、安装
sudo apt-install git
2、创建本地仓库
在文件夹下使用命令
git init
之后可以使用如下命令查看到当前工作空间下多了一个.git隐藏文件夹
ls -al
3、版本创建和回退
.git就是版本库
添加新文件到缓存
git add xxx
将缓存中的文件提交并创建一个新版本
- 在一次commit之前可以多次add,将多个变更提交到缓存区。
- 提交成功后暂存区就被清空。
- 提交只会将暂存区的变动提交至分支,而不会提交工作区中新增的(但并未add到暂存区的)内容。
git commit -m '版本说明'
注意初次提交可能会出现用户邮箱和用户名未知的情况,按提示设置好即可
查看版本记录
git log
当记录过多时可以使用如下命令简化输出
git log --pretty=oneline
当进行了分支管理时,可以使用如下命令查看分支图形化变更流程
git log --graph --pretty=oneline
回退1个版本
注意: 回退版本会使用历史版本覆盖当前工作区,并且会清空回退前的缓存区,也就是会造成缓存区的内容丢失。选择回退版本时应当先查看缓存区是否有变更内容使用git status
git reset --hard HEAD^ 或 git reset --hard HEAD~1
回退n个版本
git reset --hard HEAD~n
转到某个指定的版本,常用于回退版本后又想回到最新版本
git reset --hard [版本号]
查看操作记录,常用于重新打开终端后查看版本号。
git reflog
查看工作区与暂存区的差异状态
git status
4、撤销修改
(1) 想撤销工作区未提交到暂存区的变动
该操作会将暂存区的对应内容覆盖到当前工作区
git checkout -- [文件名]
(2) 想撤销已经提交到暂存区的变动
该操作会撤销此文件到暂存区的提交,相当于回退到(1)中的情况
git reset HEAD [文件名]
该操作与(1)相同
git checkout -- [文件名]
(3) 想撤销已经提交到版本库的变动
与第三节相同,该操作会将版本库中对应版本的内容覆盖到当前工作区
git reset --hard HEAD^ 或 git reset --hard HEAD~1
git reset --hard [版本号]
5、对比文件的不同
通用操作,该操作将会是显示指针1和指针2指向的版本中的对应文件的差异
git diff [指针1] [指针2] -- [文件名]
比较当前工作区(不填指针代表当前工作区)与当前HEAD版本之间某文件的差异
git diff HEAD -- [文件名]
比较当前工作区与暂存区之间某文件的差异
git diff -- [文件名]
比较当前暂存区与当前HEAD版本之间某文件的差异
git diff --cached
6、分支管理
之前的操作都是在主分支master
上,多分支的原理:多一个指针进行指向
查看当前所在的分支
git branch
创建并转跳到新的分支
git checkout -b [新分支名]
切换到某个分支
git checkout [分支名]
快速把某分支合并到主分支
git merge [分支名]
合并后就可以删除分支了
git branch -d [分支名称]
7、分支的冲突解决
合并分支并不总是会直接成功,通常是两个分支对同一个文件做了修改,这种情况需要手动进入工作区调整代码后重新提交一个新版本。
使用git status
可以查看冲突的文件
8、bug分支的解决
有时候,需要紧急解决某个bug分支里的问题,而手中的dev分支的工作区还没完全写完,还不能提交,这就需要学习如何保存工作现场
保存工作现场(类似压栈),之后就可以转到其他分支进行开发
git stash
查看已经保存的工作现场
git stash list
弹出并恢复工作现场(类似弹栈)
git stash pop
9、代码仓库管理
在一个大型项目中,常由项目经理在中央服务器创建中央仓库,并设置好代码框架,之后将任务分配给下属进行开发。为了方便本地服务器与中央服务器之间的代码提交,需要项目经理收集员工的ssh公钥
如果某台机器需要与github上的仓库交互,那么就需要把这台机器的ssh公钥添加到这个github账户上
(1)生成本机ssh公钥
先配置好本地git账户
生成本机ssh公钥
ssh-keygen -t rsa -C "邮箱地址"
(2)在github账户添加ssh公钥
10、克隆与分支跟踪
克隆分支
git clone [https地址/ssh地址]
推送本地分支到远程仓库
git push origin [本地分支名称]
# 其中origin指代远程仓库
使本地分支跟踪上游远程分支,这样的话当本地落后或领先上游分支时,git会发出提示,该提示也可以通过git status
查看。
git branch --set-upstream-to=origin/[远程分支名称] [本地分支名称]
从远程拉取分支,该操作会把远程分支上的代码下载并合并到本地所在分支。
git pull orgin [远程分支名称]