git必备使用命令及其演示实例。
查看版本:git --version
姓名和邮箱是作为版本提交时开发者的用户名和邮箱地址。
设置全局用户名和邮箱:
$ git config --global user.name testName
$ git config --global user.name testEmail
查看全局用户名和邮箱:
$ git config --global user.name
$ git config --global user.name
会保存在用户家目录的.gitconfig文件里。
查看用户名邮箱:$ cat ~/.gitconfig
清屏:按住ctrl按l
打开编辑文件:vim 文件路径
退出编辑::q
退出编辑(强制退出不保存)::q!
退出编辑并保存::x或者:wq
git初始化方式:
1,mkdir demo;cd demo;git init
2,git init demo
使用ssh安全方式连接代码仓库,需要输入用户名和密码。可以使用ssh密钥对实现无密码登陆ssh服务器。在拉取和推送代码时可不用输入用户名、密码:
ssh密钥对生成:
$ ssh-keygen -t rsa -C '邮箱号@qq.com'
查看密钥文件位置,在用户根目录的.ssh文件夹下:$ cd ~/.ssh
.pub的是公钥文件,需上传到服务器的安全公钥key列表里面(可由运维人员添加):
git是分布式版本控制器,克隆的是全部代码在本地仓库。比svn的所有代码只在服务器中安全。
git控制版本的几个步骤:
1,本地仓库。
1)创建文件,未跟踪状态untracked
2)git add ./a.txt 把文件加入到使用git版本控制new file
3)撤销加入git控制:git reset HEAD a.txt
4)加入好版本控制后提交到本地仓库:git commit -m ‘本次修改说明’
5)撤销提交本地仓库:先找到提交的id:git log 是所有日志。
或者使用:git show 查看最近一次提交本地仓库日志:
或者看前两条日志:git log -2 。按q退出日志。
然后:git reset --hard baa40030(版本id)
可以重新提交:修改了a.txt git add . git commit -m 'update a.txt add text bbbb'
git log -2
git status
6)推送本地仓库提交的版本到远程仓库:git push
7)远程基于master创建一个分支test:
在本地随意在哪个分支上拉取:
都可以获得远程仓库新分支信息。
8)查看当前所在分支:git branch
9)本地创建分支(实际是基于当前所在分支创建的新分支):
10)切换本地分支到本地test分支:
git push 此时,是本地有test分支,远程也有test分支。会报错:
按照提示操作:
$ git push --set-upstream origin test
①上面是远端创建了一个分支,本地没有先拉取并切换到远端的分支到本地分支的情况。[其实也是可以的,最终以远端的分支为准来跟新,会加入本地的新代码内容]
下面再来远端创建新分支test3:
然后,本地随意哪个分支拉取:git pull
直接切换即可:git checkout test3
test2是新本地创建的分支未推送到远程仓库过。
可以用git pull拉取,查看远程是否真的没有:
也可以用git push,查看远程是否真的没有:
确实没有。
11)把本地新分支推送到远程仓库并创建分支:
$ git push --set-upstream origin test2
12)test分支有t.txt
master分支没有t.txt:
假如别人提交了新代码到master分支。ma.txt
把新分支test中的新文件t.txt合并到主分支master:
先切换到对应分支,在对应分支使用merge,把merge后面的分支合并过去
这即是把开发的分支合并到主分支去发布了。
13)如果master分支修改了a.txt:
切换到test分支时,自动提示了:
test分支打开看也是确实自动修改了:
按理本来应该在其它分支是不会对a.txt修改的。这个现象先留给你研究是为啥?
也在test分支也修改了a.txt:
答案如下:
在master把修改的内容提交推送了:
$ git commit -m 'master second update a.txt '
再切换到test分支查看a.txt:
发现没有变化,说明这就对了。之前切换过来自动变了,是因为之前的修改没有提交,并不清楚修改的内容会记录在哪个分支。[实际上只需要修改内容提交本地仓库就不会在其它分支出出现]
此时在test分支修改a.txt
提交到本地仓库:
此时推送到远程仓库的test,然后远程在master合并test时会发生冲突,效果等同于此刻在本地就把test合并到master一样。
为了解决冲突,可以先在本地把mater合并到test来。
解决冲突:在提示冲突的时候,直接cat对应冲突文件名查看
手动处理,以谁的修改为准,调整好后,保存:
修改为这样:
保存退出,再来git merge master报错:
那是因为刚刚修改了没有提交,记得每次修改后都需要提交本地仓库:
提交了之后就不用再merge了,因为刚才就是在merge并解决冲突并提交了。
直接推送:git push
有时本地的某个分支很久没未使用,现在需要使用,提交/推送发现冲突。可以先删除本地分支:
get branch -d test3
本地test3不在了,即使git pull也是一样:
没有关系,直接git checkout test3,远端分支就到本地来了:
至此,git必备使用命令及其实例演示完毕。每个地方都是手动敲打的。流程设计也是根据实际情况来操作的。在现实公司里会用到的流程。如果有没看懂的地方,接下心来,跟着流程一步步走,多看几遍,自然明白。
最后感谢大家点赞,赏赐,交流,有什么都可以在评论区交流。