Git常用操作
Git是开源的版本控制系统,常用于项目代码管理,文件管理等场景。
Git的常见操作命令按照操作顺序介绍
- 新建、管理远程仓库
- 克隆、更新本地仓库副本
- 上传本地修改、
-
修改记录是每次上传更新的记录,一个修改记录可能包含多个文件的修改
每个修改记录对应唯一的修改记录id
-
回滚操作实际上是新提交一次更新以复原修改
当回滚的修改记录不是文件的最新修改记录时,则会由于修改冲突而失败
此时则需要人工修改后提交
-
分支是一个远程仓库内的多个独立副本,每个分支都是完全独立互不影响的
文件、修改记录都是单独存储的
一个仓库默认有一个主分支,默认将文件存储到主分支
创建新分支基于某个修改记录、某个分支、某个tag
一个分支的多次修改可一次性更新到别的分支,称为合并(merge),实际上是对目标分支提交一次新修改
但是可能会由于修改冲突而失败(目标分支也修改了相同文件),此时需要人工修改更新到目标分支。
tag是一个标识,用于标记基于某个修改记录归档对应分支下截止到此次修改及之前的文件方便版本迭代理。
tag是一个标识,不允许更新文件
分支是独立副本,允许更新文件
-
git可对仓库进行用用户权限设置,包括查看、文件修改、仓库管理等权限。
-
克隆远程仓库,将远程仓库文件克隆到本地仓库副本
远程仓库文件也可直接进行压缩包下载,但是不支持后续的更新、上传操作。
-
切换分支,本地仓库的副本的文件会一并改变
默认情况下,克隆的是远程仓库的主分支
当前仓库副本中的文件被修改了且未提交的情况下 则不允许切换分支,
如果需要使用一个远程仓库的多个分支的代码,推荐克隆多个本地仓库副本
克隆指定分支的命令:git clone --branch [目标分支名] [http克隆地址] [指定目录]
-
远程仓库文件发生变化,可通过更新操作更新本地仓库副本
命令行工具示例
cd [目标仓库副本目录]
git pull
-
当前仓库副本中的文件被修改了且未提交的情况下,不允许切换分支
如果需要使用一个远程仓库的多个分支的代码,推荐克隆多个本地仓库副本
克隆指定分支的命令:git clone --branch [目标分支名] [http克隆地址] [指定目录]
-
更新本地仓库副本时,恰巧需要更新的文件本地也修改了,则发生更新冲突而更新失败
对本地仓库副本中的文件修改完成后,需要手动上传到远程仓库才能同步
上传操作一般分为三步:
- 添加文件到暂存区
- 提交暂存区到本地仓库
- 上传远程仓库
-
提交文件到暂存区,指定哪些被修改的文件为此次上传的内容
-
Git认为空文件夹是无效的,当然也不会上传,如果我们需要上传文件,需要再空文件夹中添加.gitkeep文件
-
Git对文件名的大小写不敏感
将文件名从config改成CONFIG,Git不认为这是一次更新
需要用户手动删除文件并上传同步后,再重新添加文件再上传同步
-
提交本地仓库,将暂存区的修改内容打包成一次更新
提交本地仓库需要填写更新日志
-
提交本地修改,不会同步到远程仓库
只记录会将修改记录在本地仓库副本的.git文件夹中
用户可以多次添加文件到暂存区-提交本地仓库,以根据不同修改目的记录多次更新,填写多个更新日志
-
提交远程仓库,将本地仓库的修改同步到远程仓库,可以一致性将多个本地仓库修改同步到远程仓库
-
上传远程仓库,要求本地放仓库副本为远程仓库最新版本
如果没有更新冲突,则再次提交即可
如果发生更新冲突,恰巧本地修改的文件在远程仓库中也被修改了
- 撤销本地仓库提交,git命令行工具示例:git reser origin
- 解决更新冲突
- 再重新提交上传
如果需要忽略更新冲突,可以强制上传远程仓库,但是这样会造成更新覆盖,造成团队代码覆盖,把别人的代码给弄没了。
git config --global user.name "Teacher Egg" //配置git相关 git config --global user.email "[email protected]" git init //初始化完成以后可以看到在文件夹里多了.git文件夹 git status //获取git状态 git add git commit git log .gitignore //忽略相关文件 git branch bad-boy //创建新的分支 git branch //查看分支 git checkout bad-boy //进入所选分支 git merge //把别的分支合并到当前所处的分支 git remote git push git fetch git diff