文章目录
一、git
1.1 git介绍
Git是一个开源的分布式版本控制系统,可以用于处理各种类型的项目;是一个版本控制系统,用来追踪计算机文件的变化的工具,也是一个供多人使用的协同工具。
Git本地有三个工作区域:工作目录 (Working Directory )、暂存区(Stage/Index)、资源库 (Repository或Git Directory)。如果在加上远程的git仓库(Remote Directory)就可以分为四个工作 区域.文件在这四个区域之间的转换关系如下:
Workspace :工作区,就是你平时存放项目代码的地方
Index l Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列 表信息
Repository :仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数 据。其中HEAD指向最新放入仓库的版本
Remote :远程仓库,抡管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据 交换
1.2 工作流程
git的工作流程一般是这样的:
-
在工作目录中添加、修改文件; --vim/touch result.xml # 创建文件
-
将需要进行版本管理的文件放入暂存区域; --git add . # 全部上传/git add filename # 上传指定 文件
-
将暂存区域的文件提交到git仓库。–git commit # 上传至本地仓库
-
将文件上传至远程仓库。 --git push url 因此,git管理的文件有三种状态︰已修改( modified ) ,已暂存( staged ) ,已提交(committed) 各个部分转换关系及命令如下图:
1.3 git下载
Git客户端官网下载链接:https://git-scm.com/downloads
GIt安装教程:https://blog.csdn.net/chen15369337607/article/details/119272661
1.4 git配置
在使用Git时,需要进行基本配置,以便管理仓库和版本控制。以下是主要的Git配置项:
1.用户名和邮箱
Git使用用户名和邮箱来确定提交的作者,在使用Git前需要设置,可以通过以下命令设置:
git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"
2.编辑器
在使用Git时,经常需要编辑和提交文本信息,可以通过以下命令设置默认文本编辑器:
git config --global core.editor "vim"
在这个例子中,将编辑器设置为Vim。也可以将编辑器设置为其他喜爱的文本编辑器。
3.提交信息
提交信息是在Git中极为重要的,需要准确的提交信息描述每个提交的内容。可以通过以下命令设置提交信息模板:
git config --global commit.template ~/.gitmessage
这里是将提交信息模板设置为当前用户的主目录下的.gitmessage文件。
4.自动换行
在提交或合并时,Git可能会出现行尾换行符的错误。为了避免这种情况,可以设置自动将换行符转换为LF。
git config --global core.autocrlf input
这里设置core.autocrlf为input,表示在Windows中提交时,自动将换行符转换为LF。
二、git常见用法
Git是目前最流行的版本控制工具,常见用法包括:
可以参考git常见操作:Git使用教程,最详细,最傻瓜,最浅显,真正手把手教 - 知乎 (zhihu.com)
-
初始化一个Git仓库: git init (.git隐藏文件 它是Git用来跟踪和管理版本库的)
-
克隆一个远程仓库到本地: git clone [url]
-
查看当前文件状态: git status
-
添加文件到暂存区: git add [file]
-
提交文件到本地仓库: git commit -m “message”
-
查看提交记录: git log
-
回退到上一个版本: git reset HEAD^
-
撤销对文件的修改: git checkout – [file]
-
创建分支: git branch [branchname]
-
切换到指定分支: git checkout [branchname]
-
合并指定分支到当前分支: git merge [branchname]
-
推送本地分支到远程仓库: git push [remote] [branch]
-
拉取远程分支: git pull [remote] [branch]
-
删除远程分支: git push [remote] --delete [branchname]
-
撤销本地的一次提交并继续修改: git commit --amend
三、git与 svn的区别
Git是一种分布式版本控制系统,而SVN是一种集中式版本控制系统。
Git的工作方式是在本地仓库进行版本控制,可以在本地进行提交、合并、分支等操作,开发完毕后再将代码推送到远程仓库。Git具有分支合并、轻量级快照等优势,支持本地版本控制,可以有效地减少网络传输和服务器资源消耗。
而SVN则是将文件提交到中央版本库中,并且每一个人都是从同一个版本库中查看和记录修改历史。SVN具有中央仓库统一管理代码、版本控制历史记录清晰等优势,但对网络传输要求较高,不支持本地版本控制,需要频繁地与中央仓库进行交互。
Git-svn是使用Git对SVN仓库进行版本控制的工具,可以将SVN仓库的历史记录转化成Git仓库的提交记录,从而使用Git进行版本控制。Git-svn在SVN与Git之间进行桥接,可以在Git和SVN之间无缝切换,结合Git的分支、提交记录等功能,可以在SVN中使用Git的优势。
总之,Git和SVN都是版本控制工具,针对不同的应用场景和需求选择合适的工具有助于效率和团队协作。
git常见命令 | svn常见命令 | 解释 |
---|---|---|
git --version | svn --version | 查看git or svn的版本 |
git init | svnadmin create | 初始化 git or svn仓库 |
git clone $url | svn checkout $url 或者 svn co $url | 从远程仓库中克隆代码 |
git add | svn add | 新文件添加到git or svn |
git status | svn status | 查看 git or svn 中的文件状态 |
git diff | svn diff | |
git diff $file | svn diff $file | |
git pull | svn update 或者 svn up | 一般说up一下就是update一下 |
git commit -m $comment | 无 | svn不支持本地commit,commit直接push到远程仓库 |
git push | 无 | svn不支持本地commit,所以也不存在push的概念 |
git log | svn log | less | 直接使用svn log会直接打印所有log,如果commit很多的话就233333 |
git show $version | svn diff -c $version | 查看某个commit的变更内容 |
git branch | svn copy | 查看 git or svn分支 |
git merge | svn erge | 合并 git or svn分支 |
git blame | svn blame | 查看 Git 中文件每行的修改情况 |
svn是分布式版本控制。svn本地保存的是远程仓库的镜像,没有本地仓库 or 本地分支的概念,所以每次commit都是直接提交到远程仓库。而git每次commit是对本地分支操作,即提交到本地仓库的某个分支,然后再将本地分支的修改同步到远程仓库。
四、git连接github
连接GitHub需要进行以下几个步骤:
4.1 创建一个新的仓库(Repository)
注意在远程仓库网站创建一个新的仓库,注意不需要建立README.md和.gitignore文件,因为一般clone下来的项目都含有这2个文件
4.2 生成SSH Key并添加到GitHub账户中
用以下命令生成SSH Key:
ssh-keygen -t rsa -C "your_email@example.com"
将生成的id_rsa.pub文件中的内容添加到GitHub账户的SSH keys中。
关联远程仓库
git remote add origin https://github.com/cxinay/Elegent.git
本地内容上传推送
-
由于新建的远程仓库是空的,所以要加上-u这个参数
git push -u origin master
-
之后仓库不是空的,就不用加上-u
git push origin master
五、github连接pycharm
5.1 配置PyCharm中的Git
在PyCharm中连接GitHub可以进行以下几个步骤:
-
配置PyCharm中的Git:
启动PyCharm,点击【File】→【Settings】→【Version Control】→【Git】,选择Git可执行文件路径(系统安装git后此处会默认显示路径),点击【Test】,路径下会显示当前Git版本。
-
配置PyCharm中的GitHub:
点击【File】→【Settings】→【Version Control】→【GitHub】,点击【Log In via GitHub】
-
授权GitHub给PyCharm:
点击【Authorize in GitHub】,②登录GitHub,③输入收到的GitHub验证码,进行验证
验证通过后回到PyCharm中,选择GitHub账号,修改连接超时时间,点击【OK】
-
建立远程仓库并提交代码:
点击【VCS】→【Import into Version Control】→【Share Project on GitHub】
-
填写仓库名及远程名,描述可不填写,若填写必须是英文,不可出现汉字、空格、符号及换行符,然后点击【Share】
-
提交一段代码,点击提交按钮(快捷键Ctrl+K)→勾选需提交的信息→输入提交内容→点击【Commit】提交
-
浏览器中登录GitHub查看仓库中的文件
5.2 PyCharm中分支管理
默认仅有master分支,点击右下角master分支,点击【+New Branch】新建分支
切换分支,点击右下角分支名称,选择要切换的分支,点击【Checkout】后,等待分支切换成功
分支代码提交名push后,可合并分支,首先切换到要合并的分支上(此处切到master主线),点击分支名称,选择要被合并的分支,点击【Merge into Current】,等待合并成功
合并分支后,要切换到master将合并的文件推送到远程。
分支合并后即可删除分支,删除分支必须先切换到其它分支,如:共有master和dev分支两个分支,若要删除dev,必须先切换到master上,点击左下角Git,选择要删除的远程和本地分支,点击删除图标即可
如果您想将项目上传到GitHub上,可以使用PyCharm中的Git Gui工具,对文件进行add、commit以及push等基本操作。其中add和commit在Git Gui中的部分可以通过Pycharm的窗口直接完成,等同于在命令行操作。将修改提交到GitHub上,点击Git Gui的Push按钮即可
六、github常见操作
6.1 将GitHub的仓库Clone到远程
git clone https://github.com/cxinay/slinkyy.git
输入git init,进行初始化(初次连接时)
进入项目文件夹,连接远程仓库使用 git remote add origin 仓库地址 命令来将本地仓库与您的GitHub仓库关联。
这样就将仓库克隆到本地了,然后就可以进行开发操作,如添加、提交、推送变更等。当完成开发后,使用以下命令将本地的提交推送到GitHub仓库:
git add . 命令来添加所有文件。
git commit -m "commit message"
git push origin master
点开对应路径的文件
提交一段代码,点击提交按钮(快捷键Ctrl+K)→勾选需提交的信息→输入提交内容→点击Commit and Push提交
然后可以在远程仓库看见提交上去的代码
6.2 pycharm和Github多人协作
关联项目(github中的master分支下的项目)
关联项目网址复制进去,出现如下图:
提交一段代码,点击提交按钮(快捷键Ctrl+K)→勾选需提交的信息→输入提交内容→点击Commit and Push提交
七、git常见错误及解决
-
为远程仓库中有更新,需要先将远程仓库的更新拉取到本地进行合并,再进行推送
error: failed to push some refs to [remote]
解决方法是执行 git pull origin branch 命令,将远程仓库的最新内容合并到本地,然后再重新推送到远程仓库。
-
在进行分支合并时出现,表示两个分支没有共同的祖先节点,无法进行合并
fatal: refusing to merge unrelated histories
解决方法是在执行合并时添加 --allow-unrelated-histories 参数,例如 git merge branch --allow-unrelated-histories。
-
因为本地修改的文件与远程仓库中的版本冲突,无法进行合并
error: Your local changes to the following files would be overwritten by merge
解决方法是先将本地对应文件进行备份,然后执行 git pull origin branch 命令拉取远程仓库的更新,再将备份文件与更新后的文件进行比对和合并。
-
由于网络问题导致无法连接到远程仓库
fatal: unable to access 'https://github.com/...': Failed to connect to github.com port 443: Connection refused
解决方法是检查网络连接、代理设置,或尝试更换托管平台或使用SSH协议 进行连接。
-
git push 不去远程更新问题,可能是因为在推送更新时出现,可能是因为本地仓库中的变更没有被加入到版本控制中
解决方法是首先执行 git add 将变更文件添加到暂存区,再执行 git commit 提交变更,最后执行 git push 进行远程更新推送操作。
-
在提交或合并时,Git可能会出现行尾换行符的错误。为了避免这种情况,可以设置自动将换行符转换为LF。
git config --global core.autocrlf input
这里设置core.autocrlf为input,表示在Windows中提交时,自动将换行符转换为LF。
7.无法启动握手
couldn't kickstart handshaking
解决办法:
①检查网络是否正常,在【File】→【Settings】→【Version Control】→【GitHub】中修改Connection timeout连接超时时间
②检查GitHub中关联仓库是否被删除
8.可能本地git仓库目录下为空,可能本地仓库add后未commit,可能git init错误
error: src refspec master does not match any. error: failed to push some refs to
解决方法:用命令 git add + 文件名,把文件添加到仓库就行 ,然后正常push就好。
换行符转换为LF。7.无法启动握手
couldn't kickstart handshaking
解决办法:
①检查网络是否正常,在【File】→【Settings】→【Version Control】→【GitHub】中修改Connection timeout连接超时时间
②检查GitHub中关联仓库是否被删除
8.可能本地git仓库目录下为空,可能本地仓库add后未commit,可能git init错误
error: src refspec master does not match any. error: failed to push some refs to
解决方法:用命令 git add + 文件名,把文件添加到仓库就行 ,然后正常push就好。