vscode 常用功能
克隆远程代码 git clone xxx
同步远程库最新更新
git pull origin <branch-name>
# 其中,<branch-name>是你要拉取的分支的名称。通常是main或master,具体取决于项目的默认分支。
# 例如,如果要拉取main分支的更新,可以这样做:
git pull origin main
处理可能的冲突
在拉取更新过程中,如果你在本地也有修改,并且这些修改与远程仓库的更新存在冲突,Git会提示你处理冲突。通常,你需要手动合并冲突文件并提交解决后的更改。
- Git会告诉你哪些文件有冲突,例如:
CONFLICT (content): Merge conflict in file.txt
Automatic merge failed; fix conflicts and then commit the result.
- 打开冲突文件,手动编辑冲突部分,然后保存文件。
- 在解决所有冲突后,使用以下命令提交合并后的更改:
git add <conflicted-file>
git commit
确认拉取结果
你可以使用以下命令来查看本地分支的最新提交,确认拉取操作是否成功:
git log --oneline
这将显示简化的提交历史,最近的提交应该包括你刚刚拉取的更新。
在VSCode中完成这些操作
除了在终端中,你还可以在VSCode的图形用户界面中完成拉取操作:
- 打开源代码管理视图:
- 点击左侧活动栏中的源代码管理图标(看起来像一个叉和一个圆圈)。
- 拉取更改:
- 点击顶部的…按钮,选择“Pull”(拉取)。
- 或者:在“源代码管理”视图的顶部找到“拉取”按钮,然后点击它。
- 处理冲突(如果有):
- 如果有冲突,VSCode会提示你打开冲突文件,并提供用户友好的界面来解决冲突。
其他基础准备工作
线上准备
注册
Github官网(用到邮箱:username@mail.com,设置了用户名:usename)
新建项目
填好“项目名”和“项目描述”就成:(注意HTTPS和SSH两个版本)
线下配置
- 安装git 下载地址:https://git-scm.com/downloads
- 配置SSH KEY
ssh-keygen -t rsa -b 4096 -C "username@mail.com"
遇到提示不断回车就行 - 找到生成的key
cd ~/.ssh
- 找到
id_rsa.pub
这是你的RSA公钥,复制,然后打开网站:https://github.com/settings/ssh - 选择
newsshkey
,把你的公钥粘贴进去。 - 链接测试
ssh -T git@github.com
确认信息并键入yes
. - 设置全局变量 (可以省略)
git config --global user.name "你在Git上注册的用户名(usename)"
git config --global user.email "你在Git上注册的邮箱(username@mail.com)"
本地同步项目创建
(接着上图)
按其上的步骤操作:
- 在本地建立一个文件夹,名为你的项目名
- 在里面创建一个README.md文件
- 右键该文件夹(或者按住
Shift
+右键),选中git Bash,依次输入
echo “# CSDN” >> README.md-------------往README.md写入"# CSDN"
git init
------------本地库初始化
git add README.md------------追踪README.md文件,放置到暂存区
git commit -m “first commit”------------该文件被提交到本地库
git remote add origin git@github.com:HLBayes/CSDN.git------------将仓库连接到远程服务器
git push -u origin master------------改动提交到远端服务器(并且是master分支)
最后准备工作算是全部结束,效果如下:
克隆线上项目
- 开始克隆github的项目,进入你项目的比如说:https://github.com/HLBayes/CSDN,找到
clone or download
,点它,它会给你个地址,然后记住那个地址。https://github.com/HLBayes/CSDN.git
git clone [url]
------------下载一个项目和它的整个代码历史- 将该项目克隆到本地:
git clone https://github.com/HLBayes/CSDN.git
或者你想换一个本地存储路径,新建一个文件夹,然后进去,git init
就可以了。
常用命令
一般来说,日常使用只要记住下图6个命令,就可以了。
- Workspace:工作区
- Index / Stage:暂存区
- Repository:仓库区(或本地仓库)
- Remote:远程仓库
>
git pull
:可以从远程仓库更新代码到本地git add [file]
:1.1 新增文件修改到本地git仓库 新增当前文件夹下所有文件的修改:git add .
,如果被卡住了,就git status看看什么原因,并把创建.gitignore
文件,添加git忽略跟踪的大文件,再git add .
。git commit -m [message]
:1.2 提交文件修改并做备。也可以使用-a 参数不执行 git add 命令,直接提交git commit -a
。git push -u origin master
:将你commit的代码推送到master分支git checkout [file]
:恢复暂存区的指定文件到工作区git fetch [remote]
:下载远程仓库的所有变动
使用git status
查看哪些文件使用git跟踪
创建.gitignore
文件,添加git忽略的文件
比如.gitignore文件内容设置为:
# dir 不需要提交的目录
/node_modules
# file 不需要提交的文件
config.ini
# log 不需要提交的任意包含后缀名为log的文件
*.log
# Package Files 不需要提交的任意包含后缀名为jar的文件
*.jar
如果是中途使用gitignore,需要使用以下代码删除cache,不然gitignore会失效。
git rm -rf --cached .
git add .
删除.git文件夹即可删掉创库管理:rm -rf .git
分支管理
git checkout -b mybranch
新建并切换到mybranch分支
git checkout master
切换分支到master
git branch -d mybranch
删除mybranch分支
比如,如果要将开发中的分支(develop),合并到稳定分支(master),
首先切换的master分支:git checkout master
。
然后执行合并操作:git merge develop
。
当你fork了别人的仓库时,想要保持更新要做如下操作
git remote add upstream https://github.com/xxxxx/xxxxx.git
git fetch upstream
git merge upstream/master
如何进行回滚git log 查看提交的历史commit以及他的ID
git log
查看提交的历史commit以及他的ID
git revert <commit log string>
是撤消该commit,作为一个新的commit。
git revert
是生成一个新的提交来撤销某次提交,此次提交之前的commit都会被保留(这个方法是一般的做法,并不会删除任何commit,而是以一个新的commit形式去做回滚操作)
git reset
是回到某次提交,提交及之前的commit都会被保留,但是此次之后的修改都会被退回到暂存区(使用reset前请三思,因为他会将你所有的文件与记录都删掉的)
当你做了某个commit,但是又不想要了,想要删除,可以使用以下方法删除:
git rebase -i HEAD~10
这里的10意味着rebase最近的10条记录,输入这条命令后,会让你选择删除哪条commit,保留哪条commit,非常好用。这方法参考了stackoverflow
当然,如果你不介意丢失文件操作的话,可以使用git reset --hard <sha1-commit-id>
这会删除掉你所有的数据,强制回滚到commit的那个状态,非常麻烦后果很严重,不建议使用。
git reset --soft <sha1-commit-id>
还有一个soft模式,这个我没用过,可能没有hard的后果严重。
解决文件冲突
如果你遇到这样的错误:
Please commit your changes or stash them before you merge.
就证明你有文件冲突了
有两种解决方法:
git mergetool
这个命令,你要做的就是编辑主窗口的那个文件,解决掉冲突,最后用git commit -m “merge”
来提交你的操作,就可以恢复正常,推荐使用这个方法。git stash
,注意!这个方法会将你的所有操作全部删除,回滚到没冲突的状态。然后使用git pull
就可以解决冲突了。
另外还有一些基础的教程
Git基本操作(中文)
Git指南(英文)
Git入门教程
遇到过的问题
问题:Git: fatal: Unable to create ‘/data1/libo/PyCIL_PASS/.git/index.lock’: File exists.
删除
/data1/libo/PyCIL_PASS/.git/index.lock
文件:rm -f .git/index.lock