2020.12.28 补充:
因2020年美国种族主义事件的影响,自2020年10月1日起,GitHub将默认分支名由
master改为main,详见https://github.com/github/renaming。因此,使用Git命令进行fetch、pull和push等操作时需要注意,使用origin main,而不是origin master。
目录
二、删除本地仓库/远程仓库下受.gitignore规则制约的文件
1. 方法一:git pull = git fetch + git merge
2. 方法二:git pull --rebase = git fetch + git rebase
记录并分享笔者学习Git命令的路程。
一、关联并上传新的本地项目
当本地已经创建了一个项目,想将这个项目公开在GitHub上,则需要在GitHub上为这个项目开辟一个属于它的“个人主页”。
1. 在GitHub创建新的空项目
创建的过程不涉及Git命令,故不详细说明。
2. 在项目文件夹下初始化本地Git仓库
git init
3. 关联远程仓库
此处将git地址替换为自己的远程仓库地址
git remote add origin git@github.com:***/***
4. 合并远程仓库的内容
git pull --rebase origin master
5. 提交项目文件至文件暂存区
git add *
6. 提交项目文件至本地仓库
在引号添加提交信息说明
git commit -m "xxxxxxxx"
7. 提交本地仓库的内容
git push origin master
PS:
创建并关联的过程中,先pull再add的原因是为了能够获得GitHub自动创建的.gitignore文件。
.gitignore文件的作用是帮助git分辨哪些文件是没有必要提交至仓库的,git以此文件为依据来过滤项目文件夹下的所有文件,被过滤的文件不会纳入git管理。在必要时,可以再pull之后,先修改.gitignore文件,自行控制需要纳入git管理的文件。
但是当文件已经被纳入git的管理(被add/commit)之后,则不会受到.gitignore的规则影响。
二、删除本地仓库/远程仓库下受.gitignore规则制约的文件
当不想被纳入git管理的文件已经上传至本地仓库,或者同步至远程仓库,则需要对项目来一次清理。
1. 删除git本地缓存,使文件变成untrack状态
git rm -r --cached *
2. 将项目重新添加至暂存区
git add *
3. 查看git的文件状态
git status
这条命令非常常用,对了解本地项目有很大帮助。与这条命令类似的还有git diff。status和diff命令的具体语法学习参照官方说明:
git status --help
git diff --help
4. 提交更新至本地仓库
git commit -m "xxxxxxxx"
5. 将本地仓库更新推送至远程仓库
git push origin master
三、Git的代码更新以及冲突解决
1. 方法一:git pull = git fetch + git merge
一般情况下,推荐使用方法一对本地代码进行更新。
(1) 把远程仓库master分支下载到本地并存为temp分支(分支名可自取)
git fetch origin master:temp
(2) 查看temp和本地master分支的不同
git diff temp
(3) 合并temp分支和master分支
git merge temp
(4) 手动处理conflict
(5) 添加冲突文件
git add *
(6) 提交文件并上传
git commit -m "xxxxxxxx"
git push origin master
(7) 删除temp分支
git branch -d temp
2. 方法二:git pull --rebase = git fetch + git rebase
merge和rebase最大的差别在于分支合并之后,分支树的显示情况。
(1) 把远程仓库master分支合并至本地
git pull --rebase origin master
(2) 手动解决冲突文件
(3) 重新添加冲突文件至暂存区
git add [<filepath>...]
(4) 继续rebase,重复(2)、(3)、(4)步骤
git rebase --continue
(5) 提交并上传至远程仓库
git commit -m "xxxxxxxx"
git push origin master
3. 方法三:git stash
该方法适用于改动未提交到本地仓库的情况
(1) 把工作区和暂存区的改动全部保存到stash
git stash
(2) 更新本地仓库
git pull origin master
(3) 取出保存的改动
git stash pop
(4) 手动解决冲突
(5) 提交改动并上传
git commit -m "xxxxxxxx"
git push origin master