2**
GIT学习-常用命令
**
在学习git前首先需要对相关名词和概念有基本了解,git基础知识学习可参考以下资料:
- git基础知识:GIT学习-(1)基础知识
- git下载与配置:GIT学习-(2)GIT下载与配置
- GitHub/Gitee/Gitlab的ssh公钥配置:GIT学习-(3)配置SSH公钥及新建远端仓库(创建版本库)
- git官方常用命令文档:git常用命令
1. GIT基础配置
git config --global user.name "用户名"
git config --global user.email 用户邮箱
git config --system --list
git config --global --list
2. 配置SSH公钥
ssh-keygen -t rsa -C "email邮箱"
3. GIT基础命令
git init
git status
git status filename
ex:git status readme.txt
4.1 常用命令
4.1 添加代码到暂存区
git add .
git add [filename]
ex: git add readme.md
git add -f <filename>
4.2 暂存区代码提交到本地仓库
git commit -m "note"
ex: git commit -m "first commit"
4.3取消暂存区文件
# 取消暂存区单个文件
git reset HEAD <filename>
# 取消暂存取所有文件
git reset HEAD -- .
4.4 将本地仓库代码推送到远程
git push [remote] [remote-branch]
git push origin master
git push -u origin master
ex: git push origin dev
git push origin dev:dev-1
4.5 拉取远端代码
git pull [remote] [remote-branch]
ex: git pull origin master
5. 查看历史提交记录
git lg
git log
git log --pretty=oneline
每次提交版本号都是唯一,HEAD表示当前版本,当我们需要回退到某个版本的代码时就必须要知道版本号才能回退
git reflog
6. 版本回退
当前版本为HEAD
,上版本为HEAD^
,上上个版本为HEAD^^
,上100个版本HEAD~100
git reset --hard HEAD^
git reset --hard HEAD^^
git reset --hard 版本号
ex: git reset --hard 1094a
7. 查看文件差异
git diff HEAD -- 文件名
ex: git diff HEAD -- readme.txt
8. 撤销修改
修改的文件放到了缓存区和本地仓库,但是想撤销修改
git checkout -- 文件名
ex: git checkout -- readme.txt
撤销修改后的文件有两种情况:
(1)文件修改后还未放到缓存区,撤销修改后将回到与版本库一模一样的状态,也就是回退到上一次执行git commit
命令后的文件
(2)文件修改后将文件已经git add
到了缓存区,然后文件又做了修改,此时撤销修改文件将变成添加到暂存区后的状态,也就是回退到上一次执行git add
命令后的文件
9. 删除文件
rm 文件名
ex:rm test.txt
git rm 文件名
ex: git rm test.txt
如果删错了文件,可以使用撤销修改将误删的文件恢复,但只能将文件恢复到最新版
10. 远程仓库
10.1 查看远程仓库
查看远程仓库
git remote -v
查看远程仓库详细信息
git remote -v <remote-name>
ex: git remote -v origin
10.2 关联远程仓库
远程仓库名通常用 origin 命名,URL就是在github/gitee克隆代码的地址
git remote add 远程仓库名 URL
ex:git remote add origin git@github.com:michaelliao/learngit.git
10.3 删除远程仓库
删除远程仓库即解除本地与远程仓库的链接关系,远程仓库仍然存在,若想删除远程仓库则需要登录github/gitee
git remote rm 远程仓库名字
ex: git remote rm origin
10.4 重命名远程仓库
git remote rename <old-remote-name> <new-remote-name>
11. 分支
11.1 创建分支
ps:注意要和前面的撤销修改文件命令区分开来
git checkout 分支名
ex: git checkout dev
git checkout -b 分支名
git switch -c 分支名
ex: git checkout -b dev
git switch 分支名
11.2 查看分支
git branch
git branch -r
git branch -a
11.3 删除分支
git branch -d 分支名
git branch -D 分支名
ex:git branch -D dev
git push <remote-name> --delete 分支名
ex:git push origin --delete dev
11.4 合并分支
Fast forward
模式(快速合并模式)
通常,合并分支时,如果用Fast forward
模式进行分支合并,在这种模式下,删除分支后,会丢掉分支信息。
git merge 分支名
ex: git merge dev
强制禁用快速合并模式
如果要强制禁用Fast forward
模式,Git就会在merge
时生成一个新的commit
,这样,从分支历史上就可以看出分支信息。
git merge --no-ff -m "提交说明" 合并的分支名
ex: git merge --no-ff -m "merge with no-ff" dev
11.5 管理分支
当在当前分支(dev)完成一半工作需要切到其他分支工作时,当前分支部分文件没有修改完,此时使用git status
查看当前分支会发现有未被跟踪和修改的文件,此时输入git stash
命令可以将当前分支临时封存起来,然后git status
查看当前分支状态是干净的,可以发现之前未被跟踪和修改的文件被临时封存起来了,这时候切到其他分支工作不影响当前分支工作。
当切回该分支继续工作时,可以查看临时封存的版本号,并可以切换临时封存前的状态,但需要删除封存的stash内容
git stash
git stash list
git stash apply
git stash drop
git stash pop
11.6 修改分支
当前位于dev
分支,master
分支有个bug
修改了,同样需要将dev
分支上该处的bug进行修改,有两种方法:
- 直接将
master
分支merge
到当前dev分支上。这样会存在一个问题,就是别人也在master
分支合并了很多内容,当前dev
分支相较于master
分支落后了很多,而我只想修改当前dev
分支存在那个bug的位置,这样就需要用到第二种方法; - 修改
bug
单独切了一个分支issue
(从master
分支切出来),提交commit
后版本号为4c805e2
,然后将issue
分支合并到master
分支上;此时切回之前工作的dev
分支,输入cherry-pick
命令就能将issue
分支内容合并到dev
分支上
cherry-pick命令使用场景可参考廖雪峰老师博客的说明,说的很清楚
git cherry-pick命令使用
git cherry-pick 版本号
ex: git cherry-pick 4c805e2
12. 拉代码
当本地的dev
分支需要拉远程仓库dev
的代码时,使用git pull
拉取代码失败报一下错误,需要将本地dev
分支与远程仓库dev
分支先建立链接,然后在git pull
拉代码
git branch --set-upstream-to <branch-name> origin/<branch-name>
git branch --set-upsteam-to=远程仓库名/远程仓库对应分支 本地分支
ex:git branch --set-upstream-to=origin/dev dev
13. 标签
13.1 创建标签
git tag <tag name>
ex: git tag v1.0
git tag <tag name> <commit>
ex: git tag v1.0 f52c
git tag -a <tag name> -m "标签说明" <commit>
ex: git tag -a v0.1 -m "version 0.1 released" 1094adb
13.2 查看标签
标签不是按时间顺序列出,而是按字母排序的
git tag
git show <tag name>
ex: git show v1.0
13.3 删除标签
git tag -d <tag name>
ex: git tag -d v0.1
13.4 推送/删除标签
git push <remote> <tag name>
ex: git push origin v1.0
git push <remote> --tags
ex: git push origin --tags
git tag -d <tag name>
ex: git tag -d v1.0
git push <remote> :ref/tags/<tag name>
ex: git push origin :refs/tags/v0.9
14. 小技巧
改变版本号、提交说明、分支的颜色
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
使用git lg
命令就能很清楚的区分
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)