这是我参与8月更文挑战的第7天,活动详情查看:8月更文挑战
基本命令
-
git init 初始化一个git仓库,即在当前文件夹下生成一个.git文件夹
-
git status 查看当前文件所在哪个工作区
-
git add test01.txt 提交文件,将工作区的文件提交到暂存区
- git add ./ 把当前目录下所有修改过的文件全部提交
-
git commit -m "描述" 将暂存区的文件提交到本地git仓库,并配上相关描述
- git commit --all -m "说明"一次性把所有文件直接提交到仓库
-
git log 提交版本日志,显示从最近到最远的提交日志
- git log --oneline 精简版日志
- git log -p 2a65db916 显示某次提交的修改记录
-
git reset --hard HEAD^ 回退到上一个版本
- git reset --hard HEAD~0回退到上一次的版本,~1表示回退到上两次的版本
- git reset --hard 1094a (版本号:commit id) 指定回到某个版本
-
git reflog 用来记录你的每一次命令历史
-
当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
-
当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD ,就回到了场景一
-
显示暂存区和工作区的差异git diff
远程仓库
- 关联远程仓库:使用命令git remote add origin(这相当于一个变量自己随便起) git@server-name:path/repo-name.git(远程仓库的地址) 关联远程仓库后,以后只要是在这个本地仓库中push就可以使用简单命令git push [你自己起的远程仓库名]origin master 执行pull操作也可以这样使用
- 关联后,使用命令git push -u origin master第一次推送master分支的所有内容,-u参数会把本地分支与远程指定的分支关联起来,以后就可以直接push
- git push origin master 向远程仓库的master分支推送最新修改
- git pull [远程仓库的地址] master:可以把远程仓库的分支数据拿到,前提是本地要初始化一个本地仓库
- git clone [远程仓库的地址]:可以拿到远程仓库相同的数据,如果多次执行会覆盖本地内容
- git push [远程仓库的地址] master:向远程仓库推送分支数据
分支操作
- 创建分支:git branch
- 切换分支:git checkout 或者git switch
- 创建+切换分支:git checkout -b 或者git switch -c
- 查看分支:git branch:当前分支前面会标一个*号
- 删除分支git branch -d [branch-name]
- 合并分支:git merge dev:合并指定分支到当前分支上
- git branch --set-upstream [branch] [remote-branch]
- 删除本地已合并过的分支 git branch -d dev
- 删除本地未合并的分支 git branch -D dev (强制删除)
打标签
- 给当前分支打一个标签:git tag
- 查看所有标签:git tag
- 对指定的commitid打标签:git tag v0.9 f52c633
- 创建带有说明的标签,-a指定标签名,-m指定说明文字:git tag -a v0.1 -m "version 0.1 released" 1094adb
- git show 可以看到说明文字
- 如果标签打错了,也可以删除git tag -d v0.1
- 推送某个标签到远程:git push origin
stash功能
- git stash list 查看暂存列表
- git stash apply 恢复暂存,但是stash内容不删除,默认回复第一个
- git stash apply stash@{0} 指定恢复哪个暂存
- git stash pop 同样是恢复暂存,但是恢复的同时也会将暂存删除
- git stash pop stash@{1} 应用并删除指定暂存
- git stash save "xxx" 执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别
- git stash show 显示第一个暂存的改动,默认显示第一个
- git stash show stash@{0} 显示第一个暂存的改动
- git stash drop stash@{0} 从列表中删除暂存
- git stash clear 删除所有的缓存
git cherry-pick
当我们master分支上有bug时修复后,那dev分支上肯定也有这个bug,那怎么在dev分支上修复同样的bug?重复操作一次那样也可以但特别麻烦,为了方便操作Git专门提供了一个cherry-pick命令,让我们能复制一个特定的提交到当前分支
- git cherry-pick 4c805e2 复制一次特定的提交到当前分支上
//git合并某个分支的特定commit到master分支
git checkout master
git cherry-pick 62ecb3
- git合并feature分支上多个特定的commit到master分支{
首先需要基于feature创建一个新的分支,并指明新分支的最后一个commit:git checkout -b newbranch 62ecb3 然后,rebase这个新分支的commit到master(--ontomaster)。76cada^ 指明你想从哪个特定的commit开始git rebase --onto master 76cada^
Revert操作
revert 操作相当于是重新提交了一次commit,只不过这个commit是把你的那些修改给还原了。
1.在gitlab上远程revert:不要哪次提交的代码就在哪个commit上revert 2.在本地revert代码:git reset --hard 846asdv 3.与远程仓库的代码保持同步:git reset origin/feature-hierarchyChart
常用命令
- git checkout -b dev origin/dev 新建立本地分支并与远程指定的分支关联
- git reset origin/master 使本地的分支和远程的master保持一致
- git reflog --date=local | grep [分支名称] 判断当前分支是基于哪个分支创建的
问题
1. 解决git push代码到github上一直提示输入用户名及密码的问题
解决方法:将http连接方式改为ssh方式
- Git remote -v 查看当前连接方式
- Git remote rm origin 移出旧的关联
- git remote add origin git@github.com:mm.git 以ssh方式关联