Git 命令练习
git的删除,添加,修改与日志
which vi 查看命令的目录
⌃ a 光标去开头
⌃ E 光标去结尾
ehco 'hellow world asd' > test.txt 修改内容, 重定向到文件中。等于修改了文件。
删除-恢复操作
rm
git rm
使用 rm 和 git rm 的区别。
git rm : 1. 删除了一个文件 2. 将被删除的文件纳入到暂存区.
若想恢复被删除的文件,需要进行两步操作。
a. git rest HEAD test2.txt 将待删除的文件从暂存区恢复到工作区
b. git checkout -- test2.txt 将工作区中的修改丢弃掉
rm : 将文件删除,这时,被删除的问价并未被纳入到暂存区
重命名操作
git mv oldname newname 重命名
mv oldname newname 重命名
git mv 和 mv 的却别 相当于 rm 和 git rm 的区别。
修改commit注释
git commit --amend -m '修改commit注释' ; 把上次提交的commit记录给修改了
git log -n ;查看最近几条的日志
查看帮助文档
git help log ; git log --help ; man git log
.gitignore 与 分支
.gitignore的作用:过滤不需要上传的文件。
- *.a #忽略掉所有.a结尾的文件
- !lib.a # 但lib.a除外
- /TODO #仅仅忽略项目根目录下的TODO文件,不包括subdir/TODO
- build/ # 忽略build/目录下的所有文件
- doc/*.txt # 忽略doc/a.txt 但不包括 doc/b/a.txt
- /**/test.txt 忽略所有的test.txt
-- 2020年01月18日18:16:58
rm -rf file 删除一个文件 或者一个文件包
echo 'hello world ' > test.txt 创建一个文件
分支的重要操作:
分支的本质到底是什么?
分支,一个commit 对象链,一条工作记录线。
HEAD指向的是当前的分支
master指向提交
合并之后 是一个快照 Fast - forward
git branch : 查看分支
git branch new_branch : 创建一个分支
git checkout - : 切换到上一个分支
git checkout master : 切换到master分支
git branch -d erwa : 删除erwa 分支 。 不能删除当前分支;不能删除未合并的分支。 要删的话 需要 -D
git branch -D erwa: 不管分支合并了没,直接删除
git checkout -b erwa4 : 创建,并切换到erwa4分支
git merge erwa4: 将erwa4分支合并到当前分支
git branch -v : 显示分支最近的修改信息
git log --graph : 查看图形化的日志
git commit -am '第三次提交' : 修改之后 add 并且 commit
冲突时手动解决冲突
分支进阶与版本回退
分支进阶
fast-forward :
如果可能的话,合并分支时,Git会使用fast-forward模式
在这种模式下,删除分支时,会丢掉分支信息
合并时加上--no -ff 参数,会禁用fast-forward快照模式。这样会多出来一个commit ID
如 : git merge --no -ff dev
查看图形化的日志 git log -graph
版本回退
git reset --hard HEAD^ : 回退一个版本
git reset --hard HEAD^^ : 回退两个版本
git reset --hard HEAD~2 : 回退第二个提交
git reset --hard commit_id : 回退到某个commit_id
回到最新的提交怎么办呢?
git reflog 查看操作日志。 然后再回退
checkout进阶与stash操作
checkout进阶
vi操作:
1.跳到文本的最后一行:按“G”,即“shift+g”
2.跳到最后一行的最后一个字符 : 先重复1的操作即按“G”,之后按“$”键,即“shift+4”。
3.跳到第一行的第一个字符:先按两次“g”,
4.跳转到当前行的第一个字符:在当前行按“0”。
git reset HEAD test.txt : 将添加到暂存区的内容从暂存区移除到工作区
git checkout --
git checkout master : 切换到master分支
git checkout -b test : 创建,并切换到test分支
git checkout 986d4a30a : 切换到当前分支的 某个log之前的状态。 游离状态
git branch -m test dev : 将test分支 名字修改成 dev
stash操作
适用场景,在当前分支开发,需要切换到其余分支。保存当前分支的现场。恢复现场等
git stash : 保存现场
git stash list : 查看保存现场
git stash apply :恢复现场( stash内容不删除,需要通过git satsh drop stash@{0} 手动删除)
git stash apply stash@{0}:恢复某个现场
git stash pop : 恢复现场(恢复的同时也将stash内容删除)
标签与diff
标签
标签的基本使用和作用
作用: 发布系统,或者到了一个历程碑时,给当前项目打一个版本标签
标签有两种: 轻量级标签与带有附注的标签
git tag v1.0 : 创建一个轻量级标签
git tag -a v1.1 -m '注释' : 创建一个带有附注的标签
git tag :查看当前分支的标签
git tag -l '1.0' : 根据条件查找当前的分支
git tag -d v1.0 : 删除标签
diff
diff 两个文件之间的差异性比较
git blame test.txt : 查看此文件的修改不同
diff a b : 比较a b 两个文件的不同 -- Unix自带的diff的使用
diff -u a b : 更清楚的比较 a b
git diff : 比较 暂存区 和工作区的区别 ; 暂存区作为原始文件。 工作区作为目标文件。
git diff HEAD : 比较工作区与最新提交的差别
git diff commit_id : 比较工作区与commit_id 那次的差别
git diff --cached : 比较的是最新的提交与暂存区之间的差别
远程与GitHub
git config --list : 查看当前git的配置
推送远程版本库:
git remote add origin https://github.com/584tiegan/gitlecture.git
git push -u origin master
Git远程操作
git remote show : 查看当前代码关联的远程仓库
git remote show origin : 查看远程仓库的信息
- Gitflow 建议和参考。
- 基于Git分支的开发模型:
- master -- 生产发布分支。变化非常不频繁的分支。
- hotfix -- 热修分支。用于紧急修复的分支。
- test -- 测试分支。 供测试和产品等人员使用的分支,变化不是特别频繁。
- develop -- 开发分支,频繁变化的一个分支。
- feature -- 开发者分支。针对于单个的功能点。
使用SSH方式clone代码和push pull
先获取本地SSH
➜ ~ cd .ssh
➜ .ssh ls
known_hosts
➜ .ssh ssh-keygen -t rsa
➜ .ssh cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/SmZ8VvFLJIRurSXRaCsSeOgGN0bqKFt/3Qdk6MVqywHJEoYXlKdy4/NM/eMcgnNdpDnQkB5TbUyTppbVeMfuKz4RBH3bCw9oL44ZGm0bXB6hJU1kpnMMpSVriN+Ssv8GqBO/Vd4oK5vEywQV2e/cAvkqtC6Vb5Duf84Ho9n/U1IlcQVmbWw02TMzkzDwZqDbDoVWQBJ4sFRjq6lOFfZGFRtfXrBPnTkCibDlAjg0s0j7/FOcQupy4r4fbkXr+D4925ummuXD+E0F5+HIUWqddFhWgfMcs5T+JY+vh8D0Gbm7Q4g8A1DfAOwIWqFlBiFErQtgqNOGy14rv9g5IP2Z [email protected]
之后再GitHub里配置一下SSH 就可以了
Git协作
Git协作的基本过程介绍:
A人员push到远程仓库,B人员pull到本地仓库。AB进行了同步,可以进行同时开发。
push代码前,要先pull代码。
AB人员都有本地的版本库。也有一个公共的远程版本库。
一个本地库可以对应多个远程仓库。
git remote show : 查看远程仓库的信息
git remote show origin : 查看某个具体的远程仓库的信息。
➜ mygit git:(master) git remote show origin
Warning: Permanently added the RSA host key for IP address '140.82.114.3' to the list of known hosts.
- remote origin
Fetch URL: [email protected]:584tiegan/gitlecture.git
Push URL: [email protected]:584tiegan/gitlecture.git
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (up to date)
git branch -a : 查看本地所有的分支,包括远程分支