导读
文章内容结构就是每个命令都弄成1个标题,详细讲解每个命令!
之前所有的git命令笔记都不用看了。就看这一篇就行了!
再解释下几个名字的意思
origin: 起源,来源的意思。 我们这边可以理解为远程来源也就是远程的意思!
where git
查看git安装地址
git branch
返回当前分支名
git branch -a
查看当前所有分支。还包括了远程的分支。
-
如下所示
Administrator@DESKTOP-MINGW64 /e/Gitee/doc (master) $ git branch -a dev * master remotes/origin/dev remotes/origin/master Administrator@DESKTOP-MINGW64 /e/Gitee/doc (master) $ git remote -v orgin https://gitee.com//doc.git (fetch) orgin https://gitee.com//doc.git (push) origin https://gitee.com//doc.git (fetch) origin https://gitee.com//doc.git (push)
git branch -r
查看远程(所有)分支
git branch [bname]
创建分支
- 2021年8月5日15:20:35
这个应该有个起点的概念吧。
git branch -d [bname]
删除指定分支
git push --set-upstream [origin] [bname]
创建远程分支并提交上去。
- 2021年7月31日03:36:20
而且这个分支会有之前所有的提交记录!
- 2021年11月28日12:52:45
如 ` git push --set-upstream origin test`
git fetch
git checkout [branchname]
切换分支:切换到指定分支
来自官网文档:
请牢记:当你切换分支的时候,Git 会重置你的工作目录,使其看起来像回到了你在那个分支上最后一次提交的样子。
报错示例
-
修改了同1个文件:切换分支
这边则根本无法切换分支了。我无法从master切换到cs了,那master就不该修改这个文件。
$ git checkout csbranch error: Your local changes to the following files would be overwritten by checkout: csbranchmerge.txt Please commit your changes or stash them before you switch branches. Aborting
-
再度出现,我竟然不记得啊。2021年7月31日03:44:08
我这边必须提交后才能切换分支。
Administrator@DESKTOP-/e/Gitee/doc (dev) $ git checkout rtrecord error: Your local changes to the following files would be overwritten by checkout: MyGitNote.md Please commit your changes or stash them before you switch branches. Aborting
-
就没个人能说清楚吗
我现在又奇怪了,我随便修改个文件不add也不commit,可以随便切换分支啊!
好吧,改了这个文件又不可以。改read.me就可以?
Date:2021年7月31日04:13:26
-
2021年7月31日04:20:14
刚又试了下,确实奇怪。其他的文件都和readme一样就mygitnote这个不行!先这样吧!
-
2、出现这个错误
Administrator@DESKTOP-145BLPE MINGW64 /e//Gitee/doc (dev)
$ git checkout lushangkan
error: Your local changes to the following files would be overwritten by checkout:
MyMongoDbNote.md
Please commit your changes or stash them before you switch branches.
Aborting
git checkout -b [branchname]
它是下面两条命令的缩写
git merge [branchname]
将目标分支合并到当前分支。
- git merger后我git log也就有了它的提交记录了。
报错案例
-
想在1个分支那边merge master分支直接报类似错误吧,让我输出重要信息啥的。
-
2021年7月31日03:58:35 还是刚上面这点,我这边直接截图好了。我这次是master合并分支1没事,合并分支2出现这个。不过这样也好,多1条提交记录显示了我在merge!
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BZx94Jk3-1628566182930)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210731035919787.png)]
git clone [url]
示例:
git clone git@gitee./doc.git
- 2021年7月17日
奇怪,之前一次简单的提交试验,git clone是需要我输入账号密码的。现在都不要并且账号还是174那个号。
- 2021年7月28日22:42:12
那我上次试已经带ssh了吧还是http那边的凭证原因?这边git clone是可以带上用户名密码的。
git clone -b [branchname] [url]
指定分支
git config
全局配置文件地址在
C:\Users\\.gitconfig
中。
# 我这边肯定是要去除--global的 2021年7月17日18:01:57
# 2022年4月26日18:30:05 可以,本地修改了后提交成功了,是替换后的用户(邮箱)了,那不需要全局修改,我本就是单独为这个项目的。注意用户名和邮箱不用双引号
# 运行不报错即执行成功
$ git config user.name 173123965xx
$ git config user.email xxxt@163.com
git config user.name
查看用户名
git config user.name “[username]”
设置本地库的用户命。记住没有等于号。
git config --list
git init
git status
报错案例
1、还是一直有红色的!
Administrator@DESKTOP-MINGW64 /e//Gitee/doc (dev)
$ git status
On branch dev
Your branch is up to date with 'origin/dev'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: MyMongoDbNote.md
no changes added to commit (use "git add" and/or "git commit -a")
Administrator@DESKTOP-MINGW64 /e//Gitee/doc (dev)
$
git tag
说明
列出已有的标签
git add
git add .
- 注意点号前面有空格,不然会报错执行不成功的。
git diff
能查看不同
git remote
列出你指定的每一个远程服务器的简写
git remote -v
-
如果只是git init了1个文件夹,则不产生结果。
@LAPTOP-MINGW64 /d/Disk-D//Files/Doc/Git/Doc (master) $ git remote -v @LAPTOP-MINGW64 /d/Disk-D//Files/Doc/Git/Doc (master) $
git remote add origin [url]
git@gitee./doc.git
执行后,config多了这些内容
[remote "origin"]
url = git@gitee./doc.git
fetch = +refs/heads/*:refs/remotes/origin/*
git show
git commit
报错案例
-
fatal: cannot do a partial commit during a merge.
-
提示无权限
具体报错如下。注意是在commit的时候。我新电脑,没配置过也没登录过git。邮箱及密码确实没设置过。
$ git commit -m '新增2个并修改' Author identity unknown *** Please tell me who you are. Run git config --global user.email "you@example.com" git config --global user.name "Your Name" to set your account's default identity. Omit --global to set the identity only in this repository. fatal: unable to auto-detect email address (got 'Administrator@DESKTOP-145BLPE.(none)')
git checkout [filename]
取消工作目录的修改:直接让变红的准备add的文件变为不变红,则修改内容没了。修改内容没了,做好保存!
- 还必须指定文件名不然还不行报错误。
- 2021年7月25日22:56:45
- 2021年7月29日16:25:19
上面句话不对吧,是让add了但没commit的文件直接取消修改,然后git status看不到痕迹了。
报错示例:
Administrator@DESKTOP-145BLPE MINGW64 /e/Project-study/ep-admin/src/main/java/com/raxtone/flybus/enterprise/admin/mysql/event (5.9)
$ git checkout TestMySQLEvent.java
error: pathspec 'TestMySQLEvent.java' did not match any file(s) known to git
# 2021年7月29日16:30:54 这是我没有add的1个文件,怎么报错了。
原来是必须加-- 不然就是切换分支!
git checkout – [filename]
报错示例
1、pathspec 'xxx' did not match any file(s) known to git
Administrator@DESKTOP-145BLPE MINGW64 /e/Project-study/ep-admin/src/main/java/com/raxtone/flybus/enterprise/admin/mysql/event (5.9)
$ git checkout -- TestMySQLEvent.java
error: pathspec 'TestMySQLEvent.java' did not match any file(s) known to git
git checkout .
add了但没commit的文件直接取消修改,然后git status看不到痕迹了。
注意这个.是当前git下所有的。我cd进入到某个路径下但路径外的还是被操作到了。
git pull
拉取最新远程仓库内容到本地库。
正确拉取后git log就会显示当前远程仓库的所有版本了!
报错案例
-
自动合并提交失败
-
报错
Auto-merging MyGitNote.md
CONFLICT (content): Merge conflict in MyGitNote.md
Automatic merge failed; fix conflicts and then commit the result. -
会进入这种状态: master|MERGING
出现这个错误后会把我这个文件加上冲突标注。其实就是我没及时pull但已经对这个文件修改并提交了,所以得处理冲突达到我能再这个文件的最新1次提交的基础上提交我的改动。
-
-
其他人提交了,我没有pull而是在上个版本下也提交则报错:
我准备先看看直接git pull能不能自动合并的,省的我修改了。结果是不行。。
@LAPTOP-CK8SMRT1 /d/Disk-D//Files/Doc/Git/Doc/doc (master) $ git pull remote: Enumerating objects: 8, done. remote: Counting objects: 100% (8/8), done. remote: Compressing objects: 100% (6/6), done. remote: Total 6 (delta 2), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (6/6), 1.52 KiB | 62.00 KiB/s, done. From gitee./doc 03facb0..e463490 master -> origin/master error: Your local changes to the following files would be overwritten by merge: MyGitNote.md Please commit your changes or stash them before you merge. Aborting Updating 03facb0..e463490
git push
-
如果是码云新建仓库然后git clone下来,最后add,commit 再直接git push就没问题。
-
如果是自己新建1个文件夹,想拉代码下来并添加东西提交上去(到1个已存在的git仓库中)。则是先git init然后git pull。最后git push不好,会报下面实时记录7月25日22:20:49里面的错误。
解决方法:
git remote add origin [url]
url就是远程地址! -
返回403的错误
- 说明没有添加成员。但是我之前竟然还提交成功过,虽然用的是173的ssh,但是那边确实显示了我174的账号了。奇怪的是没有添加成员!
-
提示无分支
提示信息如下,我确实才发现我是用dev分支。远程仓库上是没有的。
Administrator@DESKTOP-145BLPE /e/Gitee/doc (dev) $ git push fatal: The current branch dev has no upstream branch. To push the current branch and set the remote as upstream, use git push --set-upstream origin dev
-
又报这个错误了 2021年7月29日20:46:52
这次我用master提交了啊!
Administrator@DESKTOP-145BLPE /e/Gitee/doc (master) $ git push ssh: Could not resolve hostname https: Name or service not known fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
- 2021年7月25日22:20:49
p啊,上面的论断又是不对了。
我直接1次会话git pull git add git commit然后git push现在报这个错误了:
$ git push
fatal: No configured push destination.
Either specify the URL from the command-line or configure a remote repository using
git remote add <name> <url>
and then push using the remote name
git push <name>
git push -u origin master
git push origin master --force
- 2021年7月25日22:41:59
直接强制推送可还行,不然会报reject错误。
git log
按q退出。
正确拉取后git log就会显示当前远程仓库的所有版本了!
- 2021年7月25日22:43:33
只能查看自己本地库还是远程仓库的所有提交的?
应该是自己的把,应该我可以用git reset --soft HEAD^这个命令来回退,然后git log后就看不到最新的了。
- 2021年7月28日21:12:03
我现在差不多10条记录了,git log命令输入之后也是冒号了啊!
git reset
百度的:
- –soft – 缓存区和工作目录都不会被改变
- –mixed – 默认选项。缓存区和你指定的提交同步,但工作目录不受影响
- –hard – 缓存区和工作目录都同步到你指定的提交
git reset --soft HEAD^
报错案例
- fatal: Cannot do a soft reset in the middle of a merge.
- 2021年7月17日18:49:26
默认不是soft ,我刚才试了直接回退都没了,确实像是Mixed的描述!缓存区清空了。但是我工作目录也变了啊!
git reset HEAD [filename]
- 撤销已add未commit
- 2021年7月25日22:55:29
这个有效,让我1个变绿的文件又变红了。说明已经add进去了的可以不再add进去了。
git rm [filename]
是直接 从工作区删除了,所以git status那边显示让我直接git commit的。
- 2021年7月28日21:16:04
不加参数这边会显示删除了,如下:
lash@LAPTOP-CK8SMRT1 MINGW64 /d/Disk-D//Files/Doc/Git/Doc-/doc (master)
$ git rm README.en.md
rm 'README.en.md'
切换用户
参考这篇文章:https://blog.csdn.net/weixin_30631569/article/details/113413901
知道了ssh和http的区别了!
我原先173的号就是ssh的格式,虽然也让我输入了账号密码,但是我push和pull都是通过ssh来的。config那边是ssh的格式。
- 2021年7月28日22:15:42
我擦,怎么还报下面的错误。我已经把@符号转码后变成了%40了啊。
$ git push
remote: Access denied
fatal: unable to access 'https://gitee.com//doc.git/': The requested URL returned error: 403
实时记录
-
2021年7月17日17:43:54
这个仓库这边写实时记录呀!
-
2021年7月17日19:11:14
ok,初步同步成功!来试一下我这边把上面正文内容改个字看会咋样!
-
2021年7月17日19:12:41
不用试了下,没有多分支,就多用户同分支,只要保持pull好就行了呀!
-
-
2021年7月25日23:01:28
我这个也要及时同步啊!上次试搞了分支的内容。这次是又强化了git init啥时候用及git pull拉取而不是git push啊!我也是晕了。
git push不成功则看是不是没指定远程仓库!
这么说我可以git init1个文件夹在其中git pull很多不同的库,所以才不需要我pull1个就指定这个url为我的remote,我猜测的应该是正确的!
-
2021年7月28日22:43:11
今天又弄了下用户名的问题!又新建了1个账号,总归是能正常提交了啊!
-
7.30
2021年7月31日03:45:23 加深了对分支的理解或者说初探分支!
反正现在基本的分支算是搞懂了。我也觉得我确实应该dev来开发而rtrecord来记录实时记录,待会看看能不能合并吧或者说冲突情况多不多。
反正现在是切换到自己分支改了操作是必须提交的那样确实保证了我不会被覆盖了。当然是保证我自己啊。其他人或者我新clone下来换分支改同文件肯定冲突了。
总之,dev和实时记录应该弄2个分支,2波人马对此不同的修改。我原来想的是就1个分支master,我自己注意2波人马->不同账号对此修改提交,但一来这样提交数很多,二来确实增加了风险,我就1个分支,出现冲突几率大了啊,漏提交的情况也是!所以我认为分支就是将事情分开了,好比现在产品的5.8和5.9不过这2个也不会同时开发!
-
2021年7月31日02:27:48
新建分支cs修改好这个文件,add并commit了。不push。此时查看电脑里文件已经修改后了。
切换到master。不merge直接push。此时查看文件又变成未修改的了。
-
2021年7月31日02:42:31
另外,我如果master修改了同个文件,则根本无法切换到cs分支了,我只能回退我的master的 操作了。然后合并分支再push,并且我git log能看到cs分支的提交记录,push到远程仓库相当于帮它再push。应该就这样了。
-
-
2021年7月31日02:43:50
下面来测试下远程有cs分支的情况。
-
2021年7月31日03:21:03
好吧,我没测试,但我把dev的合并啥的,感觉够了。
反正就是指向的问题。用了分支就得注意合并的问题。
-
-
-
8.5
今天才去官网了啊!下载了这个pdf文档看的我如痴如醉,对git理解更深了!
- 跟svn区别,是无法协同开发了,因为无法提交记录了,而git可以,本地自己commit的!就可以记录下来了!