创建版本库
git clone <url> #克隆远程版本库
git init #初始化本地版本库
修改和提交
git status #查看状态
git diff #查看变更内容
git add . #跟踪所有变更过的文件
git add <file> #跟踪指定的文件
git mv <old> <new> #文件改名
git rm <file> #删除文件
git rm --cached <file> #停止跟踪文件但不删除
git commit -m "commit message" #提交所有更新过的文件
git commit --amend #修改最后一次提交
查看提交历史
git log #查看提交历史
git log -p <file> #查看指定文件的提交历史
git blame <file> #以列表方式查看指定文件的提交历史
撤销
git reset --hard HEAD #撤销工作目录中所有未提交文件的修改内容
git checkout HEAD <file> #撤销指定的未提交文件的修改内容
git revert <commit> #撤销指定的提交
分支与标签
git branch #显示所有本地分支
git checkout <branch/tag> #切换到指定分支或标签
git branch <new-branch> #创建新的分支
git branch -d <branch> #删除本地分支
git tag #列出所有本地分支
git tag <tagname> #基于最新提交创建标签
git tag -d <tagname> #删除标签
合并
git merge <branch> #合并指定分支到当前分支
git rebase <branch> #衍合指定分支到当前分支
远程操作
git remote -v #查看远程版本库信息
git remote show <remote> #查看指定远程版本库信息
git remote add <remote> <url> #添加远程版本库
git fetch <remote> #从远程库获取代码
git pull <remote> <branch> #下载代码及快速合并
git push <remote> <branch> #上传代码及快速合并
git push <remote> :<branch/tag-name> #删除远程分支或标签
git push --tags #上传所有标签
git restore --staged和git rm --cached的区别
git restore --staged
和 git rm --cached
是两个 Git 命令,用于在版本控制中操作暂存区(索引)的文件。
git restore --staged
:该命令用于将文件从暂存区还原到工作区,即取消暂存文件的操作。它会将暂存区中的文件恢复到与最近提交的版本相同的状态,但保留工作区中的文件内容不变。使用git restore --staged
命令,你可以撤销已经使用git add
添加到暂存区的文件,使它们重新变为未暂存状态。它的语法如下:
git restore --staged <file>
这将从暂存区中移除指定的文件,但保留在工作区中,相当于撤销之前的 git add
操作。
git rm --cached
:该命令用于将文件从暂存区中移除,但保留在工作区中。它会取消对文件的跟踪,将文件从版本控制的索引中移除。使用git rm --cached
命令可以将已暂存的文件退回到未暂存的状态,但不会删除工作区中的文件。它的语法如下:
git rm --cached <file>
这将从暂存区中移除指定的文件,但保留在工作区中。如果你提交这个变更,文件将不再包含在下一个提交中。
总结来说,git restore --staged
用于将文件从暂存区还原到工作区,相当于撤销暂存操作,而 git rm --cached
用于将文件从暂存区中移除,但保留在工作区中,相当于取消对文件的跟踪。它们的主要区别在于 git restore --staged
是还原暂存区的操作,而 git rm --cached
是移除暂存区跟踪的操作。
git自定义账号和密码信息
因工作需要,写一段python脚本批量下载A仓库
代码并提交到B仓库
,并且希望该脚本在不同电脑执行都达到同样效果,此时需要解决在不同电脑上用户认证的问题。
查阅资料后发现有两种可行的办法: - 使用git客户端的全局凭证功能 - 在git仓库的url地址中直接拼接用户名和密码
这里为了方便选择直接在git 仓库url中添加用户名和密码信息,格式如下:
https://账号:密码@xxx.xxx.xxx/test.git
使用中可能因为账号和密码中包含特殊符号而报错,此时可以通过urlencode(对字符串进行URL加密来解决),比如:
https://gjx.xin@qq.com:test@xxx.xxx.xxx/test.git
这样就会报错,正确格式应该如下:
https://gjx.xin%40qq.com:test@xxx.xxx.xxx/test.git
gitlab导入外部项目问题
gitlab版本:15.5
场景一:通过git仓库url导入gitlab
测试尝试配置:管理中心=>设置=>网络=>出站请求=>钩子和服务可以访问的本地IP地址和域名中添加该域名,报如下错误
最后折腾了一券发现是nas的防火墙策略拦截了
经验技巧:
- 通过url导入项目时,提示没有发现git仓库,url后面追加两个空格可解决。