Git

Git——常用命令再学习

Nick · 10月28日 · 2021年 · 本文3433字 · 阅读9分钟486

git常用命令

1. 全局配置授权信息

git config --global user.name "你的名字"
git config --global user.email "你的邮箱"

2. 仓库初始化

cd existing_folder
git init
git remote add origin ssh://git@192.168.137.130:8022/root/feedback.git
git add .
git commit -m "Initial commit"
git push -u origin master

注意:仓库初始化的时候要和云端的代码一致,如果不一致会报错,可以使用git pull或者git fetch使代码一致。

3. 版本回退

  • 查看Git中历史提交记录:git log
  • 查看分支合并图:git log --graph
  • 如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数:git log --pretty=oneline 或者 git log --pretty=oneline --abbrev-commit
  • 回退到上一个版本:git reset --hard HEAD~1(1、2、3、、、、)
  • 查看每一次的操作命令:git reflog
  • 回退到指定的版本:git reset --hard HEAD + 每一次提交命令前面的版本号

4. 工作区和暂存区

提交文件前,无论是对文件的修改,新建还是删除,其操作的内容都会放到暂存区中,然后,一次性提交暂存区的所有修改
查看暂存区的状态:git status

撤销工作区和暂存区的修改操作
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD ,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退命令,不过前提是没有推送到远程库。

工作区和暂存区的删除操作
添加一个新文件test.txt到Git并且提交的情况下,误删了该文件,你可以有两个选择:
一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit:
一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:git checkout -- test.txt
(git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”)
注意:从来没有被添加到版本库就被删除的文件,是无法恢复的!

git diff 查看文件修改后的差异:
1)、比较工作空间中的文件和暂存区文件的差异
git diff [files]

2)、比较暂存区的文件与之前已经提交过的文件差异
git diff --cached [files]

3)、比较repo与工作空间中的文件差异
git diff HEAD [files]

5. 远程仓库

将本地git仓库和远程仓库同步:git remote add origin ssh://git@192.168.147.132:8022/Nick/demo.git

本地库的所有内容推送到远程库上:git push -u origin master

查看远程库信息:git remote -v

删除远程库:git remote rm (如:git remote rm origin)

要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone <项目地址> 命令克隆。

远程主机的更新,全部取回本地git fetch <远程主机名>;

将远程仓库特定分支更新到本地git fetch <远程主机名> <分支名>

6. 分支管理

分支作用:假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。

创建dev分支:git branch dev

切换分支:git checkout dev 或者 git switch master

创建并切换分支:git checkout -b dev (git checkout命令加上-b参数表示创建并切换) 或者 git switch -c dev

查看当前分支:git branch

把dev分支的工作成果合并到master分支上:git merge dev
注意:当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。

删除dev分支(-D:强制删除):git branch -d dev

git merge --no-ff dev:合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

隐藏当前的工作区:git stash
查看被隐藏的工作区列表: git stash list
恢复被隐藏的工作区:git stash apply stash@{0}
删除被隐藏的工作区: git stash drop stash@{0}
恢复被隐藏的工作区同时删除:git stash pop stash@{0}
“复制”某次提交到当前分支:git cherry-pick <commit的编号>

抓取分支:
git clone ssh://git@192.168.137.129:8022/root/feedback.git
从远程库clone时,默认情况下,只能看到本地的master分支。
如果要在dev分支上开发,就必须创建远程origin的dev分支到本地,命令如下:
git checkout -b dev origin/dev

推送分支时注意:
1). 首先,可以试图用git push origin 推送自己的修改;
2). 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
3). 如果合并有冲突,则解决冲突,并在本地提交;
4). 没有冲突或者解决掉冲突后,再用git push origin 推送就能成功!
5). 如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to origin/

7. 标签管理

对当前项目打一个标签:git tag v1.0
查看所有标签:git tag
给之前的提交版本打标签:
1). 先查询历史提交的commit id:git log --pretty=oneline --abbrev-commit
2). 再使用以下命令:git tag v0.9

查看标签信息:git show v1.0
指定标签信息:git tag -a -m "指定信息"
删除标签:git tag -d v1.0
推送某个标签到远程:git push origin v1.0
推送全部标签到远程:git push origin --tags
删除远程的标签(先删除本地的标签):git push origin :refs/tags/

8. 配置别名

有些git命令是真心不好记,比如:git log --pretty=oneline --abbrev-commit
因此,git提供了自定义给命令配置别名的方法
如:
1)、st就表示status:git config --global alias.st status
2)、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操作其实再公司中开发中用的很普遍,本次也是自己搭建了GitLab,学了些版本控制的东西,然后想好好总结一下Git的命令。其实Git的常用命令并不多,关键是容易忘,需要一个自己一看就明白的整理,然后加上在工作中频繁的使用,用起来才会得心应手。本次的学习是花了两天的“空闲”时间,学习了一下廖雪峰老师的Git教程:https://www.liaoxuefeng.com/wiki/896043488029600/

0 条回应
在线人数:1人 来访统计
说谎
林宥嘉
隐藏