一、配置用户信息
安装完git后首先要设置用户名和email地址,每次git提交都会使用到该信息(用户名和email与注册的gitlab、github、gitee等账户无关)
git config --global user.name = 'jaymou'
git config --global user.email = 'jaymou@qq.com'
查看配置信息
git config --list
====>结果
diff.astextplain.textconv=astextplain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
http.sslbackend=openssl
http.sslcainfo=D:/programs/devPrograms/Git/mingw64/ssl/certs/ca-bundle.crt
core.autocrlf=true
core.fscache=true
core.symlinks=false
credential.helper=manager
user.name=jaymou
user.email=jaymou@qq.com
credential.helper=manager
git config user.name
该配置信息会保存在用户目录下面的.gitconfig文件里面,如:C:\Users\jaymou\.gitconfig,内容如下
[user]
name = moujie
email = jaymou@qq.com
[credential]
helper = manager
二、获取git仓库
在本地初始化一个git仓库
git init
====>结果
Initialized empty Git repository in D:/workspace/GitRepos/MyGitRepo/.git/
执行命令完成后在目录下出现.git目录(隐藏文件夹)
克隆一个远程仓库
git clone https://gitee.com/jaymou/my-git-repo2.git
结果====>
Cloning into 'my-git-repo2'...
remote: Enumerating objects: 7, done.
remote: Counting objects: 100% (7/7), done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 7 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (7/7), done.
第一次操作需要输入git账户密码(如果是私有仓库,拉取就需要输入用户密码,共有仓库不需要;共有仓库在push时候需要账户密码)
工作目录、暂存区、版本库
版本库
.git文件夹(存放配置信息、日志信息、文件版本信息)
工作目录
包含.git文件夹的目录
暂存区
.git里面的index文件,也可以叫stage,暂存区是一个临时保存修改文件的地方(是一个二进制文件)
git工作目录下文件的状态
untracked 未跟踪(未被纳入版本控制)tracked 已跟踪(被纳入版本控制)
unmodified 未修改modified 已修改staged 已经暂存
三、本地仓库操作
查看文件状态
git status
git status -s
将文件纳入版本控制(加入暂存区)
git add HelloWorld.txt
取消暂存
git restore --staged HelloWorld.txt
将暂存区文件修改提交
git commit -m 'init HelloWord.txt'
-m是添加备注信息,如果没有添加-m ,则会进入类似vm的命令窗口进行编辑输入后commit
git rm 删除文件
执行完成默认进入暂存区
如果在目录手动删除文件,则没有提交到暂存区,需要执行git add添加到暂存区
git添加到忽略列表
在工作目录下创建.gitignore文件
查看git日志
git log
退出:q
四、git远程仓库操作
查看远程仓库
# 默认是origin
git remote
====>
origin
# 列出详细信息
git remote -v
====>
origin https://gitee.com/jaymou/my-git-repo2.git (fetch)
origin https://gitee.com/jaymou/my-git-repo2.git (push)
# 更加详细信息
git remote show origin
====>
* remote origin
Fetch URL: https://gitee.com/jaymou/my-git-repo2.git
Push URL: https://gitee.com/jaymou/my-git-repo2.git
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (fast-forwardable)
添加远程仓库
git remote add <shortname> <url>
eg.
git remote add origin https://gitee.com/jaymou/my-git-repo2.git
从远程仓库克隆
git clone 克隆的是该git服务器下的所有数据(包括日志信息、历史记录,每一个文件的每一个版本都被拉去下来)
git clone [url]
移除无效的远程仓库
git remote rm [shortname]
从远程仓库抓取与拉取
# 抓取(抓取到本地,但是没有合并)
git fetch
git fetch origin master
# 合并
git merge origin/master
# 拉取并合并
git pull origin master
# 强行拉取
git pull origin master --allow-related-histories
推送到远程仓库
git push origin master
# 直接commit不需要add
git commit -a -m 'update xxx'
五、git分支管理
查看分支
# 列出所有本地分支
git branch
# 列出所有远程分支
git branch -r
# 列出所有本地分支和远程分支
git branch -a
创建分支
# 创建分支
git branch 分支名称
切换分支
git check 分支名称
推送分支
git push origin 分支名称
合并分支
在需要拉取其他分支代码的分支(通常是master或者总的分支)上,通过使用
git merge 其他分支名称
合并冲突:
手动解决冲突,然后add让git知道冲突解决,然后commit
删除分支
# 删除本地分支
git branch -d 分支名称
# 删除远程分支
git push origin -d 分支名称
如果有没有提交的分支代码,-d不能直接删除分支,改为-D才可以强制删除
六、git标签
创建标签
git tag 标签名称
查看标签
# 列出所有tag
git tag
# 查看tag
git show [tag]
检出标签
# 新建一个分支指向一个tag
git checkout -b [branch] [tag]
删除标签
# 删除本地标签
git tag -d [tag]
# 删除远程标签
git push origin :refs/tags/[tag]