git常用命令

C:\Program Files\Git\etc\gitconfig
C:\Users\vaynexiao\.gitconfig

git config -l # 查看全部信息
git config --global --list  # 只看关键信息
git config --global user.name "vaynexiao" # 设置username
git confgi --global user.email "qqmail" # 设置email
# 这些信息都在C:\users\vaynexiao\.gitconfig文件中,局部配置优先全局配置

git init 
# 本地新建项目需要在本地文件夹中git init初始化,告诉git这是一个项目的根目录,会创建一个.git文件夹,记录版本变更信息,但一般不会这么做,接手新项目要么clone远程仓库,要么idea直接新建,不会自己新建文件夹

在远程建立git项目
new-建立项目- 生成链接  https://github.com/zhangsan/remotename.git

第一次发布项目 (本地-远程)
git add .      # 将所有受控制文件-暂存区
git add hello.html # 只添加 hello.html 到暂存区
# 暂存区,就是为了将多次提交积攒到一起,然后依次commit,这样提交次数就少了很多,显得很有条理,不琐碎
git rm --cached a.txt # 从暂存区移除
git commit -m "注释内容"  # 暂存区所有文件 到当前分支
git log # 查看提交日志

git clone https://gitee.com/vaynexiao/gitstudy.git # clone下载一个现成的项目,clone得到的项目会自动产生关联

git pull
远程仓库对应分支 与 本地仓库当前分支 合并(注意是本地仓库,commit之后的本地库),
本地新增文件与本次操作无关,仍然还在,远程仓库新增文件会下载下来,
有冲突文件会git pull失败,没有冲突的切有差异的会合并到本地
如果git pull dev时,本地当前分支是master,那么这两个分支会合并

git pull origin dev # 拉取 origin 的 dev 分支代码,origin类似就是一个远程项目的简称,然后dev指定分支

clone & pull
clone是本地没有repository时,将远程repository整个下载过来。
pull是本地有repository时,将远程repository里新的commit数据(如有的话)下载过来,并且与本地代码merge。(=fetch+merge)

git status # 查看当前所有已跟踪文件修改状态
git status filename

git rm *.xml # 删除全部xml文件(此时并不是把文件删了,而是放进暂存区,想彻底删除需要commit)

git branch # 查看所有本地分支,并注明当前使用分支
git branch dev # 新建本地分支dev,远程要提交后才生效
git branch -a # 查看所有本地和远程的分支,并注明当前使用分支(-v v表示再把sha1值查出来)
git branch -d dev #删除本地dev分支
git branch -r # 查看所有远程分支

git remote -v # 查看远程库全部信息
untitled1       https://github.com/vayneXiao/untitled1.git (fetch)
untitled1       https://github.com/vayneXiao/untitled1.git (push)
git remote # 只查看远程库简写名字(一般是origin,这里我直接自定义项目名为untitled)
untitled1
# 关联远程项目 并起名为 upstream
git remote add upstream https://github.com/springframeworkguru/springbootwebapp.git
git remote -v    # 查看远程仓库地址
git remote rm origin # 删除远程仓库origin的地址

git branch dev # 新建分支dev
git checkout dev  # 切换本地分支到dev
git checkout -b new_name # 以上2步骤,创建新分支并切换到新分支可以合并为一句


git push origin dev # 推送本地当前分支变化 到 远程仓库origin的dev分支,没有该分支则新建
#(git push -u origin dev -u代表啥?也是相同作用?不写似乎也行)

git branch gde4.6 # 再创建一个分支
git push --set-upstream origin gde4.6 # 另一种push分支到远端方法,注意:分支名不能变
git push -u origin master # 后期不用 -u 空目录默认不提交(直接 git push 默认是提交当前分支)

git branch -d name # 删除本地指定分支(不能是当前分支,比如删除 a 分支,当前可以切换到b分支)
git push origin --delete dev # 删除远程 origin 地址的 dev 分支
 

 分支命令

需要注意的是,如果xxxx分支中有一个独一无二的文件d,其他分支中都没有d,此时删了就真的没法复原了,
出于安全考虑,这种“未合并”内容存在的话不允许删除分支,必须先处理,也就是合并。
git merge xxxx 此时将分支xxxx合并到master,也就是同样把d文件删除
合并后再进行git branch -d xxxx 此时分支xxxx才会删除,还是为了安全考虑多了这么一步保险操作
如果忽略未合并文件,强行删除 git branch -D xxxx  D表示强行删除
细节:
1,在分支a中进行了增删改操作,但没有commit,在master中可以看到该操作;
    如果进行了commit,master视角就看不到该操作。(增删改操作,共同性质就是写操作)
2,在分支a中进行了增删改操作,但没有commit,在master中可以看到该操作;
    此时master中可以直接删掉分支。
通过以上现象可以得出结论:不归git管的文件,不管进行什么操作,哪怕是删除分支,他还是不管的。

远程有分支dev2,本地没有
1,git checkout -b dev2 origin/dev2(检出分支dev2,且切换到dev2,然后关联origin/dev2)
2,git checkout -b dev2 --track origin/dev2(作用同1,--track表示跟踪origin/dev2)
3,git checkout --track origin/dev2(作用同2,不写-b dev2,会默认本地分支名与远端分支名相同)

git branch -m oldname newname 本地分支重命名
git status 查看本地所有文件的修改情况

在master git merge dev 意思是将dev合并到master
但是,人生不如意之事十之八九,合并分支往往也不是一帆风顺的。

以下???
git fetch 远程主机名 将远程主机全部更新取回本地
git fetch 远程主机名 分支名 将远程特定分支取回
最常见的,比如
git fetch origin master
取回本地后回返回一个fetch_head

git pull等于
git fecth origin master
git merge FETCH_HEAD
完整写法为git pull 远程主机名 远程分支名 本地分支名
如果远程分支与当前分支合并,冒号后面可以省略为
git pull origin next

# Idea中修改分支名字
先删除远端分支,右下角点击本地分支名,Rename,然后push时选择远端对应分支名(对应的分支,不一定名字一样)
 

idea 

将本地目录交给git管理:VCS选中项目文件夹创建为git仓库,新文件为褐色
(不进行这一步右击项目不出现git选项,但项目文件夹事直接clone下来的,
就会自动关联远程项目,remote URL 就不需要自己配置)

add:Git - add 绿色
commit:Git - commit 目录  黑色
越过add直接commit: Git - Commit Directory - Commit
Push:Git - Push Define Remote 填写自己github的项目地址,并起一个名字,一般默认origin也可以自定义
 (push之前一定要在github创建对应的仓库)
越过add直接一次性commit和push: Git - Commit Directory - Commit and Push

commit后未push修改massage:idea - 左下角Git - 找到对应commit - 右击Edit Commit Massage 

idea 可以在git tab直接修改之前提交的commit message
 

 

.gitignore

 *.class
*.iml
*.log
.idea/
.jar
.war
/target

SSH Key

本地生成一个ssh,远程仓库粘贴进去,这样就不用每次输入密码了,相当于搭了一座桥,本质等于一个密码,这样每次提交就对比两地的ssh key,相同就可以运行命令,这不就等于“第二密码”吗,就是个密码。
输入ssh-keygen -t rsa -C xxx@qq.com 一直回车。
现在本地生成的文件在C:\users\vaynexiao.ssh文件夹下(id_rsa,id_rsa.pub)
在github页面 - settings - SSH and … - New SSH - title任意设置、key中输入 刚才在本地生成的ssh:
将本地刚才生成的id_rsa.pub内容复制到远程的Key中
id_rsa本地密码
id_rsa.pub远程密码
测试连通性:
ssh -T git@github.com

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值