Git学习笔记
本文最后更新于:2022年5月29日 上午
基础环境
ubuntu 16.04 x86_64
1,安装Git
1 |
|
2,创建版本库
1)选择一个合适的地方,创建一个空目录:
1 |
|
2)通过git init命令把这个目录变成Git可以管理的仓库:
1 |
|
初始化空的 Git 仓库于 /home/yun/learngit/.git/
3,把文件添加到版本库
- 初始化一个Git仓库,使用git init命令。
- 添加文件到Git仓库,分两步:
1、使用命令git add filename
,注意,可反复多次使用,添加多个文件;
2、使用命令git commit -m "message"
,完成。
1)编写一个readme.txt文件,内容如下:
1 |
|
注意事项
一定要放到learngit目录下(子目录也行),因为这是一个Git仓库,放到其他地方Git再厉害也找不到这个文件。
2)用命令git add告诉Git,把文件添加到仓库:
1 |
|
3)用命令git commit告诉Git,把文件提交到仓库:
1 |
|
显示以下信息:
1 |
|
git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。
注意事项
如果运行git commit出现如下提示:
1 |
|
请按照提示运行命令设置你的身份信息。
要随时掌握工作区的状态,使用git status命令。
如果git status告诉你有文件被修改过,用git diff可以查看修改内容。
版本回退
Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
穿梭前,用git log
可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog
查看命令历史,以便确定要回到未来的哪个版本。
撤销修改
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD filename
,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考 版本回退 一节,不过前提是没有推送到远程库。
1)修改了文件,还没有提交.
1 |
|
命令git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
2)如果git add到暂存区了,用git status
查看一下,发现修改只是添加到了暂存区,还没有提交。
1 |
|
提示可以用命令git reset HEAD
1 |
|
1 |
|
删除文件
1 |
|
(使用 –cached 保留本地文件,或用 -f 强制删除)
创建远程仓库
1)请先自行注册GitHub账号
2)创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell创建SSH Key:
1 |
|
你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。
3)登陆GitHub,打开“Account settings”,“SSH Keys”页面:
然后,点“New SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容。
添加远程库
1)首先,登陆GitHub,然后,点击右上角”+”目录找到“New repository”选项,创建一个新的仓库;
2)在Repository name填入learngit,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库;
3)根据GitHub的提示,在本地的learngit仓库下运行命令,把本地仓库的内容推送到GitHub仓库:
1 |
|
(删除远程库:git remote rm origin
)
4)把本地库的所有内容推送到远程库上:
1 |
|
从远程库克隆
1)登陆GitHub,创建一个新的仓库,名字叫gitskills。勾选Initialize this repository with a README,这样GitHub会自动为我们创建一个README.md文件。
2)用命令git clone克隆一个本地库:
1 |
|
创建与合并分支
- 查看分支:git branch
- 创建分支:git branch name
- 切换分支:git checkout name
- 创建+切换分支:git checkout -b name
- 合并某分支到当前分支:git merge name
- 删除分支:git branch -d name
- 如果要丢弃一个没有被合并过的分支,可以强行删除:
git branch -D name
- 合并分支时可以使用–no-ff参数,表示禁用Fast forward:
git merge --no-ff -m "message" name
此指令合并要创建一个新的commit,所以加上-m参数,把commit描述写进去
1)创建dev分支,然后切换到dev分支:
1 |
|
2)用git branch命令查看当前分支:
1 |
|
3)修改文件,然后提交:
1 |
|
4)dev分支的工作完成,切换回master分支:
1 |
|
5)把dev分支的工作成果合并到master分支上:
1 |
|
6)合并完成后,就可以放心地删除dev分支了:
1 |
|
7)删除后,查看branch,就只剩下master分支了:
1 |
|
保存和恢复分支工作现场
Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:
1 |
|
完成其他工作后,回到dev分支:
1 |
|
使用下面命令查看:
1 |
|
恢复:
一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
另一种方式是用git stash pop,恢复的同时把stash内容也删了。
如果你多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:
1 |
|