git使用和常见命令
1、刚下载安装完git后,初次配置:
// 先设置邮箱和用户名,用于提交的时候验证的
git config --global user.name "xxx"
git config --global user.email "xxx"
2、准备一个要clone的项目(码云、github、gitlab都可以),比如链接地址为: https://gitee.com/ xxxxxx.git (这个只是示范,不是真实有效的地址)
3、找一个空目录,用于存放代码文件的,在目录中右键,选择git bash
。调出命令面板。执行以下语句:
git init // 初始化一个空仓库
git remote add origin https://gitee.com/ xxxxxx.git // 关联到远程仓库(这里需要换成自己的项目地址)
git pull origin master // 获取远程仓库内容 pull就是获取的命令
或 ---------------------------------------------------------------------
git clone https://gitee.com/ xxxxxx.git // 如果不用上面的语句,也可以直接执行clone命令。效果和上面的命令一样。
如果是clone私有的项目,可能需要你输入帐号密码,输入后会自动把项目下载下来。
4、通常养成一个好的习惯,在下载代码后,新建一个自己的分支,再去修改文件的内容,通常不要直接在master(默认分支)
上直接开发。(至于为什么要创建那么多分支进行开发,也不是一两句说的清楚的)
执行以下语句,创建并切换到dev_test分支(注意图中红色圈住的区别,意思就是你当前在哪个分支下)
git checkout -b dev_test
我们也可以试下,创建一个已存在的分支
// 分支相关命令:
git branch // 查看分支
git branch dev_test // 创建一个名为dev_test的分支
git checkout dev_test // 切换到名为dev_test的分支
git checkout -b dev_test // 创建并切换到dev_test的分支(常用)
git merge dev_test
// 把dev_test的分支合并到当前分支
// (注意:通常是切换到master分支,在执行合并操作,千万不要把master分支合并到自己的分支中)
git branch -d dev_test 删除名为dev_test的分支
git branch -D dev_test //强行删除一个名为dev_test的分支
5、在分支上(或者在master上)修改好了文件的内容,准备提交到远程仓库。可以通过命令查看修改的内容和状态
git status // 查看文件状态
//(看到红色的就是已经修改过的文件,而且没添加到仓库中)
// (绿色的代表修改过的文件,已经添加到本地仓库,还没提交到远程仓库)
git add . // 把所有修改过的文件,把需要提交的文件打包起来
或者执行
git add -A // 和git add .效果一样
// 这时候在执行git status就会看到文件都变绿色了
git commit -m '本次提交的备注'
// 刚才的add .只是把所有文件打包起来,git commit 才是提交到本地仓库,-m 后面是本次提交文件的备注
git push origin dev_test
// push 把本地仓库的内容推送到远程仓库
// origin 这个是默认的
// dev_test 代表dev_test分支,刚才我们是创建了dev_test分支,如果想推送到其他分支,就改成其他分支名称即可
如果不出意外,会成功提交,可以到自己项目那里,找到对应的分支查看是否已经推送上去。
当然意外还是会有的,比如和你一起开发的人,比你早推送了一个版本到远程仓库中,那么你在推送的时候,会报一个错误,提示需要先合并代码(注意只是合并代码,不是合并分支)如:
如果线上的代码,没有冲突,那么pull下来后,你就可以重新执行git push origin master
命令,把代码提交上去了(通常git会帮我们合并一些代码,并不会造成冲突)。当然还会有冲突的情况(比如2个人同时修改了同一个文件的同一个地方),那么使用pull命令就会变成这样:
这时候就可以全局搜索一下>>>>>
这个代表冲突开始的地方
解决冲突也很简单,只要保留其中一个地方就可以了。把<<<<开头到 >>>>结尾的地方,改成正确的代码,然后重新执行 git add .
, git commit -m '备注'
, git push roigin master
。 重新推送上去就可以了
6、假设我们开发的dev_test分支测试通过了,需要合并到master分支
那么就执行切换分支的命令,
1)切换到master分支
2)在master分支下 使用 git pull
确保master分支的代码是最新的
3)使用合并分支的命令 git merge dev_test
4)然后在使用git push origin master
推送到远程仓库的master分支上
7、关于git的一些拓展
1)假设修改的文件修改错了。这次并不想提交这个文件
- 解决方法1:删除该文件,在使用
git add .
- 解决方法2:先使用
git add .
然后执行 git resert head 需要撤回的文件名git reset head 需要撤回的文件名
2)关于一些一直都不想提交的文件(比如使用vscode的时候,会有一个
.vscode的文件夹,和代码无关,不想提交到远程仓库,可是又不希望每次都剔除)
- 可以使用默认的一个文件,添加要排除的东西
.gitignore
文件。可能在window下不能直接创建,那就在git bash 中,使用touch .gitignore
。就会发现多了这么一个类似txt文件。然后在里面添加需要剔除的内容,一行一个 - 比如:这样就可以一劳永逸,不用每次都担心把额外的文件提交上去了(码云或者其他平台已经有很多gitignore文件模版,在创建项目的时候可以留意下)
3)关于git的其他一些命令
- 查看文件修改的内容:
.git diff 文件名
- 有时候自己改了很多地方,可是并不像保存,想重新下载一份线上的代码:
git fetch --all
git reset --hard origin/master
git pull
- 临时保存工作区(用的相对较少)
git stash //把当前的工作临时存储起来,然后自己切换分支做其他的事情
git stash list //查看存储的工作区列表
git stash pop //恢复最近的一次工作,并且删除记录(常用)
git stash apply aaa@qq.com{id} //恢复指定id的工作,不过不会删除记录
git stash drop //删除
- 标签
git tag <name> 为当前分支打一个 name 的标签
git tag <name> 1586156 为历史提交打标签 1586156为历史提交的一个id号
git tag 查看标签
git push origin <tagname>可以推送一个本地标签;
git push origin --tags可以推送全部未推送过的本地标签;
git tag -d <tagname>可以删除一个本地标签;
git push origin :refs/tags/<tagname>可以删除一个远程标签。
git show <name> 查看这个tag对应的id的信息
- 版本控制(重点)
git log // 查看最近提交的版本号
git reset --hard HEAD^ (回退上一个版本,^^回退2个版本)
git reset --hard 315615 // 315615是在git log 中可以看到的
// 回退指定的版本号id(这里的id在git log中可以看到,版本id只需要取前几位数git就能识别出来了)
git reflog // 记录每一次的命令
- 记住密码(如果你用的不是ssh的话,每次提交 / clone 代码都要输入帐号密码)
在C盘中的用户对应用户的文件夹下找到
.gitconfig
追加:
[credential]
helper=store
或者终端执行
git config --global credential.helper store
这样就会使用记住密码
推荐阅读