git使用教程

配置 git config

$ git config --global user.name "charlie"
$ git config --global user.email "…@qq.com"

* 查看配置
$ git config --global --list

* 忽略文件权限引起的修改
$ git config --add core.filemode false

git查看

* 查看当前分支的历史纪录
$ gitk 或者 git log

* 查看上一次commit的详细修改
$ git log -p -1

* 暂存前查看文件的详细修改
$ git diff filename (统计信息在git diff后面添加--stat)

* 查看某个文件file最后的提交情况
$ git blame -L 1,10 file (-L 1,10 表示范围从1行到10行)

git获取github中的仓库

* 克隆仓库xxx并命名为master_clone
$ git clone xxx master_clone

* 获取项目xxx以及子项目
$ git clone --recursive xxx

  git clone 若出现以下错误时,使用git替代https
在这里插入图片描述

远程仓库

* 显示远程仓库
$ git remote -v

git分支管理

* 创建分支
$ git branch 分支名
* 查看本地分支
$ git branch
* 查看所有(包括远程)分支
$ git branch -a
* 切换分支
$ git checkout 分支名
* 合并分支(将feature分支合并到master)
$ git checkout master
$ git merge feature
* 删除分支(删除本地分支)
$ git branch --delete 分支名
* 删除分支(删除远程分支)
$ git push origin --delete 分支名(remotes/origin/分支名)

本地新建分支提交到远程
git branch A  			// 创建本地分支
git checkout A			// 切换到分支A
git push origin A:A  	// 推送到远程A

分支覆盖
git checkour A  // 切换到分支A
git reset --hard B  // 将分支A使用分支B覆盖

git提交

重新提交:git pull与git pull --rebase

* git pull = git fetch + git merge
* git pull --rebase = git fetch + git rebase

C:远程分支Origin
D:远程分支Origin上,别的同学做了修改并提交了
E:远程分支基础上创建的分支的提交点,已经commit;这个时候E不能提交,提交会导致冲突

在这里插入图片描述
M:git pull, 通过fetch origin分支,并与本地提交合并Merge成版本M
在这里插入图片描述
R:git pull --rebase, 创建一个新的提交,但是将E删除,便于提交的曲线为直线,便于理解
在rebase时可能出现冲突,需要解冲突,然后git add更新内容,不用执行git commit, 直接执行git rebase --continue,在任何时候都能使用git rebase --abort 参数来终止rebase的行为,使得mywork回到rebase之前的E状态

去除中间的提交

* commit id 1
* commit id 2
* commit id 3

// 去除第二次提交
1、git rebase -i commit_id_1
2、在弹窗中对于commit id 2的,将pick改为drop, 保存
3、重新提交

远程更新到本地(团队开发)

远程主分支 a - b(他人已提交)
本地主分支 a - c(本人的修改未提交)
最终远程主分支:a - b - c (本人修改提交后)

* 保存未提交的修改
$ git stash
* 更新本地主分支
$ git pull --rebase
* 恢复未提交的修改
$ git stash pop
* 后续提交: git add .; git commit -m "update readme.md"; git push origin master

cherry-pick & git reset

commit1
commit2
commit3

// git reset
git reset commit3  // 包括commit1, commit2, commit3的修改
git add/commit/push

// cherry-pick 代码被回退后,重新提交使用该方法
git cherry-pick commit3  // 只有commit3的修改
git push

冲突解决

A仓为自己开发,B仓为主线
 git pull --rebase git@gitee.com:****.git master	// 在自己开发的仓下,拉B仓(git@***.git)代码
 git status
 git add . // 解决完冲突后
 git rebase --continue
 	:wq		// 保存弹出的文件
 git push -f origin master   		// 强推到A仓

撤销与回退

* 撤销工作区(git add之前)某个文件(file)的修改
$ git checkout -- file
* 撤销git add
$ git reset HEAD
* 撤销git commit, 不撤销git add;HEAD^:代表上一个版本
$ git reset --soft HEAD^
* 撤销git commit, 撤销git add
* $ git reset --mixed HEAD^

* 回退到历史commit处
1、查看提交的日志,找到需要回退的ID号
$ git log
2、本地回退
$ git reset --hard commit_id(commit字符)
3、远程同步
$ git push origin HEAD --force

其他

git命令可视化练习

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值