使用场景
本地更改文件后推送到远程仓库
#现有在本地仓库里有一个刚新建的文件 newfile.txtgit add newfile.txt #将其加入到本地仓库的暂存区git commit -m 'I create a new file' #保存本次更改的版本记录(历史消息记录)git push -u origin master #把本次提交推送到远程仓库origin的master分支
git push 命令提示要先 git pull
则输入命令: git pull origin master
如果 git pull 报错 : git fatal: 拒绝合并无关的历史的错误解决
则执行命令: git pull —allow-unrelated-histories
然后再次 git pull 和 git push
命令分类
从远程仓库获取代码
git clone 克隆
完全拷贝远程的整个仓库
在某个空的目录下,将Github 上的仓库 clone到本地。
git clone https://github.com/MeetXinZhang/BioUtil.git
执行 git clone 命令后本地仓库会默认处于 master 分支下,同时系统会自动将 origin 设置成该远程仓库的标识符。
所以,此时,本地仓库的 master 分支与 Github 端远程仓库(origin)的 master分支在内容上完全相同。
git fetch 拉取
拉取远程仓库变更到本地仓库
git fetch origin #拉取远程仓库(origin)git fetch origin master #拉取远程仓库(origin)的 master 分支# git fetch 命令执行完毕之后,还不会立即将下载的文件合并到你当前工作目录里,这就给你了一个选择下一步操作的机会# 要是想将从远程分支下载的文件更新到你的工作目录里,你需要执行一个“合并(merge)”操作git merge origin/master # 合并下载好的远程仓库(origin)的 master 分支到本地仓库的当前分支
git pull 拉取并合并
拉取远程仓库变更并合并到本地分支,相当于fetch+merge
git pull # 拉取远程仓库变更并合并到本地分支,这个远程仓库是本地端已经设置好的默认的远程仓库git pull origin # 拉取远程仓库(origin)变更并合并到本地分支git pull origin master # 拉取远程仓库(origin)的 master 分支的变更并合并到本地分支git pull origin master:brantest # 拉取远程仓库(origin)的 master 分支的变更,,与本地的 brantest 分支合并
配置本地用户名密码
git config --global credential.helper store # store选项会把凭证用明文存储在$HOME目录下#我目前(20220513)的token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#只有在修改远程仓库的时候才会进行凭证验证,比如pushgit push # 虽然提示的文字仍然使用的密码,但输入的应该是我们之前创建的access token# 配置用户名git config --global user.name "dekeshile"#配置邮箱git config --global user.email "171129472@qq.com"#查看配置git config --global -l
命令速查
git checkout
- 放弃本地仓库更改
如果我们在本地 git 暂存区(即已经git add,但是还没有push到远程仓库)对某个文件做了修改,现在,我们想放弃本地仓库的修改,我们可以使用 git checkout 命令。
git checkout -- haicoder.txt # 放弃本地暂存区 haicoder.txt文件的修改git checkout . # 放弃本地暂存区所有文件的修改
git config
# 配置用户名git config --global user.name "dekeshile"#配置邮箱git config --global user.email "171129472@qq.com"#配置凭证(相当于密码)git config --global credential.helper store # store选项会把凭证用明文存储在$HOME目录下#查看配置git config --global -l
概念
Git 工作区、暂存区和版本库
https://www.runoob.com/git/git-workspace-index-repo.html
- 工作区:就是你在电脑里能看到的目录。
- 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
- 版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

- 图中左侧为工作区,右侧为版本库。在版本库中标记为 “index” 的区域是暂存区(stage/index),标记为 “master” 的是 master 分支所代表的目录树。
- 图中我们可以看出此时 “HEAD“ 实际是指向 master 分支的一个”指针”。所以图示的命令中出现 HEAD 的地方可以用 master 来替换。
- 当执行 git checkout . 或者 git checkout —
命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区中的改动。

