Git基本命令
JAVA学习第四天,掌握Git工具,Git Bash,在学习git过程Git教程- 廖雪峰的官方网站以及秦疆老师Git最新教程通俗易懂中总结的git基本命令
一、基本Linux命令
-
pwd:显示当前目录的详细路径
-
cd +目录名:切换到该目录
-
cd … :回到上一级目录
-
clear:清屏
-
cat:显示文件内容
-
ls:显示当前文件中的所有文件(蓝色代表目录,绿色代表应用程序,白色代表文件[md、word、txt等])
-
touch:新建一个文件
-
rm:删除(移除)一个文件
-
mkdir:创建一个目录(文件夹)
-
rm -r(m和-间有一个空格):删除这个目录
rm -rf / :好像会格式化,在Linux系统不要尝试
-
mv :移动mv a b,将a移动到b里
-
reset:重新加载终端,与clear有点类似
-
history:查看历史命令
-
exit:退出
二、配置环境命令
- git config -l :本地配置
- git config --system --list:本地系统配置
- git config --global --list:本地用户配置
- 设置自己的用户名和邮箱:git config --global
git所有的配置文件其实都保存在本地
git相关配置文件:
- D:\soft\Git\etc中的gitconfig(系统配置文件)
- C:\Users\LE中的gitconfig(用户配置文件)
三、搭建本地仓库命令
注意勾选显示隐藏项目
- git init:初始化命令,生成一个隐藏git
- git clone +复制下来的:克隆远程仓库
四、Git文件操作的命令
- git status:查看文件的状态,Untracked
- git add .:将所有文件添加到暂存区,Staged
- git commit -m +“信息内容”:将暂存区中文件移到本地仓库
- git diff:查看修改,之后用git add提交暂存,查看状态确定后,git commit -m提交仓库
- git log:命令显示从最近到最远的提交日志,加上
--pretty=oneline
参数更加清楚 - git reset --hard HEAD^ :返回上一版本
- git reset --hard +“想返回版本的commit id” :回到这一版本
- git reflog:用来记录每一次命令,以便于找到未来commit id
五、撤销修改命令
可以根据提示命令进行撤销修改
- git checkout – file:撤销工作区的修改
- git reset HEAD :撤销在暂存区的修改,之后git checkout – file撤销工作区修改
六、删除文件命令
步骤:
-
直接在文件管理器中把没用的文件删了,用rm命令删
-
两个选择:1.确实要从版本库中删除该文件,那就用命令
git rm
删掉,并且git commit
2.删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本,git checkout – file
七、关联本地库与远程库命令
可以看github上提示
git remote add origin https://github.com/自己的github账户名/learn-git.git
git branch -M main
git push -u origin main
删除远程库:1.先用git remote -v
查看远程库信息 2.根据名字删除,比如删除origin
:git remote rm origin
之后只要做了本地提交,就可以通过git push origin master推送至远程库
克隆:git clone + 复制的
八、分支命令
1、创建与合并分支
创建分支之前当前分支不为空,要不没什么意义
-
创建+切换分支:
git checkout -b <name>
或者git switch -c <name>
:相当于以下两条命令$ git branch <name> $ git checkout <name>或git switch <name>
-
git branch :列出所有分支,当前分支前面会标一个*号
-
git branch :创建分支
-
切换分支:git checkout 或者git switch
-
合并某分支到当前分支:
git merge <name>
-
删除分支:
git branch -d <name>
2、解决分支冲突
- 创建了多个分支,且每个分支都有新的提交,会导致分支冲突
- git merge合并后出现冲突,这时候需手动修改文件显示自己想要内容,之后删除多余分支
- 用
git log --graph
命令可以看到分支合并图。
3、管理分支策略
- 合并分支时用–no-ff参数,表示禁用fast forword,这样合并会创建一个新的commit,所以加上
-m
参数,把commit描述写进去。
例如:git merge --no-ff -m "merge with no-ff" dev
合并分支时,加上--no-ff
参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward
合并就看不出来曾经做过合并。
4、Bug 分支
软件开发中,bug就像家常便饭一样。有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。
- 当想要解决bug,想创建一个新的bug分支时,需要git stash储藏当前工作进度
- 储存的工作现场用 git stash list查看
- git stash pop :恢复工作现场的同时把stash内容也删了(
git stash apply
恢复,但是恢复后,stash内容并不删除,你需要用git stash drop
来删除) - 你可以多次stash,恢复的时候,先用
git stash list
查看,然后恢复指定的stash,用命令:git stash apply stash@{0} - 在master分支上修复了bug后,在dev分支上修复同样的bug,git cherry-pick+commit id
5、Feature 分支
软件开发中,总有无穷无尽的新的功能要不断添加进来。添加一个新功能时,不希望因为一些实验性质的代码,把主分支搞乱了,所以,每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后,删除该feature分支。
-
开发一个新feature,最好新建一个分支;
-
如果要丢弃一个没有被合并过的分支,可以通过
git branch -D <name>
强行删除。
6、多人协作
- 推送分支:该分支上的所有本地提交推送到远程库git push origin +分支名
- 抓取分支
- 从远程库clone时,默认情况下,只能看到本地的
master
分支 - 要在
dev
分支上开发,就必须创建远程origin
的dev
分支到本地:git checkout -b dev origin/dev - 当我想推送时,推送失败,因为别人的最新提交和我试图推送的提交有冲突
- 先用
git pull
把最新的提交从origin/dev
抓下来,然后,在本地合并,解决冲突 - git pull也失败了,原因是没有指定本地
dev
分支与远程origin/dev
分支的链接,根据提示,设置dev
和origin/dev
的链接:git branch --set-upstream branch-name origin/branch-name - 这回
git pull
成功,但是合并有冲突,需要手动解决,解决的方法和分支管理中的解决冲突完全一样。解决后,提交,再push
- 从远程库clone时,默认情况下,只能看到本地的
7、rebase
九、标签命令
tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起。
-
首先,切换到需要打标签的分支上,敲命令
git tag <name>
就可以打一个新标签(例如git tag v1.0),可以用命令git tag
查看所有标签,默认标签是打在最新提交的commit上的 -
有时候,如果忘了打标签,比如,现在已经是周五了,但应该在周一打的标签没有打,怎么办?
方法是找到历史提交的commit id,然后打上就可以了:先用git log,找到想打的,用git tag +标签名 +commit id
-
标签不是按时间顺序列出,而是按字母排序的
-
git show :查看单个标签的详细信息
-
git tag -a +标签名 + -m +“ 说明文字” +commit id:创建带有说明的标签,用命令
git show <tagname>
可以看到说明文字 -
命令
git push origin <tagname>
可以推送一个本地标签; -
命令
git push origin --tags
可以推送全部未推送过的本地标签; -
命令
git tag -d <tagname>
可以删除一个本地标签; -
命令
git push origin :refs/tags/<tagname>
可以删除一个远程标签。