赞
踩
最近因为不会Git,被老板狠狠的骂了一顿,呜呜,
另外如果不在linux 或者非要纯命令行的情况下,建议上手PyCharm内置的Git很好使用.(疯狂打脸)
因为如果你非要用命令行 在合并冲突的时候 还得用VSCode手动合并冲突(或者大神可以用Vim),去分清<<<<<<<<<<===========>>>>>>>>>>>>到底谁是谁,还不如用好现成的PyCharm内置的Git工具.
嘻嘻,谁让我就想摸鱼呢
首先假设我们有一个仓库:
https://gitee.com/zhangsen1607212422/test.git
(这里用个人的私密仓库作为举例)
另外也许有人会报一个错误 什么什么什么 safe.directory的错误(在pycharm 的命令行中)
查看所有的safe.directory :
git config --global --get-all safe.directory
发现safe.directory中没有当前报错的这个文件夹 或者什么都没有(为空)
添加一下当前的文件夹 git config --global --add safe.directory 'xxxxxxxxxx'
然后 再查看一下就有了
当然也可以 清空 整个safe.directory 使用: git config --global --unset-all safe.directory
或者单独去掉某一个文件夹,不再赘述
当然也有个治标也治本的方法: 在c盘用户 用户面下有以哦个 .gitconfig文件,按照下图修改就可以。
有两个分支,其中有一个maser分支
另外一个feature/perf
看不懂 有疑问 不用管 一般公司都会有好几个分支,有已经上线的 还有正在开发的分支
本地分支情况:
一般克隆下来就只有一个master分支
或者命令行中查看分支情况
git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/feature/perf
remotes/origin/master
仔细看 上面命令行红色的是远程分支 绿色和白色是本地的分支
*代表当前所在的分支(是绿色的)
为了模拟正常的工作,我们多创建一个本地分支,可以用命令行 git branch -b xxxxx
或者在PyCharm中
可以发现我们当前所在的分支变成了feature/perf
使用命令 git branch -vv 查看本地分支和远程分支的关系,可以发现本地master和远程的master分支绑定了(蓝色色那一串,仔细看下 origin是远程分支的意思)
为了让在PyCharm Git工具中push 或者pull 的时候不需要每次输入指定的分支路径
我们应该 绑定下 本地分支和远程分支的情况 (或者需要更换绑定关系也需要这个命令)
git branch -u origin/远程分支名 本地分支名
提交版本变化 git commit -m "xxxxx"
Push 到远程仓库 git push origin 远程仓库xxxxx
1就是你拉取的代码后
2在本地上做出了修改
3但没来得及push 远程仓库已经又更新了(别人push了新的版本)
相当于你落后远程的版本了
或者是每当你完成一个功能,准备push 时候, 你开发用了10年 这个时候别人都不知道push 多少个版本了, 你又舍不得自己完成的功能 很想也push上去
假设这10年别人push到远程好几个新的版本 最终修改了这三个文件和你本地不同
或者说不是习惯,而是必须要做的,而且要勤pull ,这样不至于落后太多版本
还是和上面一样点 蓝色的朝左下的箭头 然后选择合并
冲突解决完了, 再次进行一下 commit 和push
我明明已经在 .gitignore 中声明过了,但是远程还有那个文件? 一般是因为 这些文件依然被track(也就是被git add 追踪)
可以查看哪些被track了: git ls-files
可以 只删除这些track文件 gittrack文件 : git rm --cache xxxx
当然也可以连本地的(如果目前还有这个文件夹)也删除了: git rm xxxx
如何是一个目录: git rm -r --cache xxxx
删完以后,还要进行一次 git commit
可以使用命令添加,或者直接动在 .git/config
文件里添加。
比如一个项目同时关联一个 Github
仓库和一个 Gitee
仓库,添加一个 remote
就是了,比如:
- [remote "github"]
- url = https://github.com/rdif/xxxx.git
- fetch = +refs/heads/*:refs/remotes/github/*
- [remote "gitee"]
- url = https://gitee.com/xxxx/xxxx.git
- fetch = +refs/heads/*:refs/remotes/gitee/*
- [remote "all"]
- url = https://github.com/rdif/xxxx.git
- url = https://gitee.com/xxxx/xxxx.git
- fetch = +refs/heads/*:refs/remotes/all/*
或者 使用命令:git remote add 远程分支的本地代名词 远程仓库URL
比如 git remote add github https:xxxxx.git
也就是说后面的URL在本地的代名词是 github,后面 push 的时候 可以使用命令:
git push 远程分支的本地代名词 本地分支名字:远程分支名字
比如 git push origin main :master 这里 origin 只是远程分支的代名词
上面添加了多个远程仓库 以后就可以 git push github
main: master
这样当我们提交代码的时候,想提交到 Github
就用 git push github master
,想同时提交到 Github
和 Gitee
的仓库,只需要 git push all master
即可,这里master 是远程分支名字
- # 删除本地 test 分支
- git branch -d test
- # 删除远程主机的 master 分支
- git push origin -d master
- # 查看记录,找到对应的 hash值
- git reflog
- # 创建test分支,并取对应hash分支所有内容,相当于恢复了被删除的分支
- git checkout -b test hash值
- # 把本地的 master 分支重命名为 test
- git branch -m master test
-
- # 远程分支没法直接重命名,只能删了重建,主要分几步
- # 1. git push origin -d test 删除远程分支
- # 2. git push origin newtest 上传新的远程分支
- # 3. 把修改后的本地分支关联远程分支
- git branch -u origin/远程分支名 本地分支名
-
- 还不如直接去网页直接修改
这个就不建议用命令行了
如果用pycharm 的话: 只能对比当前的修改,和前面 某一个版本的对比
步骤4时候选一个 要和本地对比的版本 5.选择对比这个功能
接着就可以对比了:
假设你对刚才commit 的内容有一次很小的更改,但你不希望历史记录中出现关于当前代码的多次记录,你可以使用下面的命令这些更改合并到前一次提交中
git commit --amend -m "新的提交信息"
拉取某个分支的内容:
git pull <远程主机名> <远程分支名>:<本地分支名>
git stash
常用于把修改储存起来,需要的时候再取出来。常用于:
- # 存储并添加备注,方便查找
- git stash save '备注信息'
-
- # 查看储存列表
- git stash list
-
- # 取出储存中最近一次的修改并删除储存记录
- git stash pop
-
- # 取出储存中的指定部分修改,stash@{0} 0是默认的不写也行,是啥只要查看储存列表你就知道了
- git stash apply stash@{0}
-
- # 删除指定储存
- git stash drop stash@{1}
-
- # 删除所有的储存
- git stash clear

有时候比如我们在 test 分支上开发了一半,由于某些原因需要切换到 master 分支,但现在又不想提交,又想保留修改并且不带到 master 分支上去,就可以这样:
- # 把当前分支的修改储存起来
- git stash
- # 切换到其他分支干你的事
- git checkout master
- # 干完了
- # 切换回 test 分支
- git checkout test
- # 取出储存中所有的修改
- git stash pop
- # 删除所有的储存
- git stash clear
有的时候我们需要在 test 分支上开发,但是忘记了,活快干完了才发现当前原来是 master 分支,可是已经开发了,这时候就需要切换分支到 test,并且把已经开发的部分内容也从 master 分支带到 test 分支来,就可以这样:
- # 储存master的修改
- git stash
- # 切换到 test 分支
- git checkout test
-
-
-
- # 取出储存中的全部修改
- git stash pop
-
-
-
-
- # 或者查看储存列表
- git stash list
- # 取出储存中的指定部分修改,stash@{0} 是啥只要查看储存列表你就知道了
- git stash apply stash@{0}
- # 再清掉储存
- git stash clear

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。