git命令
自己学习git的使用的命令集合,按照不同的功能分类,方便自己查找。
本地管理
// 本地仓库管理相关命令
1. git init
2. git add xxx // 存入暂存区
3. git commit -m "xxx"
4. git status xxx // watch whether file chagne
5. git diff xxx // watch the detiale change of xxx
6. git log // all commit inforamtion
7. git log --pretty=online // hide the commit id
8. HEAD, HEAD^,HEAD^^,...,HEAD~100 // current version, second version...
git reset --hard HEAD^ // retreat/withdraw last version
// quash/undo/revocation/revoke
9. cat readme.txt // read and display
10. git reset --hard id // recover version
11. git reflog // history operate
12. git diff HEAD --readme.txt //workspace and version liberay diff 工作区和暂存区/版本库里的区别
14. git reset HEAD file //撤销暂存区修改,重新放回工作区
代替 git restore -- stage file
13. git checkout -- file //丢弃工作区的修改,回到最近一次git commit/ git add 状态,回退一次
代替 git restore file
15. rm file // 删除文件(目录)
git rm file // 删除目录中的file,并把此次删除提交到暂存区(目录、暂存区)
16. git checkout --file // 工作区(目录)恢复到暂存区中file状态
先使用git reset head file 在暂存区中将删除操作丢弃,然后git checkout -- file 恢复到工作区
远程仓库管理
//...最新的使用main, 以前都是master,
//...gitee 没有进行关联试验,仅仅是连通,main/master
步骤:
1. 查看.ssh公钥
cd ~/.ssh //有几个ssh秘钥
ll //
vi/vim 复制 y //
2. 创建公钥
ssh-keygen -t rsa -C "aobo@163.com" // -f "xxx" 给文件命名
无需输入密码,三连enter键;--> 之后使用不需要输入密码
3. 修改/添加github、gitee公钥
ssh -T git@github /@gitee 查看链接状态
yes/no/ --> 输入 yes
链接成功,但......
4. 创建github/gitee仓库
创建时勾选Initial this re..... -> 自动创建readme.txt 文件
5. 关联本地仓库
git remote add origin git@github.com:AoBo-J/learn_git.git
git branch -M main
git push -u origin main
// 远程仓库的名字叫origin, git默认叫法,可以修改(没试过)
6. 推送到远程仓库
git push -u origin main //将当前分支main 推送到远端
// 第一次推送加上-u参数,git推送并关联起来
git push origin main
// 删除远程库关联
1. git remote -v // 查看远程库信息
2. git remote rm xxx (origin) // 删除关联
//克隆远程库 关联仓库
git clone
分支管理、多人协作、bug分支
// 分支管理
1. 主分支 master HEAD指向当前分支
2. 创建dev分支 -- 修改 -- 合并到主分支 -- 删除dev分支
步骤:
1. 创建dev分支、切换到dev分支
git checkout -b dev // 创建 -b 切换
== git branch dev + git checkout dev
2. git branch //查看所有分支 当前分支*
3. git checkout main // 切换为主分支
4. git merge dev // dev 分支合并到主分支
// fast-forward 快进模式
5. git branch -d dev // 删除dev分支
3. git switch -c dev //创建并切换到dev分支
4. git switch master //切换到master分支
// 分支冲突 冲突时需要手动修改
<<<<< ====== >>>>> 标记不同分支的内容
git log --graph 命令可以看到分支合并图
// 分支管理策略
1. 合并分支 fast forward 模式 删除分支后丢弃分支信息
强制禁用 会生成一个新的commit,能够看见分支信息
步骤:
1. git switch -c dev
2. git add readme.txt git commit -m
3. git switch master
4. git merger --no-ff -m '........' dev
// 合并会创建新的commit, 加上-m 参数,把commit 的描述加上
5. git log
2. master 分支稳定,只用来发布新版本,
3. 在dev等分支上干活
// bug分支
1. bug修复通过新建分支,修改以后合并分支、删除分支
2. git stash 存藏当前工作
步骤:
1. 工作区 dev
2. git stash
3. git checkout -b issue-101
git switch -c issue-101 // 跳转到问题分支,并创建debug分支
4. git switch master
git merger --no-ff -m "debug" issue-101
5. git switch dev / git status
git stash list // 查看stash列表
6. git stash apply // 恢复 stash 到工作区
git stash drop // 清楚stash
//...git stash pop // 恢复并删除
7. git stash apply stash@{0} // 恢复指定stash
// commit 多的往commit 少的提交
8. master上的错误修改后,顺便在dev上修改: git cherry-pick 4c805e (issue id )
// 丢弃一个还未被合并过的分支
git branch -D xxx // D 强行删除
//...............................................
// 多人协作
git remote -v //显示远程库的信息
显示抓取和推送的 origin 地址,没有推送权限看不到push地址
// 创建远程分支origin的dev到本地
git checkout -b dev origin/dev // 之后可以commit,push
//提交时出现冲突
//在第一次提交前,别人对分支修改后不能直接pull
git branch --set-upstream-to=origin/dev dev
git pull // 有冲突需要手动解决
git push origin dev // 提交
git log --graph --pretty=oneline --abbrev-commit // 分支
// git 用 HEAD -> master 标识当前分支HEAD
// origin/master 标识 远程 origin的位置
git rebase // 将分支变为一条直线
// 查看分支变得简单一些
git log --graph --all // 查看所有分支
gitk --all // 更全
//...............................................
var foo = 'bar';
标签管理
// 切换到分支、打标签,默认打在最新的commit上面
1. git tag v1.0 //打标签
2. git tag //查看标签
// 给历史commit打标签
3. git log --pretty=oneline --abbrev-commit // commit历史
git tag v2.1 f34jhsdj
4. 标签不是按顺序列出,按照字母排序
git show v2.1 //查看标签信息
5. git tag -a v0.1 -m "version 0.1 released" 1094adb
// 创建带有说明的标签, -a 指定标签名, -m指定说明文字
// 标签是和commit挂钩,如果commit出现在多个分支上,每个分支都可以看见这个标签
// 标签存储在本地,不会自动推送到远端
6. git tag -d v2.1 // 删除标签
7. git push origin v2 // 推送分支到远程
8. git push origin --tags // 全部推送到远端
9. git tag -d v2.1 git push origin :refs/tags/v0.9 //删除远程tag
var foo = 'bar';
参与开源项目
1. 右上角一排,fork开源库,
2. 自己拥有fork后的库的读写权限,对其进行修改
3. 推送pull request,给官方仓库贡献代码
github
|-------------------------------------|
| tb/re -> my/re |
|-------------------------------------|
<--> local/re
gitee关联库
1. git remote add origin git@gitee.com:liaoxuefeng/learngit.git // 关联仓库
2. git remote -v // 关联远程库信息
3. git remote rm origin // 删除已有的远程库
4. git remote add gitee git@gitee.com:liaoxuefeng/learngit.git // 换远程库的名字
// 同时关联gitee 和 github 不能用同一个名字
5. git push gitee master
git 特殊用法
1. 忽略特殊文件
2. 配置别名
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.br branch
3. 创建.gitignore文件,把忽略的文件名字填进去,就会自动忽略
4. 搭建git服务器
5. sourcetree
上传提交方法
1. 在 dev 分支工作,
2. commit
3. main 分支合并 git merge --no-ff -m 'xx ' dev
4. push
如果远程main已经修改过,
需要先 pull origin main
再push
git push -u origin dev // 关联远程分支
分支和main一样的操作方式
// 现在更新只需要,dev commit , main merge , push
二〇二二年八月三十日