参考Git,PPT来源黑马Git(B站有资源),还有参考莫凡大佬
获取信息:git config --list --show-origin
获取名字:git config user.name
直接在一个空的文件夹使用Git bash here创建一个本地仓库(版本库):git init
工作区(Working directory)
基本的 Git 工作流程如下:
1.在工作区中修改文件。
2.将你想要下次提交的更改选择性地暂存,这样只会将更改的部分添加到暂存区(索引)。
3.提交更新,找到暂存区的文件,将快照永久性存储到 Git 目录(ppt中的本地仓库)。
下面都是在git bash窗口下运行:
显示本地仓库的所有文件:ls -a
windows打开仓库中的文件(eg:打开.git):start .git(就会打开git这个文件夹了)
本地仓库创建一个空文件(eg:创建1.py):touch 1.py
查看仓库提交状态:git status
把工作区的py文件添加到暂存区中:git add 1.py
把刚刚到暂存区的文件(bush显示modified)提交到本地仓库:git commit -m"create 1.py"(m后面是写提示信息)
一、记录修改
查看提交(commit)的记录:git log
如果再对1.py进行修改的话,就变成了下图的从unmidified到了modified,要再次git add(修改后的文件都必须先git add再commit)到暂存区再git commit 到本地仓库…
查看修改后与commit的不同:git status -s
接着上一条语句输入:git diff可看修改和之前修改的区别内容
把所有文件都添加到暂存区:git add .
若add到暂存区输入git diff 看不到与上次的区别,这里要输入:git diff --cached
(非暂存区状态,unstated)若你上次add到暂存区还没commit又修改的话,那么他就是MM(一红一绿)了,看修改此时用:git diff HEAD
把所有的东西commit:先git add . 再git commit -m"提示"
二、回到从前
查看提交(commit)的记录(简洁版):git log --oneline
参考:莫凡Git回到从前
三、分支管理
参考:https://mofanpy.com/tutorials/others/git/branch/
查看提交(commit)的记录(简洁版+前面带个*):git log --oneline --graph
- 方法1(手动切换分支)
建立另一个分支 dev(自己命名的):git branch dev
查看有多少个分支:git branch(有*的代表你正在使用的)
切换到dev分支:git checkout dev
删除dev分支:git branch -d dev(前提要切换到master分支(git checkout master))
2.方法2(自动切换分支)
直接创建和切换到新建的分支:git checkout -b dev
因为当前的指针 HEAD 在 dev 分支上, 所以现在对文件夹中的文件进行修改将不会影响到 master 分支.
此时对dev进行修改:一键式(add+commit):git commit -am “提示内容”(前提有文件add了)
现在再切换到master:git checkout master会看不刚刚再dev的修改的
我们的开发板 dev 已经更新好了, 我们要将 dev 中的修改推送到 master 中, 大家就能使用到正式版中的新功能了.(合并后只是master变了,dev分支还是不变的)
首先我们要切换到 master, 再将 dev 推送过来.:git merge --no-ff -m “提示信息” dev1
再输入:git log --oneline --graph 可看到merge的图线
四、merge分支冲突
今天的情况是这样, 想象不仅有人在做开发版 dev 的更新, 还有人在修改 master 中的一些 bug. 当我们再 merge dev 的时候, 冲突就来了. 因为 git 不知道应该怎么处理 merge 时, 在 master 和 dev 的不同修改.当创建了一个分支后, 我们同时对两个分支都进行了修改.
此时直接在master合并(git merge dev)会报出CONFLICT错误,要手动文件并删除》》》…也可以修改<<<到>>>的内容,此时为modified要add +commit:直接用:git commit -am “solve conflict(提示)”
五、rebase 分支冲突
六、临时修改 (stash)
来自:https://mofanpy.com/tutorials/others/git/stash/
就是modified后还没add+commit就要处理别的事情用的,处理完别的事情再回来stash处理之前的事
从stash中拿出来:git stash pop
七、Github
在本地仓库的名字可以和github创立的仓库名可以不一样
1.1、以http上传代码到github某个仓库:
要输入github账户和密码
git remote add origin https://github.com/github账户/git_demo(github仓库名).git #(github直接复制就行,见上图)
git push -u origin master # 推送本地 master 去 origin
git push -u origin dev # 推送本地 dev(自己创的分支) 去 origin(没有该分支可以省略)
若你此时在master(git checkout master
)上修改1.py时,修完后git commit -am “change 2 in master(提示)”,再push到github:git push -u origin master(interesting)(github上可以看history可以看修改的区别内容)
1.2、利用http克隆到本地
在你的电脑想要放的目录打开Git Bash here在输入下面:
git clone https://github.com/账号/git_demo.git(打开Github仓库的CORE有这个码)
2.SSH
把本地文件推送到github时:ssh要公钥和私钥(GUI才要),https要github的账号密码
设置ssh公钥私钥啥的:随便在一本地仓库打开Git bash here输入:ssh-keygen -t rsa然后一直回车生成:
然后把公钥复制进github(setting)中的ssh就行。
2.1、利用ssh把代码放到github
代码和上面http差不多
git remote add origin git@github.com:账户/tishi.git(去github复制)
git push -u origin master # 推送本地 master 去 origin
git push -u origin dev # 推送本地 dev(自己创
2.2使用SSH把代码克隆下来到自己电脑
git commit -m “xxxx” 文件名
git commit -m "xxx"不指定文件名的话,会把你暂存区所有的文件都commit上去。
克隆一份代码到本地仓库:
1.ssh:首先打开github把要下载代码的ssh码复制下来,打开一个本地空文件夹输入:
在你的电脑想要放的目录打开Git Bash here在输入下面:
git clone 粘贴(右键paste)刚刚的ssh码
-
使用git命令拉取指定分支:
命令:git clone -b develop 远程网址
其中develop就是分支的名称 -
如果本地的分支跟远程的分支不一样,则指定本地和远程的分支的名称:
git push origin(远程仓库名) localBranchName:remoteBranchName(没有就会新建)
pull操作(参考:1)
-
1、将远程指定分支 拉取到 本地指定分支上:
git pull origin <远程分支名>:<本地分支名> (和push相反)
-
2、将远程指定分支 拉取到 本地当前分支上:
git pull origin <远程分支名>