概要
Git学习记录。
整体架构流程
1.初始化:
(1)先克隆一个远程仓库,以下是我在GitHub新创建的一个仓库(GitTest).
git clone https://github.com/Mineminen/GitTest.git
克隆后的文件夹,其中.git文件是隐藏文件,记得勾选打开隐藏的项目。
(2)不想克隆就初始化一个文件夹(我接下来的操作都是在克隆的文件夹GitTest进行的,但是二者就是一些名称不一致,如远程仓库的别名;后续的操作都是一样的)
#先创建一个文件夹
mkdir GitTest2
cd GitTest2
#初始化
git init
#添加远程仓库(gittest2是仓库别名)
git remote add gittest2 https://github.com/Mineminen/GitTest.git
#查看仓库是否添加成功
git remote -v
#拉取远程仓库,必须要先拉去远程仓库的文件,不然后面push会出错
git pull --rebase gittest2 master
2.上传本地文件到远程仓库
cd GitTest
#1.上传本地文件到本地仓库
#创建文件
touch a.txt
#查看状态
git status
#添加文件到暂存区
git add a.txt
#提交文件到本地仓库
git commit -m "创建文件"
#再次查看状态
git status
#常看远程仓库别名,克隆的都是origin
git remote -v
#上传文件到远程仓库(maste是当前分支)
git push origin master
3.从远程仓库拉取文件
开始a.txt是空的,我在GitHub编辑添加了“拉取操作”四个字。
#拉取代码
git pull origin master
4.合并分支
(1)本地仓库分支合并
#创建分支main
git branch main
#切换到main分支
git checkout main
#直接一步操作也行,git checkout -b main
#创建文件并添加到本地仓库
touch b.txt
git status
git add b.txt
git commit -m "创建文件"
git status
#切换到master分支
git checkout master
#合并分支
git merge main
(2)远程仓库合并
按理说,本地分支合并后直接上传到远程仓库就行了。但是GitHub远程仓库的合并也很重要。
我为了演示就没把合并后的本地分支master上传到远程仓库。所以现在远程仓库只有master分支,master分支没有b.txt文件。我接下来就是把本地main分支上传到远程仓库,然后合并远程仓库的main分支到master分支。
#切换到main分支
git checkout main
#上传到远程仓库
git push origin main
直接点击右上角那个(Compare&pull request),然后一直点绿色按钮就行。注意方向:是main==>master.
合并完成
远程仓库合并会造成一个问题,本地的master分支不能push到远程仓库。
如何让本地仓库和远程仓库一致呢?当然直接pull就行了,但是如果本地仓库的master分支如果又创建了c.txt文件,直接pull会直接造成c.txt文件消失。你可以使用 git pull --rebase
来避免创建额外的合并提交,这样可以使你的提交历史更加清晰。
#创建文件之前记得切换回master分支
touch c.txt
git add c.txt
git commit -m "创建文件"
git status
#从远程仓库拉取文件
git pull --rebase origin master
pull之后的本地仓库
#上传本地仓库到远程仓库
git push origin master
5.基础命令
(1)修改用户名和邮箱
#查看Git所有配置
git config --list
#修改全局用户名和邮箱:
git config --global user.name "你的新用户名"
git config --global user.email "你的新邮箱"
#修改单个仓库的用户名和邮箱:
git config user.name "你的新用户名"
git config user.email "你的新邮箱"