Git笔记
Git笔记
操作
git init
touch …
git add . //全都加到缓存区
以下搭配使用:
touch .gitignore
vi .gitignore//gitignore的文件
然后*.a(说明.a文件add时忽略掉,就不在status里面了)
git status //查看修改状态(touch后会提示你将要修改)
git commit -m “add …”
git commit -m “update …”
… //提交缓存区到本地仓库commit
git log //查看提交日志,但是太长了
git-log//查看提交日志
//见相册,更多进阶eg.加–all
vi file01.txt
按insert写完然后esc,最后下面输入:wq//为文件写入内容
clear//清除一下
选中然后按下滚轮实现粘贴,不用ctrl+c,ctrl+v
git reset –hard …//实现版本回退
取消版本回退:git reset –hard…(上一行的)
git reflog //分析原来的,查看已经删除的提交记录
本地提交了只要不删文件夹+clear都丢不了
rm .文件名 //删除某个文件
git branch//查看分支
git branch …//创建新分支,…为分支名 //为本地创建分支
创建新分支后再次提交用git-log查看,发现最新的提交只在master分支
git checkout …//切换分支,…为分支名,head指向的就是当前的分支,类比this指针
git checkout -b …//创建并切换到新分支…
git merge 分支名//合并分支
eg.合并到master前要先切换为master
git branch -d …//删除分支(Git可能认为你是误操作没成功,改为D)
git branch -D …//删除分支(强制删除)
删除dev02分支,需要先切到别的分支
merge之后可能会产生冲突(不同分支修改了同一个文件)
解决冲突:
打开冲突文件修改后add,commit
实际生产:
master->develop->feature
feature在merge之后可以删除,而develop分支不删除
公司发布:release(较稳定版本)
修改bug:hotfix分支,修改后merge到master,merge到develop上去
合并的快进模式:Dev比master提交次数多,git merge后不会有梯形结构,效果一样(就是head->master不是在最上面一行)
使用码云gitee
配置SSH公钥 ssh-keygen -t rsa 最新版git ssh-keygen-t ed25519
然后一路回车
获取公钥 cat ~/.ssh/id_rsa.pub
验证是否配置成功 ssh -T git@gitee.com,再输入yes
本地仓库->远程仓库
1添加远端仓库
git remote add origin 从码云复制的复制的地址
2查看远端仓库
git remote
3推送到到远端仓库
git push origin master//本地代码推至云端(master推给origin)
远端名称 仓库地址
git push origin master:master//本地的master推过去取名也叫master,但由于名字相同,:master可省略
git push -f –set-upstream//-f:强制覆盖,不管本地云端修改是否一致(公司一般禁止-f,怕小白覆盖代码了)
//–set-upstream 推送到远端的同时建立起和远端分支的关联关系(建议在第一次push的时候加上这行)
git branch -vv//查看本地云端配置联系
git push –set-upstream origin master:master
若已经关联(用git branch -vv可查看是否已经关联),只需git push即可
4远端仓库clone到本地
git clone 地址
eg.git clone git@gitee.com:wzhisyourdad/git_test.git 此时桌面生成一个名为git_test的文件夹存放克隆的代码
若写为git clone git@gitee.com:wzhisyourdad/git_test.git hello//此时桌面上生成一个名为hello的文件夹存放
对比下本地和云端clone的代码,发现本地的多了Dev
5抓取和拉取
不会说每次有代码变动就去clone,这样工作量太大了
抓取 git fetch (远端名)(分支名)
抓取指令就是将仓库里面的更新都抓取到本地,不进行合并
未指定远端名,分支名的话抓取所有分支
远程分支也是分支,抓取后再merge
git merge 分支名//合并分支
注.合并到master前要先切换为master
拉取git pull(远端名)(分支名)//等于说合并方法pull=fetch+merge
6解决合并冲突
A,B同时修改同一处的代码,A先改完后推送到远端,此时不知情的B开始修改代码,也推送到远端
此时B需要先fetch再merge/pull//注:fetch完了用pull也不会错
总结:后push的要先pull解决冲突之后再进行push
在Idea中使用Git
C:\Program Files\Git\cmd\git.exe
vcs中Git之后,出现斜向下箭头,√,斜向上箭头。√表示提交,斜向下箭头表示push(自己define remote)