git config --global user.email johndoe@example.com
$ git config --list
首先要在码云上新建一个仓库
1,打开git bash命令行
2,用cd找到要作为上传文件夹的路径,进入,例如cd D:/360安全浏览器下载/上传码云文件
3,git init初始化,会在本地创建一个.git文件夹
4,git remote add origin https://gitee.com/zhanghaoxuan1/software.git,添加远程仓库
5,git clone git@gitee.com:/zhanghaoxuan1/software.git,将码云上的仓库克隆到本地文件夹
或者可以将远程仓库的pull下来git pull origin master
6,进入到要上传文件的文件夹中,同时把要上传到码云上的文件添加到这个文件夹中去,执行git add .命令,把文件保存到缓冲区中
7,然后使用git commit -m ‘新添加的文件内容描述’,添加文件描述
8,git push origin master,将本地仓库推送到远程仓库
git和远程仓库连接,打开本地项目的目录,打开bash.exe,执行下面命令,可以连接远程,并将远程的拉下来,同时将本地的强制推送到远程
git remote add origin git@github.com:YotrolZ/helloTest.git
git pull origin master --allow-unrelated-histories
git push -u origin master -f
首先要在码云上新建一个仓库
1,打开git bash命令行
2,用cd找到要作为上传文件夹的路径,进入,例如cd D:/360安全浏览器下载/上传码云文件
3,git init初始化,会在本地创建一个.git文件夹
4,git remote add origin https://gitee.com/zhanghaoxuan1/software.git,添加远程仓库
5,git clone git@gitee.com:/zhanghaoxuan1/software.git,将码云上的仓库克隆到本地文件夹
或者可以将远程仓库的pull下来git pull origin master
6,进入到要上传文件的文件夹中,同时把要上传到码云上的文件添加到这个文件夹中去,执行git add .命令,把文件保存到缓冲区中
7,然后使用git commit -m ‘新添加的文件内容描述’,添加文件描述
8,命令git push -u origin master第一次推送master分支的所有内容;
之后可以使用git push origin master,将本地仓库最新修改推送到远程仓库
使用git常见的一些错误
1,如果使用git status,出现了modified new commits,是因为那个目录下有新的commit,解决方法:
使用git diff,出现
-Subproject commit 9ea1cebe3dc529ba3861d87c818f045362c40484
+Subproject commit 04ab7af68536ac2c80fd6c08a6fd3620d3409891
然后cd到那个目录
Git reset --hard 9ea1cebe3dc529ba3861d87c818f045362c40484
然后看git status 就干净了
2,如果使用目录是红的,说明你可能把文件管理器中的文件删除了,那么工作区和版本库就不一致了,可以使用git status,来查看哪些文件被删除了
此时有 两个选择,
第一个从版本库中删除该文件,git rm 文件名,并且git commit -m "remove 文件名"
第二种是可能删错了,因为版本库中还存在,所以可以用版本库中的代替工作区中的,git checkout -- 文件名
3,如果Git此时已经commit了,push之后发现push失败了,因为有超过了100m的文件,所以此刻要先查看最近的提交git log,然后依次撤销commit,git commit commit_id,然后删掉本地超过100m的文件,重新提交
Git 版本回退:
命令:
git log,查看提交历史,可以确定回退到那个版本
git reflog 查看命令历史,来确定回退到未来的那个版本
git reset --hard HEAD^ 回退到前一个版本
git reset --hard commit_id,回退到commit_id的历史版本
git 分为工作区和版本库
工作区就是你本地的目录,版本库又分为暂存区和各个分支
版本库就是你执行git add .要去的地方,把文件添加到了版本库的暂存区中,执行git commit -m '',就把文件从暂存区移到master分支了,此时暂存区为空
撤销修改
1,当你改乱了工作区的某个文件的内容,或想回到暂存区的内容时,想直接丢弃工作区的修改时,用命令git checkout -- file
2,当你不但改乱了工作区的某个文件的内容,还添加到暂存区时,想丢弃修改,git reset HEAD file,此时回到1了,然后按1操作
3,已经提交了不合适的修改到版本库时,想要撤销本次提交,可以用版本回退,git reset --hard commit_id
推送到远程库,就没办法了
git创建分支并切换分支,仔细讲解:https://www.liaoxuefeng.com/wiki/896043488029600/900003767775424
git checkout -b dev,这个命令标识创建dev分支,并切换到dev分支
-b 就相当于创建并切换
相当于:git branch dev和git checkout dev
用git branch 可以查看当前分支
然后用dev分支操作,提交到版本库中
然后切回master分支,git checkout master,发现刚刚dev分支修改的没变,所以合并dev分支,就是把master指向dev的那个节点,git merge dev
然后就可以删除dev分支了,git branch -d dev
查看分支:git branch
查看全部分支:git branch -a,红色的是远程的分支
创建分支:git branch name
切换分支:git checkout name或git switch -c name
创建+切换分支:git checkout -b name 或 git switch -c name
合并某分支到当前分支:git merge name
删除本地分支:git branch -d name
删除远程分支:git branch -r -d origin/branch-name , git push origin :branch-name
如果git在本地有一个分支,在远程没有,可以git push --set-upstream origin branch_name这个命令可以在将本地的修改push到远程的branch_name的分支,同时在远程创建一个branch_name分支,以后在push都会自动跟踪这个分支了
如果git在远程有一个分支,本地没有,可以git checkout --track origin/branch_name,这个命令可以自动在本地新建一个并进行跟踪
解决冲突:https://www.liaoxuefeng.com/wiki/896043488029600/900004111093344
当git无法自动合并分支时,需要先解决冲突,解决完冲突之后,在提交,合并完成
解决冲突就是把git合并失败的文件手动编辑为我们希望 的内容,在提交
用git log --graph可以查看分支合并图
git log --graph --pretty=oneline --abbrev-commit,简化之后的分支合并图
分支管理策略:
通常合并分支,可能git会用fast forward模式,但这种模式,删除分支后,会丢掉分支信息
如果要强制禁用fast forward 模式,git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息
就是用 --no-ff方式的git merge
git switch -c dev
git add readme.md
git commit -m 'add merge'
git switch master
git merge --no-ff -m 'merge with no-ff' dev,因为本次合并要创建一个新的commit,所以要加上-m参数,把描述写进去
git log --graph,可以查看分支合并图
在实际开发中,master非常稳定,用来发布新版本
在dev分支上干活,我的小伙伴每个人都在dev分支上干活,都有自己的分支,时不时的网dev分支上合并就可以了,要发布正式版本的时候,把dev分支合并到master上
git远程的修改了,本地的也修改了同一个文件,会有冲突,如何解决了?
首先将本地的git stash存到暂存区
然后git pull origin master 将远程的拉下来
最后git stash pop,将暂存区的放出来
执行git status,发现会有冲突文件,可以手动把冲突的文件进行修改,合并
执行git add 和git commit 和git push origin master,到远程
如果不想提交到远程,可以git-resolve-conflict 可以这样,在pycham中的项目中点击git,会有resolve conflict这个,可以进行合并
git push <远程主机名> <本地分支名>:<远程分支名>
git撤销本次commit:如果出现more,这是因为cmd的默认换行符是,所以可以^或者使用~,或者"HEAD ^"
1,git reset --soft HEAD^ 撤销本次commit ,HEAD~2是撤销两次commit,不撤销add工作空间代码不删,默认的
2,git reset --mixed HEAD^ 撤销本次commit和add,工作空间代码不删
3,git reset --hard HEAD^ 撤销本次commit和add,删除工作空间代码,恢复上一次commit状态
4,commit注释写错,git commit --amend
5,撤销本次add , git restore --staged 文件
升级pip
python -m pip install -U --force-reinstall pip
git add -i 进入交互模式
git add -u 文件,要上传更新,删除的文件
stash暂存,如果你想要在dev分支开发,但是确在master开发了,那么可以把master上的代码stash起来,然后切换到dev分支进行应用
git stash apply 不会从栈里面删除
git stash pop 会从栈里面删除
git stash apply stash@{2}
git stash drop stash@{0}
git stash apply --index 不会让add过的文件重新回到未被暂存的状态
git stash apply --keep-index 可以只暂存我们没有add到暂存区的内容,如果不加这个,会把没有commit的内容全部stash
git clean -df 删除当前目录下没有add的文件
git reset HEAD // 还原所有修改
git reset HEAD filename // 还原某个文件
git rm filename // 删除文件,并添加到缓存中
git rm --cached filename // 删除缓存中的文件,但是保留工作区中的文件
git fetch 拉取服务器的最新修改
git push origin 本地分支:远程分支
git fetch origin 远程:本地分支
git pull origin git Test --set-upstream 绑定本地和远程的分支
git stash save ‘’
git stash apply stash{0}
git stash pop