Git使用手册
文章目录
前言
记录Git的使用,以便下次查询。
一、Git与云仓库账号绑定
设置全局用户名与用户邮箱:
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
对单独的项目设置用户名和用户邮箱:
git config user.name "Your Name"
git config user.email "email@example.com"
查看当前设置:
git config --list
修改过密码后清除本地账户信息:
git config –system –unset credential.helper
//上一条无效,加了一个dash才得以清除
git config --system --unset credential.helper
后面再提交时git会提示重新输入账号信息。
也可以一劳永逸地储存登陆信息到本地,上边记录了你的账号和密码:
git config --global credential.helper store
克隆指定的分支:
git clone -b <a branch name> https://gitee.com/*****.git
二、初步使用
1.创建本地仓库并添加文件
git add file1
git add file2 file3
git commit -m "test add and commit"
如果在commit
时未输入-m "something tell what had done"
,则git会进入vim模式,此时添加本该加上的说明即可:
//按insert进入编辑模式,输入说明:
Just test commit without -m
//按ESC后输入冒号":",可开始输入保存命令:
wq
//回车后回到正常界面
2.远程仓库
关联并上传本地仓库
在本地仓库存在的情况下,还需在云端建立一个空仓库,建成之后,通过如下命令与本地仓库进行关联(以Gitee仓库为例):
git remote add origin git@gitee.com:username/repositoryname.git
git push -u origin "master"
//加了参数-u后,以后即可直接用git push代替git push origin master
第一句关联远程仓库,其中"origin"为远程仓库的代号,可任意自定义。
第二句推送本地提交至远程仓库的"master"分支(双引号无所谓)。
删除关联
当想要删除与远程仓库的关联,进行如下操作,先查看远程仓库信息:
git remote -v
再使用git remote rm <name>
根据名字删除,如要删除"origin":
git remote rm origin
三、设置.gitignore文件忽略特殊文件
在仓库根目录下新建名为".gitignore"的文件,并在其中编辑规则即可:
//.gitignore
//排除windows下的缩略图、自定义目录等
# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini
# 忽略文件夹
.vscode/
//自定义忽略项
# My configurations:
db.ini
deploy_key_rsa
*.class //忽略所有.class结尾的文件
如上,当想要添加某个已被".gitignore"文件设置忽略的类型文件时,可选择:
使用git add -f filename
强制添加:
git add -f App.class
也可在".gitignore"文件内设置特殊照顾:
//.gitignore
# 不排除.gitignore和App.class:
!.gitignore
!App.class
四、仓库修改、提交流程
- 修改代码文件、添加新文件
- 将修改过的文件及新添加的文件加入暂存:
git add .
//把本地所有untrack的文件都加入暂存区,并且会根据.gitignore做过滤
git add *
//或者使用*,但会忽略.gitignore把任何文件都加入,一般不使用
- 将之前的暂存保存为一次版本待提交:
git commit -m "something about this commit"
//如果所做的修改的文件都已被跟踪(add过了),则可以省略2直接使用合并命令:
git commit -am "something about this commit"
- 推送提交至远程仓库:
git push -u origin "master"
//好像 -u 不要也罢,没影响
五、版本回退
在进行git commit
操作时,git会自动生成一串git id
如:
commit fd284442b0813fe5c8443c69b35a52c67ea27de7
git用HEAD
标记当前版本,当需要指向需要的某一历史版本时,使用HEAD^
表示回退至上一版本,以此类推,较为久远的版本可以使用HEAD~n
(第前n个版本),命令关键字为git reset
:
git reset --hard HEAD^
而根据git id
恢复当前版本的未来版本时使用如下,其中版本的id字符串不必写全,足够识别出该版本即可:
git reset --hard fd284
当无法通过git log
找到未来版本的id时,可使用git reflog
查看历史命令同样得到可确定的git id
前几位:
git reflog
撤销工作区的修改:
git checkout -- filename
撤销暂存区的内容:
git reset HEAD <file>
删除某文件:
git rm filename
先手动删除文件,然后使用
git rm <file>
和git add<file>
效果是一样的。
如果误删了,手动的或者命令行的,都可以利用git checkout -- filename
恢复出来:
git checkout -- filename
六、分支管理
创建分支dev
并切换过去:
git branch dev
git checkout dev
一步完成法:
git checkout -b dev
在新版本的git中,为了和撤销修改的git checkout -- filename
作区别,也可使用git switch
进行分支操作:
git switch -c dev //创建并切换至dev分支
git switch master //切换至已有的master分支
查看当前分支状态:
git branch
将当前开发分支推送至远程仓库:
git push origin dev
一般master分支稳定的情况下,在开发分支dev上进行实验性改进,完成后将master与dev合并即可完成功能的更新
一帆风顺地合并了
合并操作如下:
git checkout master
git merge dev
git merge dev
意为合并指定分支到当前分支,故在这之前需要注意将当前工作对象改为要合并的分支。
完成后,删除dev分支:
git branch -d dev
合并有冲突
合并的时候发生了点意外:
打开冲突的文件——AllOne.cpp:
git用<<<<<<<
、=======
、>>>>>>>
标识出不同的分支内容,按需要进行取舍。
解决冲突的部分后重新提交,再进行合并就没有问题了,大概。
删除dev分支同上。
普通合并
Git默认会使用"Fast Forward"模式合并分支,合并后分支删除了不会留下任何痕迹
合并时使用--no-ff
参数可以禁用"Fast Forward"模式,从而生成一个commit
留下分支痕迹
git merge --no-ff -m "merge with no-ff" dev
//同commit需要添加描述信息:-m "merge with no-ff"
推送至远程仓库时冲突
先尝试从远程仓库拉取内容:
发现远程与本地文件自动合并也失败了,同分支冲突,手动解决冲突内容先:
然后暂存——提交一条龙,完成后再重新push就成功了。
顺便一提,拉取远端仓库的dev分支添加参数即可:git pull <remote> <branch>
,如下:
git pull origin dev
而指定本地dev分支与远程origin/dev分支的链接则如下:
git branch --set-upstream-to=origin/dev dev
//当前是dev分支的前提下。。。?
拉取发生冲突(git pull)
git stash //将改动藏起来
git pull
git stash pop //将刚藏起来的改动恢复
不保留当前未提交的修改:
git reset --hard //撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本
git pull
七、标签与版本
本地部分操作:
在需要打标签的分支上,使用git tag <version>
即可,如:
git tag v1.0
不带参数的命令即为查看当前存在的标签:
git tag
标签默认是打在最新提交的commit上的,若要对历史的commit打标签,需要使用历史提交的commit id
,假设需要打标签的 id 是"f52c633",则操作为:
git tag v0.9 f52c633
使用
git log --pretty=oneline --abbrev-commit
查询历史commit id
创建带有说明的标签,可使用参数-a
指定标签名,参数-m
指定说明内容,commit id 则在命令的最后,如下:
git tag -a v0.1 -m "version 0.1 released" 1094adb
打错了标签,需要删除,使用-d
参数即可:
git tag -d v0.1
云端部分操作:
上述情况都仅限于标签存储在本地,推送指定标签至远端可操作如下:
git push origin v1.0
或者一次性推送所有本地标签至远端有:
git push origin --tags
此时若需要删除标签,应先删除本地标签,再删除远端仓库部分:
git tag -d v0.9
git push origin :refs/tags/v0.9
此处删除远端仓库标签的命令格式为:git push origin :refs/tags/<tagname>
最后、其他常用指令及说明
1、查看当前仓库状态:
git status
其中红色提示代表已跟踪文件做出了修改但并未暂存;
而进行git add .
操作后绿色提示代表修改已添加进暂存。
2、清屏:
直接Ctrl+L
3、查看git历史记录:
git log
只看简要信息可加上参数--pretty=oneline
:
git log --pretty=oneline
4、查看分支合并图:
git log --graph
5、查看已有标签:
git show <tagname>
总结
没有总结,学无止境,要用其它了再继续。
诸多参考:廖雪峰的git教程。