本文共 14175 字,大约阅读时间需要 47 分钟。
目录
基本操作
一、准备工作
首先:到https://github.com下注册账号:1007424128@qq.com/密码 然后,到https://github.com/new创建仓库myRepository二、安装github客户端
https://git-for-windows.github.io/三、添加本地文件到远程服务器
①git clone https://github.com/shengqianfeng/myRepository.git ②cd myRepository ③将需要托管的代码和文件(如:test目录)放进myRepository ④git add . //将当前文件目录(myRepository)内的全部内容添加进版本管理器 ⑤git commit -m "本次提交的说明信息" //提交到本地的版本控制库里 ⑥git push -u origin master //将你本地的仓库提交到你的github账号里,此时会要求你输入你的github的账号和密码origin:这个origin其实是远程git'仓库url地址的别名
⑦查看浏览器:https://github.com/shengqianfeng/myRepository 发现 test目录已经在上边了。四、删除本地和远程文件
① git rm text.txt ② git commit -m "delete txt" ③ git push
图解:
查看分支&更新文件
# 查看当前分支git branch
最下面列出了本次更新的的变化:3 files changed, 27 insertions(+), 2 deletions(-)
创建新分支&提交远端
在github上可以看到myRepository.git仓库下多了新分支:commandBranch。
在原有分支基础上创建分支
git checkout -b new_branch git push --set-upstream origin new_branch
合并分支
刚才已经创建了一个commandBranch分支,现在我们要做的就是合并新分支到master分支。
# (当前是commandBranch分支)查看分支提交历史,只有2017年的一个提交记录$ git logcommit 27de6c68d7c0c15f9df410ae7ff48a1f97fb2c72 (HEAD -> commandBranch, origin/master, origin/commandBranch, origin/HEAD, master)Author: shengqianfeng <1007424128@qq.com>Date: Tue Aug 15 10:42:15 2017 +0800 changes logAdministrator@J6Y36H1QNVZDVP7 MINGW64 /d/git_study/myRepository (commandBranch)# 在新分支目录下创建一个command.md文件$ touch command.mdAdministrator@J6Y36H1QNVZDVP7 MINGW64 /d/git_study/myRepository (commandBranch)# 写入一段文字$ echo "welcome to my git" > command.mdAdministrator@J6Y36H1QNVZDVP7 MINGW64 /d/git_study/myRepository (commandBranch)# 尝试提交到远程,不过没有添加到本地的话push无效,此时远端并没有command.md$ git pushUsername for 'https://github.com': 1007424128@qq.comEverything up-to-dateAdministrator@J6Y36H1QNVZDVP7 MINGW64 /d/git_study/myRepository (commandBranch)$ ls -altotal 5drwxr-xr-x 1 Administrator 197121 0 九月 23 08:15 ./drwxr-xr-x 1 Administrator 197121 0 九月 23 08:00 ../drwxr-xr-x 1 Administrator 197121 0 九月 23 08:04 .git/-rw-r--r-- 1 Administrator 197121 18 九月 23 08:15 command.mddrwxr-xr-x 1 Administrator 197121 0 九月 23 08:00 test/Administrator@J6Y36H1QNVZDVP7 MINGW64 /d/git_study/myRepository (commandBranch)# 先添加到git本地管理$ git add command.mdwarning: LF will be replaced by CRLF in command.md.The file will have its original line endings in your working directoryAdministrator@J6Y36H1QNVZDVP7 MINGW64 /d/git_study/myRepository (commandBranch)#commit到本地仓库中$ git commit -m "create file command.md"[commandBranch a54058f] create file command.md 1 file changed, 1 insertion(+) create mode 100644 command.mdAdministrator@J6Y36H1QNVZDVP7 MINGW64 /d/git_study/myRepository (commandBranch)# 现在可以push到远端commandBranch分支目录下了,github上可以看到已经有了$ git pushUsername for 'https://github.com': 1007424128@qq.comEnumerating objects: 4, done.Counting objects: 100% (4/4), done.Delta compression using up to 4 threadsCompressing objects: 100% (2/2), done.Writing objects: 100% (3/3), 293 bytes | 293.00 KiB/s, done.Total 3 (delta 0), reused 0 (delta 0)To https://github.com/shengqianfeng/myRepository.git 27de6c6..a54058f commandBranch -> commandBranchAdministrator@J6Y36H1QNVZDVP7 MINGW64 /d/git_study/myRepository (commandBranch)# 查看git提交历史,看到除了2017年的一个,2020年9月23日也就是现在也有一个文件创建$ git logcommit a54058fc711d6244c4d1e185349d631b77c2f15a (HEAD -> commandBranch, origin/commandBranch)Author: 1007424128@qq.comDate: Wed Sep 23 08:18:31 2020 +0800 create file command.mdcommit 27de6c68d7c0c15f9df410ae7ff48a1f97fb2c72 (origin/master, origin/HEAD, master)Author: shengqianfeng <1007424128@qq.com>Date: Tue Aug 15 10:42:15 2017 +0800 changes logAdministrator@J6Y36H1QNVZDVP7 MINGW64 /d/git_study/myRepository (commandBranch)
合并文件
这里要做的就是切换到master分支,将commandBranch新建的那个command.md文件合并到master分支上来。
# 切换到master分支$ git checkout masterSwitched to branch 'master'Your branch is up to date with 'origin/master'.Administrator@J6Y36H1QNVZDVP7 MINGW64 /d/git_study/myRepository (master)# 列出所有分支,看到当前分支是master$ git branch -a commandBranch* master remotes/origin/HEAD -> origin/master remotes/origin/commandBranch remotes/origin/masterAdministrator@J6Y36H1QNVZDVP7 MINGW64 /d/git_study/myRepository (master)# 一开始没有command.md文件$ ls -altotal 4drwxr-xr-x 1 Administrator 197121 0 九月 23 08:20 ./drwxr-xr-x 1 Administrator 197121 0 九月 23 08:00 ../drwxr-xr-x 1 Administrator 197121 0 九月 23 08:20 .git/drwxr-xr-x 1 Administrator 197121 0 九月 23 08:00 test/Administrator@J6Y36H1QNVZDVP7 MINGW64 /d/git_study/myRepository (master)# 使用【git merge 分支名】合并commandBranch分支文件到当前分支(master)上来,看到1 insertion(+)$ git merge commandBranchUpdating 27de6c6..a54058fFast-forward command.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 command.mdAdministrator@J6Y36H1QNVZDVP7 MINGW64 /d/git_study/myRepository (master)# 现在目录下有了command.md,成功合并下来了,接下来就是提交到远程master仓库了$ ls -altotal 5drwxr-xr-x 1 Administrator 197121 0 九月 23 08:22 ./drwxr-xr-x 1 Administrator 197121 0 九月 23 08:00 ../drwxr-xr-x 1 Administrator 197121 0 九月 23 08:22 .git/-rw-r--r-- 1 Administrator 197121 19 九月 23 08:22 command.mddrwxr-xr-x 1 Administrator 197121 0 九月 23 08:00 test/Administrator@J6Y36H1QNVZDVP7 MINGW64 /d/git_study/myRepository (master)$ git add command.mdAdministrator@J6Y36H1QNVZDVP7 MINGW64 /d/git_study/myRepository (master)$ git pushUsername for 'https://github.com': 1007424128@qq.comTotal 0 (delta 0), reused 0 (delta 0)To https://github.com/shengqianfeng/myRepository.git 27de6c6..a54058f master -> masterAdministrator@J6Y36H1QNVZDVP7 MINGW64 /d/git_study/myRepository (master)# 查看历史可以看到master分支和commandBranch分支都已经有了相同的提交历史记录$ git logcommit a54058fc711d6244c4d1e185349d631b77c2f15a (HEAD -> master, origin/master, origin/commandBranch, origin/HEAD, commandBranch)Author: 1007424128@qq.comDate: Wed Sep 23 08:18:31 2020 +0800 create file command.mdcommit 27de6c68d7c0c15f9df410ae7ff48a1f97fb2c72Author: shengqianfeng <1007424128@qq.com>Date: Tue Aug 15 10:42:15 2017 +0800 changes logAdministrator@J6Y36H1QNVZDVP7 MINGW64 /d/git_study/myRepository (master)$
不慎提交大文件该如何接续提交?
此前不小心在工作区,也就是我的pycharm提交了两个训练深度学习模型保存的大文件,结果导致后来提交到github一直失败,说是超过了github的文件大小限制。
本以为在pycharm直接删除这俩文件继续提交就好了,没想到一直都是如上失败提示,最后通过以下办法解决了问题。
①使用git log命令查看历史提交记录并找到当时提交大文件的那次记录,找到版本库id
②使用git reset命令撤回提交
git reset --mixed d1f2e56d6eb4cb7e791d0658ef253609ac04de8c
③删除这俩文件
git rm --cache /d/PycharmProjects/pystudy/deep_learning/hands_book/conv_tensorflow/5.6_alexnet_weights.h5git rm --cache /d/PycharmProjects/pystudy/deep_learning/hands_book/conv_tensorflow//5.7_vgg_weights.h5
解决pull远程代码的时候,本地修改造成的merge override问题
pull的时候出现了如下提示:
➜ jeff-admin-release git:(release.1.0.2) ✗ git pull remote: Enumerating objects: 34, done.remote: Counting objects: 100% (34/34), done.remote: Compressing objects: 100% (23/23), done.remote: Total 34 (delta 0), reused 0 (delta 0)Unpacking objects: 100% (34/34), done.From https://gitlab.xxx.cn/group-arch/jeff-admin 0d8ce53..0e55950 release.1.0.2 -> origin/release.1.0.2Updating 0d8ce53..0e55950error: Your local changes to the following files would be overwritten by merge: admin-service/src/main/java/cn/xxx/admin/model/OpenItemStatusModel.java admin-web/pom.xmlPlease commit your changes or stash them before you merge.Aborting既然本地有修改,又不想被覆盖,那就先把本地的暂存起来再更新吧!
➜ jeff-admin-release git:(release.1.0.2) ✗ git show➜ jeff-admin-release git:(release.1.0.2) ✗ git stash Saved working directory and index state WIP on release.1.0.2: 0d8ce53 fix circuitBreaker event schedule➜ jeff-admin-release git:(release.1.0.2) git pull Updating 0d8ce53..0e55950Fast-forward admin-service/src/main/java/cn/xxx/admin/common/{CircuitbreakerStatusEnum.java => CircuitBreakerActionEnum.java} | 8 ++--- admin-service/src/main/java/cn/xxx/admin/common/CircuitBreakerStatusEnum.java | 29 ++++++++++++++++++ admin-service/src/main/java/cn/xxx/admin/model/OpenItemStatusModel.java | 4 +-- admin-service/src/main/java/cn/xxx/admin/service/impl/BreakerStatusService.java | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------- admin-service/src/main/java/cn/xxx/admin/service/impl/EventServiceImpl.java | 29 ++++++++++-------- admin-web/pom.xml | 1 + admin-web/src/main/java/cn/xxx/admin/payload/circuitbreaker/StatusBatchGetRequest.java | 37 +++++++++++++++++++++++ admin-web/src/main/java/cn/xxx/admin/web/controller/AdminCircuitBreakerController.java | 31 ++++++++++++++++++-- admin-web/src/main/resources/application.properties | 2 +- 9 files changed, 214 insertions(+), 42 deletions(-) rename admin-service/src/main/java/cn/xxx/admin/common/{CircuitbreakerStatusEnum.java => CircuitBreakerActionEnum.java} (79%) create mode 100644 admin-service/src/main/java/cn/xxx/admin/common/CircuitBreakerStatusEnum.java create mode 100644 admin-web/src/main/java/cn/xxx/admin/payload/circuitbreaker/StatusBatchGetRequest.java➜ jeff-admin-release git:(release.1.0.2)然后,将暂存区的本地暂存文件pop出来即可。
➜ jeff-admin-release git:(release.1.0.2) git stash popAuto-merging admin-web/pom.xmlAuto-merging admin-service/src/main/java/cn/xxx/admin/task/RemoveUselessFrameSchedule.javaAuto-merging admin-service/src/main/java/cn/xxx/admin/model/OpenItemStatusModel.javaOn branch release.1.0.2Your branch is up to date with 'origin/release.1.0.2'.Changes to be committed: (use "git reset HEAD总结下来,就是三部曲:..." to unstage) new file: admin-service/src/main/java/cn/xxx/admin/task/RemoveUselessFrameSchedule.javaChanges not staged for commit: (use "git add/rm ..." to update what will be committed) (use "git checkout -- ..." to discard changes in working directory) modified: admin-domain/src/main/java/cn/xxx/admin/entity/BatchStatusRequest.java modified: admin-domain/src/main/java/cn/xxx/admin/entity/EventEntity.java modified: admin-domain/src/main/java/cn/xxx/admin/entity/EventFrame.java modified: admin-domain/src/main/java/cn/xxx/admin/entity/EventFrameSaveRequest.java modified: admin-domain/src/main/java/cn/xxx/admin/entity/EventQueryRequest.java modified: admin-domain/src/main/java/cn/xxx/admin/entity/EventQueryRespond.java modified: admin-domain/src/main/java/cn/xxx/admin/entity/EventSaveRequest.java modified: admin-service/pom.xml modified: admin-service/src/main/java/cn/xxx/admin/common/OperateTypeConstants.java modified: admin-service/src/main/java/cn/xxx/admin/model/OpenItemStatusModel.java modified: admin-service/src/main/java/cn/xxx/admin/service/impl/AdminServiceImpl.java deleted: admin-service/src/main/java/cn/xxx/admin/task/RemoveUselessFrame.java modified: admin-web/pom.xml modified: admin-web/src/main/java/cn/xxx/admin/config/ApolloConfig.javaDropped refs/stash@{0} (e5d753e8674f1323121a3d26eda2d1ee2f0bade6)➜ jeff-admin-release git:(release.1.0.2) ✗
git stash git pull origin master git stash pop
搞完就可以commit&push了!!!
但如果本地的不想要了,直接就用remote的,那使用以下命令:git reset --hardgit pull
解决冲突
当本地文件与远程文件在某行不一致时,利用git pull更新远程文件就会发生冲突。比如:
➜ my-csdn git:(master) ✗ git pullremote: Enumerating objects: 5, done.remote: Counting objects: 100% (5/5), done.remote: Compressing objects: 100% (2/2), done.remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0Unpacking objects: 100% (3/3), done.From https://codechina.csdn.net/shengqianfeng/my-csdn 9b06705..ef61e48 master -> origin/masterUpdating 9b06705..ef61e48error: Your local changes to the following files would be overwritten by merge: README.mdPlease commit your changes or stash them before you merge.Aborting
由于本地文件README.md修改后并未提交,也没有暂存。所以git pull就会提示先提交本地文件或者放进暂存区。
于是我stash暂存一下,然后再pull,最后pop一下暂存区:
➜ my-csdn git:(master) ✗ git stashSaved working directory and index state WIP on master: 9b06705 mmodify readme➜ my-csdn git:(master) git pullUpdating 9b06705..ef61e48Fast-forward README.md | 1 + 1 file changed, 1 insertion(+)➜ my-csdn git:(master) git stash popAuto-merging README.mdCONFLICT (content): Merge conflict in README.md
提示我README.md文件存在冲突,帮我自动合并了冲突。其实并没有真的合并,需要我们自己vim进去合并,你想git怎么知道究竟怎么取舍冲突的代码呢?只有靠我们自己。
经过一通编辑之后,README.md被我解决了冲突,于是我想提交上去。当执行commit时还是失败了,提示冲突未解决。
➜ my-csdn git:(master) ✗ git commit -m "mmodify readme"U README.mderror: Committing is not possible because you have unmerged files.hint: Fix them up in the work tree, and then use 'git add/rm'hint: as appropriate to mark resolution and make a commit.fatal: Exiting because of an unresolved conflict.
这是因为我们的提交步骤不对,真正的提交步骤是先add,再commit,然后push。搞定!
➜ my-csdn git:(master) ✗ git add README.md➜ my-csdn git:(master) ✗ git commit -m "解决冲突"[master 4a94297] 解决冲突 1 file changed, 2 insertions(+), 1 deletion(-)➜ my-csdn git:(master) git pushCounting objects: 3, done.Delta compression using up to 8 threads.Compressing objects: 100% (2/2), done.Writing objects: 100% (3/3), 310 bytes | 310.00 KiB/s, done.Total 3 (delta 0), reused 0 (delta 0)To https://codechina.csdn.net/shengqianfeng/my-csdn.git ef61e48..4a94297 master -> master
压缩提交记录
有的时候我们会频繁的编辑同一个文件,然后频繁的提交到仓库。这时候git的提交日志记录里就会存在很多条同一个修改点的提交记录,看起来不怎么优雅。此时我们就像能否压缩多次相同修改点的提交记录到一次提交呢?
答案是肯定的。比如:
这里我对我的README.md文件频繁的修改并提交,查看一下git lg记录。于是我想把【e8af689, 6898ff7, 2ed6854】这三个相同的修改压缩一下。
步骤如下:
先执行reset(注意这里一定是soft),然后用git lg查看效果:
git reset 4a94297 --soft
可以看到reset命令把记录给压缩了。但此时我们git pull呢?那就会跟remote对齐,也就是将压缩给回滚,历史记录就会复原。
这不是我们想要的结果,所以reset之后,你就不要git pull了。
还是回到reset之后的状态,可以使用git status去看下本地仓库状态。提示我们的当前压缩后的branch落后于远程仓库三次commits。可以通过git push对齐远程仓库。
这里我就直接提交了,但还是失败了,如图:
提示我们本地分支是落后于远程仓库的。但是我们就是想让应提交的commits压缩掉!怎么办?强制push。搞定!
➜ my-csdn git:(master) git push --forceCounting objects: 3, done.Delta compression using up to 8 threads.Compressing objects: 100% (2/2), done.Writing objects: 100% (3/3), 291 bytes | 291.00 KiB/s, done.Total 3 (delta 1), reused 0 (delta 0)To https://codechina.csdn.net/shengqianfeng/my-csdn.git + e8af689...fa4b40e master -> master (forced update)
转载地址:https://jeffsheng.blog.csdn.net/article/details/77185908 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!