高亮颜色说明:突出重点
个人觉得,:待核准个人观点是否有误
高亮颜色超链接
*** Git - Reference
Git - 分支与合并
Git - Branching and Merging
GitHub Git 备忘单 - GitHub Cheatsheets
GitHub Git Cheat Sheet - GitHub Cheatsheets
对所有本地仓库的用户信息进行配置
$ git config --global user.name "[name]"
: 对你的commit操作设置关联的用户名;
$ git config --global user.email "[email address]"
: 对你的commit操作设置关联的邮箱地址;
$ git config --global color.ui auto
: 启用有帮助的彩色命令行输出;
当着手于一个新的仓库时,你只需创建一次。要么在本地创建,然后推送到 GitHub;要么 clone 一个现有仓库。
$ git init
: 将现有目录转换为一个 Git 仓库;
$ git remote add origin [url]
: 在使用过 git init
命令后,使用此命令将本地仓库与一个 GitHub 上的空仓库连接起来;
$ git clone [url]
: Clone(下载)一个已存在于 GitHub 上的仓库,包括所有的文件、分支和提交(commits);
有时一些文件最好不要用 Git 跟踪。这通常在名为 .gitignore
的特殊文件中完成。你可以在 github.com/github/gitignore 找到有用的 .gitignore
文件模板。
分支是使用 Git 工作的一个重要部分。你做的任何提交都会发生在当前“checked out”到的分支上。使用 git status
查看那是哪个分支。
$ git branch [branch-name]
: 创建一个新分支;
$ git switch -c [branch-name]
: 切换到指定分支并更新工作目录(working directory);
$ git merge [branch]
: 将指定分支的历史合并到当前分支。这通常在拉取请求(PR)中完成,但也是一个重要的 Git 操作。
$ git branch -d [branch-name]
: 删除指定分支;
浏览并检查项目文件的发展
$ git log
: 列出当前分支的版本历史;
$ git log --follow [file]
: 列出文件的版本历史,包括重命名;
$ git diff [first-branch]...[second-branch]
: 展示两个分支之间的内容差异;
$ git show [commit]
: 输出指定commit的元数据和内容变化;
$ git add [file]
: 将文件进行快照处理用于版本控制;
$ git commit -m "[descriptive message]"
: 将文件快照永久地记录在版本历史中;
$ git checkout
: 切换分支,或者检出内容到工作目录;
将你本地仓库与 GitHub.com 上的远端仓库同步
$ git fetch
: 下载远端跟踪分支的所有历史;
$ git merge
: 将远端跟踪分支合并到当前本地分支;
$ git pull
: 使用来自 GitHub 的对应远端分支的所有新提交更新你当前的本地工作分支。git pull
是 git fetch
和 git merge
的结合;
$ git push
: 将所有本地分支提交上传到 GitHub;
清除错误和构建用于替换的历史
$ git reset [commit]
: 撤销所有 [commit]
后的的提交,在本地保存更改;
$ git reset --hard [commit]
: 放弃所有历史,改回指定提交;
小心!更改历史可能带来不良后果。如果你需要更改 GitHub(远端)已有的提交,请谨慎操作。如果你需要帮助,可访问 github.community 或联系支持(support)。
git checkout
可移动 HEAD 指针到不同的分支、标记(tags)或提交Git 是一个分布式版本控制系统, 可以用于记录文档内容在每次修改时的版本变化信息;
GitHub 是一个面向开源及私有软件项目的托管平台, 简单来说就是一个可以存放代码的地方;
Your Daily Tasks:
version control provides you clarity as to when you did it, why you did it, and what the contents of the change were, open for review at any time in the future.
$ git log --graph --decorate --abbrev-commit --all --pretty=oneline
: a historical graphical representation that can be done even from the command line, showing when people branched files, when they merged them back together, who did what, when, on which date: all of these option switches, which at the moment,
Q: "a set of option switches"什么意思?
git branch
和 git checkout
命令git rebase
命令$ git remote show origin
$ git remote rm origin
$ git remote add origin git@github.com:usrname/xxx.git
注: 如果此前安装 Git 时, 在"Adjusting your PATH environment"这一步勾选的是"Use Git from Git Bash only"而没有将其添加至系统环境变量PATH中; 那么, 就需要在 VS Code 中设置 git.exe 路径, 即: “文件 | 首选项 | 设置"搜索"git path”, 设置git.path
字段 - Visual Studio Code User and Workspace Settings;
Git: Path
Git 可执行文件的路径和文件名。例如: C:\Program Files\Git\bin\git.exe (Windows)。
在 settings.json 中编辑
C:\Users\username\AppData\Roaming\Code\User\settings.json
{
"files.autoSave": "afterDelay",
"update.enableWindowsBackgroundUpdates": false,
"update.mode": "none",
"telemetry.enableTelemetry": false,
"update.showReleaseNotes": false,
"telemetry.enableCrashReporter": false,
"terminal.integrated.shell.windows": "C:\\windows\\System32\\cmd.exe",
"git.path":"D:\\Program Files\\Git\\bin\\git.exe", # 新增的一行
"window.menuBarVisibility": "default",
"python.pythonPath": "D:\\OtherProgramFiles\\Anaconda3\\envs\\my_cpu_py3\\python.exe"
}
$ git init
$ git commit -m "first commit"
.gitignore
文件排除掉不需要 Git 版本控制的文件和文件夹, 注意添加 正斜杠的相对路径;参考Connecting to GitHub with SSH - GitHub Docs完成以下几项即可;
$ git remote add origin [email protected]:myname/myrepo.git
: 把本地代码存储库与远程代码存储库相关联;$ git branch -M main
: 重命名当前分支的名称为 main ; 使用 -M 表示强制重命名;$ git push -u origin main
: 由于远程代码存储库是空的, 第一次推送 main 分支时, 加上了 –u
参数, Git 不但会把本地的 main 分支内容推送到远程的 main 分支, 还会把本地的 main 分支和远程的 main 分支关联起来, 在以后的推送或者拉取时就可以简化命令;$ git push origin main
: 今后再次推送 main 分支时, 就不用加上 –u
参数了;【VSCode教程】5分钟 GIT、GITHUB 分支的新建与合并_莺时桃桃的 Debug 日常-CSDN博客 20200315
本博文包含以下内容:
问题描述:
开始
原因分析:
开始
解决方案:
开始
问题描述:
在VS Code中连接 GitHub 远程时报错"ssh_askpass: exec(/usr/bin/ssh-askpass): No such file or directory \n Permission denied, please try again."
原因分析:
通过cd /usr/bin/ssh-askpass
命令会发现不存在该路径, 估计没有安装ssh-askpass
;
解决方案:
一种可能的解决方案是通过sudo apt install ssh-askpass
命令安装ssh-askpass
, 但因没有服务器的su
权限未去尝试; 另一种解决方案是在 create the SSH key 时, 设置 SSH key passphrases 为空;
问题描述:
ssh: connect to host github.com port 22: Connection timed out.
解决方案:
打开文件 ~/.ssh/config
,
$ vim ~/.ssh/config
添加以下内容:
Host github.com
Hostname ssh.github.com
Port 443
git - ssh: connect to host github.com port 22: Connection timed out - Stack Overflow
问题描述:
Cannot activate the ‘Pylance’ extension because it depends on the ‘Python’ extension, which is not loaded.
原因分析:
Pylance, Jupyter 扩展的版本与 Python 扩展的版本不兼容;
解决方案:
删除文件 ~/.vscode/extensions/ms-python.python*
, 安装匹配版本的 Python, Pylance, Jupyter 扩展; 并点击右上角的...
设置 Auto Update Extensions 为 None;
vscode远程error 无法激活 “Pylance“ 扩展, 因为它依赖于未加载的 “Python“ 扩展_baidu_40840693的博客 20210914
使用参考:
安装完 Git 之后,要做的第一件事就是设置你的用户名和邮件地址。 这一点很重要,因为每一个 Git 提交都会使用这些信息,它们会写入到你的每一次提交中,不可更改:
git config --global user.name "xxx" # 设置用户名
git config --global user.email "[email protected]" # 设置用户邮箱
git config --list # 检查配置信息
lu@Lenovo-PC MINGW64 /e/WorkSpace/Server_WorkSpace
$ git status
fatal: not a git repository (or any of the parent directories): .git
# mkdir tutorial # 在当前路径下创建一个文件夹, 用于后续创建一个repository
# cd tutorial/
# git --version
# git status # 查看当前工作状态
# git init # Git仓库的初始化, 创建了一个repository
记录一些git相关命令
git status
# git add . 添加当前路径下的所有文件到缓存区
git add xxx.py yyy.py # 添加一个或多个文件到缓存区
git status
git commit -m "First initial commit" # 提交至Git本地版仓库,并附上提交描述
git status
# 在GitHub上create a new repository
# set a new remote
git remote add origin https://github.com/user/repo.git
# verify new remote
git remote -v
> origin https://github.com/user/repo.git (fetch)
> origin https://github.com/user/repo.git (push)
git branch # 查看分支
git push origin master # 提交到远程仓库
此前,在PyCharm中由于"File | Open… | Open File or Project"选中的是"OpenSourcePlatform"文件夹,因此通过"VCS | Enable Version Control Integration"来初始化Git仓库,会在当前的项目路径Server_WorkSpace/OpenSourcePlatform下创建一个名为.git
的子目录,而我期望的是对Server_WorkSpace/OpenSourcePlatform/mmdetection进行版本控制,故需要先删除已经创建的本地仓库OpenSourcePlatform,才能在Server_WorkSpace/OpenSourcePlatform/mmdetection路径下创建本地仓库mmdetection;
此时,创建本地仓库mmdetection,有两种方式:
方式一:在Git Bash中,通过执行cd /e/WorkSpace/Server_WorkSpace/OpenSourcePlatform/mmdetection
和git init
命令,创建一个名为.git
的子目录;
方式二:在PyCharm中"File | Open… | Open File or Project"选中mmdetection,通过"VCS | Enable Version Control Integration"操作。如果此前 在当前的项目路径Server_WorkSpace/OpenSourcePlatform/mmdetection下没有一个名为.git
的子目录,则该操作会在当前的项目路径Server_WorkSpace/OpenSourcePlatform/mmdetection下创建一个名为.git
的子目录;如果此前 在当前的项目路径Server_WorkSpace/OpenSourcePlatform/mmdetection下已经存在一个名为.git
的子目录,则该操作启用了版本控制集成功能;
MMDet_Deployment_Configuration_Connection设置.jpg
MMDet_Deployment_Configuration_Mappings设置.jpg
MMDet_Deployment_Configuration_Excluded Paths设置.jpg
MMDet_初始化Git仓库.jpg
MMDet_VCS_Enable Version Control Integration之前.jpg # File | Settings | Version Control | Directory设置-->Apply
MMDet_VCS_Enable Version Control Integration设置.jpg
在执行"VCS | Enable Version Control Integration"操作之前,此处显示的是"Unregistered roots";
MMDet_VCS_Enable Version Control Integration之后.jpg
在执行"VCS | Enable Version Control Integration"操作之后,此处不再显示"Unregistered roots";
MMDet_VCS_执行首次commit操作001.jpg
# 红色,表示在工作区;
# 绿色,表示在暂存区;
# 蓝色,表示文件有修改,位于暂存区;
# 文件名无颜色,表示文件位于本地仓库区或已经提交到远程仓库区;
MMDet_VCS_执行首次commit操作002.jpg # 勾选了所有文件,并附上提交描述"the initial project version"
MMDet_VCS_执行首次commit操作003.jpg # 执行commit操作时出现的1个弹窗提示,看来当时应该取消勾选"Check TODO";对于该弹窗提示,点击"Commit";
MMDet_VCS_执行首次commit操作004.jpg # 文件commit之后,文件的颜色变成了无颜色;修改了此文件后,此文件的颜色变成了蓝色;
Hello World - GitHub Docs
PR是Pull Request缩写,Git/svn之类用的。比如GitHub上的项目,你pull下来,修改了部分代码之后再提交PR,然后管理员觉得你改的代码没毛病,管理员确认之后,这个项目某部分代码就改成你的了;在GitLab中,MR(Merge Request)好像是类似的意思;
团队合作的时候,由于远程端的更改多余你的本地端,你应该 先pull 然后合并远程端后 再push。如果直接强制push会让远程端的代码跟你本地的保持一致,远程端多的部分就不见了。
CRLF line separators CRLF行分隔符
CRLF abbr. 回车换行符(carriage return/line feed)
expand upon详细叙述
expand up展开,扩大
git clone https://github.com/user/repo_name.git
之前会在当前目录下创建一个文件夹,名字就是项目的名字repo_name。然后 git 会先拉取元信息,放在.git 这个目录里;然后拉取对应的object,同样放在.git 里;最后根据元信息和 obj这些信息建立整个代码。在最后一步开始之前终止,相当于所有拉取的东西都在.git 里。如果git clone
中途终止,直接删掉.git这个文件夹重新拉取就行,看样子你是 clone 不是 pull,讲道理可以把第一步创建的项目文件夹repo_name直接删除,不影响什么。
一般情况下,git clone
传输失败都会自动删除临时文件的,存储库目录也会被自动删除的。
*** Github 简明教程 | 菜鸟教程
git clone -b branch_name depository_addr
克隆某个指定分支到本地目录,然后在该目录下push时,对应的就是push到远端的对应分支。
git clone -b branch_name depository_addr
表示克隆名为branch_name的这个分支;例如, 在安装Detectron2时,
# 克隆default的master分支, 安装最新版本的Detectron2
git clone https://github.com/facebookresearch/detectron2.git
python -m pip install -e detectron2
# 克隆v0.3分支, 安装v0.3版本的Detectron2
git clone -b v0.3 https://github.com/facebookresearch/detectron2.git
python -m pip install -e detectron2