最近在用git做项目的代码管理,在此对git的使用做一个简单的总结。
1、git学习资料
网上git的学习教程很多,本人看的是如下两个网址的教程:
www.runoob.com/git/git-basic-operations.html
https://learngitbranching.js.org/
2、git个人使用汇总
1)git常用操作
下载远程库 git clone https://github.com/Evolveum/midpoint.git
a)分支常用命令组
创建并切换到分支 git checkout -b clib-testing
切换分支 git checkout master
查看本地分支 git branch
查看远程分支 git branch -r
删除本地分支 git branch -d clib-testing
删除本地的远程分支 git branch -r -D origin/clib-testing
远程删除git服务器上的分支git push origin -d clib-testing
b)提交常用命令组
将文件添加到缓存区 git add .
将缓存区内容保存到本地仓库中 git commit -m "提交注释信息"
(若新的修改想提交到上次提交的commit中 git commit --amend
将修改更新到服务器中 git push
(若是分支未提交到过服务器,可根据输出提示,输入如下命令 git push --set-upstream origin clib-testing
)
c)更新本地库常用命令
更新本地库 git pull
(第一次更新本地库 git pull origin master
)
d)其他
显示工作目录和暂存区的状态 git status
查看提交日志 git log
2) 高频操作
a)撤销操作
没有git add,撤销修改 git clean -f
撤销git add git reset --mixed(文件退出暂存区,但是修改保留)
撤销git commit git reset id(完成Commit命令的撤销,但是不对代码修改进行撤销,可以直接通过git commit 重新提交对本地代码的修改)
撤销git push git reset –hard id(完成撤销,同时将代码恢复到前一commit_id 对应的版本,id通过git log查询)
、git revert id
[git revert与reset的区别是git revert会生成一个新的提交来撤销某次提交,此次提交之前的commit都会被保留,也就是说对于项目的版本历史来说是往前走的。而git reset 则是回到某次提交,类似于穿越时空。]
b) 合并
A、将clib-testing分支的代码合并过来,并按照提交的顺序排序
- 切换到master分支
git checkout master
- 在master分支合并clib-testing分支
git rebase clib-testing
、git merge clib-testing
rebase和merge区别请参看:https://www.jianshu.com/p/c17472d704a0
B、把分支中的一个commit合并到master中
- 查询分支commit id
git log
- 切换到master分支
git checkout master
- 合并分支中commit id前6位数为6b7a80到master中
git cherry-pick 6b7a80
C、合并commit
合并最后2此提交 git rebase -i HEAD~2
合并上次提交到commit id为65tb80开头的commit git rebase -i 65tb80
c)日志查询
查看远程分支日志 git log remotes/origin/cli-testing
查看各个branch之间关系图 git log --graph --decorate --oneline --simplify-by-decoration --all
、gitk --simplify-by-decoration --all
–decorate 标记会让git log显示每个commit的引用(如:分支、tag等)
–oneline 一行显示
–simplify-by-decoration 只显示被branch或tag引用的commit
–all表示显示所有的branch,这里也可以选择,比如我指向显示分支ABC的关系,则将–all替换为branchA branchB branchC