Title: Git入门
Author:Xueyong Lu
First Edition: April- 2023
-
进入要push的文件夹根目录下:
cd "myfolder"
-
初始化一个新的Repository
git init
-
将所有文件添加到Github的Repository中,并提交更改
git add . git commit -m "Initial commit"
-
如果是将某个特定的文件添加到暂存区
git add <file>
-
如果是直接用
git commit
命令,之后会打开一个编辑框,以输入详细的commit信息
-
-
在Github上新建一个仓库,并克隆到本地
git clone https://github.com/your-username/myfolder.git
-
将本地目录与远程仓库进行关联,并将代码推送到远程仓库
git remote add origin https://github.com/your-username/myfolder.git git push -u origin master
-
为要发布的当前分支的最新提交添加一个标签
tag
git tag <...>
-
将标签推送到远程仓库
git push origin <...>
-
一次性推送所有标签
git push --tags
-
为标签添加注释
git tag -a <...> -m "Release version 1.0.00"
-
在版本控制系统(VCS)中,仓库(repository)是存储代码和项目文件的地方,而分支(branch)是指在仓库中创建的一个独立的、与主线(master branch)相互独立的开发分支。
在一个仓库中可以创建多个分支,每个分支都有自己的代码提交历史和版本记录,可以在不影响主线的情况下进行独立的开发和修改。这使得团队成员可以同时处理多个任务,同时协作开发多个功能,而不会相互干扰。
分支和仓库的关系是,一个仓库中可以包含多个分支,而每个分支都可以看作是仓库的一个子集。因此,一个分支中的代码修改和提交只影响该分支的代码库,而不影响主线或其他分支的代码库。同时,分支之间可以合并,将不同分支的代码合并到一起,实现代码的统一管理和发布。
-
为一个仓库Respository创建一个新的Branch
git branch [branch-name]
-
如:
git branch feature # 创建一个名为feature的分支
-
-
切换分支
git checkout [branch-name]
-
合并分支:将指定分支的修改合并到当前分支中
git merge [branch]
-
查看分支:列出当前仓库中的所有分支
git branch
-
删除分支
git branch -d [branch-name]
-
如:
git branch -d feature
-
-
查看分支合并图
git log --oneline --graph --decorate --all
git init |
在当前目录中初始化一个新的Git仓库 |
---|---|
git clone |
从远程Git仓库中克隆一个仓库到本地 |
git status |
显示当前仓库的状态,即哪些文件被修改、哪些文件被暂存等等 |
git add |
将更改添加到Git仓库的缓存区中,表示这些文件纳入版本控制 |
git commit |
将暂存区中的更改提交到Git仓库中,即表示将这些文件保存为一个新的版本 |
git push |
将本地仓库中的更改推送到远程Git仓库中 |
git pull |
将远程Git仓库中的更改拉取到本地仓库中 |
git branch |
显示当前仓库中的分支 |
git checkout |
切换到另一个分支或恢复文件到先前版本 |
git merge |
合并两个分支中的更改 |
git log |
显示Git仓库中提交的日志 |
git diff |
用于比较不同版本之间的差异 |
git stash |
用于将当前修改暂存起来,便于之后恢复或者应用 |
-
Updating the Git index failed. A rescan will be automatically started to resynchronize git-gui.
-
这种情况通常发生在使用 Git GUI 进行操作时,由于 Git index 状态与 Git 仓库的状态不一致导致的
-
解决办法:
-
关闭 Git GUI,确保没有其他程序正在访问 Git 仓库
-
打开终端或命令提示符,进入 Git 仓库所在的目录
-
运行以下命令以清除 Git index:
git rm --cached -r .
- 清除文件索引,而不会清除文件本身
-
运行以下命令以重新添加所有文件和子目录:
git add .
-
运行以下命令以提交更改:
git commit -m "Resynchronize Git index"
-
重新启动 Git GUI,并尝试再次进行操作
-
-
remote origin already exists
-
确认已经删除了原来的仓库,并且在本地新建了一个空的仓库,或者重新Clone了一个新的远程仓库到本地
-
在本地仓库所在目录下执行下面命令,删除本地仓库与原来远程仓库的连接
git remote remove origin
-
确认当前本地仓库的远程配置信息:
git remote -v
-
将本地的仓库链接到新的远程仓库
git remote add origin <新的远程仓库的URL>
-
将本地代码推送到新的远程仓库中:
git push -u origin master
-
Repository → Settings → Options → Default branch → Change → Update (
main) -
回到本地仓库,将本地仓库与更新后的默认分支(master)链接:
git remote set-head origin master
-
推送本地仓库的变更到远程仓库中:
git push grigin master
-
在空文件夹下创建一个空文件,运行bash:
touch image/.gitkeep
-
将空文件夹添加到Git Repository中:
git add image/.gitkeep
-
提交更改并推送到远程Repository中:
git commit -m "Least change" git push origin <branch-name>
-
基本逻辑:
Github
在提交时,先会生成一系列文件的哈希值作为提交记录,然后会在git add .
将所有更改提交到暂存区 -
在本地删除这个错误的文件、并且通过以下命令删除在暂存区的此文件
git rm --cached <Path/ File name>
-
最重要的一步:清除掉此文件在提交记录中的哈希索引
-
列出当前文件提交记录的哈希值
git rev-list --objects --all | grep <Path/ File name>
-
删除当前错误文件的哈希值
git filter-branch --tree-filter 'rm -f <Path/ File name>' HEAD
-
-
尝试再次提交
-
删除命令
git rm --cached <file.format>
-
添加注释
git commit -m"Remove xxx"
-
提交更改
git push origin <Branch>
-
在本地仓库根目录下添加以下文件:
.gitignore
-
添加要指定忽略的目录或者文件
venvPyQt6/ __pycache__/ font/ image/
-
添加相对路径
/image/assets/
-
在本地仓库的根目录下创建
.gitignore
文件,词条命令是忽略./image/assets/
目录以及其所有的子目录/文件 -
或者在
./image
文件夹下添加一个.gitignore
文件,添加/assets/
以实现与上面相同的效果
-
-
在添加了
.gitignore
文件之后,确保执行适当的命令,以使指定要忽略更新的目录生效git add .gitignore
和
git commit -m "Update .gitignore