赞
踩
git clone xxx.git
成功连上github之后,要把本地仓库传到github上去,要设置username和email
git config --global user.name "your name" # github上的用户名
git config --global user.email "your_email@youremail.com" # 邮箱
其他:
(1)查看配置信息
git config --list
(2)遇到ssl问题
git config --global http.sslVerify false
(3)push后,遇到密码错误fatal: Authentication failed for,执行以下命令
git config --system --unset credential.helper
再次push时,会提示输入用户名,密码
注:clone后不需要init初始化操作和关联远程仓库
git init # 初始化
git remote add origin https://github.com/xxx/memory.git # 关联远程仓库
可参考命令
git clone git@github.com:bianpeijiang/design_mode.git //克隆版本库
cd design_mode/
vim README.md //新建一个readme文件
git add . //把当前目录的新建文件,添加版本库跟踪
git commit -m "init" //提交当前分枝的版本库跟踪未提交内容,并设置备注信息为"init"
git push //推送提交内容到远程,这时会报错,提示当前分枝为master,远程为main
git branch -M main //修改当前分枝名称为main
git push -u origin main //推送当前分枝到远程main分枝
git branch # 查看本地已存在的分支,并且在当前分支的前面加 ”*“号标记
git status
git branch -r
origin/HEAD就像一个指针,表示默认分支
git checkout -b develop origin/develop # 即创建本地新分支develop,然后切换到新分支develop
接着在develop当前分支下进行操作,add,commit后,用git push origin develop,意思是推送当前的develop分支到远程origin地址的develop分支上
git branch branchName 创建新分支
git checkout branchName 切换分支
或者
git checkout -b branchName 创建然后切换分支
git checkout .
git branch -d branchname 删除本地分支
现在有两个分支:feature/guangxi_master_declareinit;guangxi_dev
目标:将guangxi_dev上最新的代码合并到feature/guangxi_master_declareinit
结果:修改feature/guangxi_master_declareinit,包含了guangxi_dev上最新的代码,guangxi_dev不变
(1)切换到guangxi_dev分支,拉取最新代码
git checkout guangxi_dev
git pull
(2)切换到feature/guangxi_master_declareinit
git checkout feature/guangxi_master_declareinit
(3)将guangxi_dev合并到feature/guangxi_master_declareinit
git merge guagnxi_dev
不同分支的内容用<<<<<<<,========,>>>>>>>标记
======== 前半部分为当前分支的代码,后半部分为被合并的分支或者远程分支代码,即guangxi_dev
根据需要选择需要保留的代码
(4)处理冲突后git add file,表示冲突已解决,不会自动检测是否还有冲突,主要自己判断是否真的解决了所有冲突,然后就可以git push了
(5)如果想要在git push之前想要放弃这次合并,使用命令
git merge --abort
该命令仅仅在合并后导致冲突时才使用,将会抛弃合并过程并且尝试重建合并前的状态。但是,当合并开始时如果存在未commit的文件,在某些情况下将无法重现合并前的状态,特别是这些未commit的文件在合并的过程中将会被修改时,比如未commit的文件在合并的过程中将会被修改时
使用场景:
提交点B处为主开发分支guangxi_master,从提交点B处拉出一个分支feature/guangxi_master,并在fearure/guangxi_master上做一些新需求的开发,这样就不会影响到主分支guangxi_master,如果这时B处的guangxi_master上有人做了修改,产生了新的提交C,这时,如果想把feature/guangxi_master上新增的代码合并到目标分支guangxi_master最新的改动,也就是提交C时,就会产生合并冲突
解决办法如下:
(1)git checkout guangxi_master # 切换到目标分支guangxi_master
(2)git pull # 拉取目标分支上最新的改动,也就是提交点C
(3)git checkout feature/guangxi_master # 切换回feature分支
(4)git rebase guangxi_master
在feature分支上执行git rebase master,git会从master和featuer的共同祖先B上,提取feature分支(待变基分支)上的修改,即提交点D,然后将feature分支(待变基分支)指向guangxi_master(基分支)的最新提交C,最后将在D处提取的修改连接到到基分支的最新提交C的后面,形成E,这时,
feature/guangxi_master分支上既包含了guangxi_master上别人最新的修改,也包含了自己在feature/guangxi_master上的修改
(5)上一步执行的结果可能会出现有冲突的文件
打开有冲突的文件,冲突的地方已经用HEAD >>>>>> 标注出来,手动修改即可
改完之后,需要使用命令
git add guangxi/sn.ini(出现冲突的文件)
git rebase --continue (继续rebase)
输入message,点击esc ,wq保存
直到将所有冲突的位置修改完
这个过程中,用git status查看状态
需要注意的是rebase会更改历史提交时间,可能丢失上下文,merge更常用
git push origin feature/guangxi_master -f
(1)切换到要覆盖的分支:guangxi_dev
git checkout guangxi_dev
(2)将guangxi_master分支的内容覆盖到guangxi_dev分支
git reset --hard origin/guanxi_master
(3) 覆盖成功后,本地分支guangxi_dev强行推到远程分支origin guangxi_dev
git push -f
(1)查看历史版本
git reflog
查看特定分支的日志
git reflog show guangxi_dev
(2)本地代码回退到指定版本
git reset --hard 版本号
(3)本地代码强制覆盖git服务器代码
git push -f
git push origin master --force
(3)远程分支强制覆盖本地分支
git reset --hard origin/master
git diff guangxi_dev feature/guangxi_dev_financial_110 --stat
有可能就是暂存区包括了.gitignore要忽略的文件,代表忽略的文件被纳入版本控制,.gitignore不能生效
git ls-files
删除某个
删除所有暂存区文件
git rm -r --cached .
git ls-files -s ..gitignore # 查看暂存区gitignore对应的Blob对象
git cat-file -p 6aa18b
git add . # 所有文件建立索引
git reset --soft HEAD^
撤回commit操作,之前写的代码仍然保留
HEAD^的意思是上一个版本,也可以写成HEAD~1
如果你进行了2次commit,想都撤回,可以使用HEAD~2
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。