Git命令行操作
本地库操作
版本前进后退
查看git记录
$ git log
$ git log --pretty=oneline
$ git log --oneline
$ git reflog
多屏显示控制方式:
空格 向下翻页
b 向上翻页
q 退出
-
基于索引值操作【推荐】
$ git reflog $ git reset --hard edd61f9
-
使用^: 只能后退
$ git log --oneline $ git reset --hard HEAD^^^
-
使用~: 只能后退
$ git log --oneline $ git reset --hard HEAD~3
删除文件找回
-
永久删除文件后找回:删除操作已提交到本地库
$ git add . $ git commit -m "commit aaa" $ rm aaa.txt $ git add aaa.txt $ git commit -m "delete commit aaa" $ git reset --hard edd61f9
-
添加到暂存区的删除文件找回:删除操作未提交到本地库
$ git add . $ git commit -m "commit aaa" $ rm aaa.txt $ git reset --hard HEAD^
比较版本差异
$ git diff 比较多个文件
$ git diff aaa.txt 比较工作区与暂存区的文件
$ git diff HEAD aaa.txt 比较工作区和本地历史纪录的文件
分支管理
创建分支
$ git branch [分支名]
查看分支
$ git branch -v
切换分支
$ git checkout [分支名]
合并分支
1.切换到接受修改的分支上(被合并分支)
$ git checkout [分支名]
2.执行merge命令
$ git merge [分支名]
解决冲突
1. 编辑文件,删除特殊符号
2. 把文件修改到满意程度
3. $ git add [文件名]
4. $ git commit -m "日志信息"
远程库操作
查看关联的远程仓库
$git remote -v
关联远程仓库
$git remote add origin 远程仓库的ssh origin是仓库别名
将master分支上commit的文件push到origin远程仓库
$git push origin master
克隆文件/项目
$git clone 想要克隆文件的ssh
克隆意味着
1. 完整的把远程库下载到本地
2. 创建origin远程地址别名
3. 初始化本地库
拉取
1.pull = fetch + merge
$git fetch [远程地址别名] [远程分支名]
$git merge [远程地址别名/远程分支名]
解决冲突
1.如果不是基于GItHub远程库所做的修改,不能推送,必须先拉取
2.拉取下来如果进入冲突状态,按照“分支冲突解决”操作解决即可
push文件示例
首先你的状态应该是在某一分支上进行修改或开发,在你完成了修改或是开发准备提交代码的时候,你需要先保证你是在最新的代码上做的更改,才不会跟提交过的文件产生冲突
(这里警示我拉代码的仓库和提代码的仓库不是一个)
- 更新代码
$git status 查看你目前代码的状态 $git stash save "我存的文件" 将修改放入暂存区 $git checkout develop1 切到develop1分支上 $git pull upstream develop1 将别名为upstream的远程仓库develop1分支上的代码拉取到你本地develop1分支上 然后你的develop1分支上,就是最新的代码啦,这时候你要把最新的代码放到你的开发分支上 $git rebase feature1 将develop1分支上的代码rebase到你的开发分支feature1上 如果这时候出现冲突就需要解决(显示err啥啥啥) 在本地解决冲突 $git add 冲突的文件名 $git rebase --continue 如果继续冲突就继续解决(右边括号里是进度),直到冲突解决完 (没有冲突,或者解决完冲突后,你的开发分支上代码代码也是最新的) $git stash list 显示暂存区列表 $git stash apply xx编号 从暂存区取出你的修改 xx编号-> 一般是stash@{0},你找跟你msg对应的,比如我存的就是“我存的文件”
- push代码
$git status 查看代码的状态 $git reset HEAD 文件名 把已add但又不想提交的文件拉回来,变成未add的状态 $git add 文件名 提交单个文件 add你想提交的文件 $git add . 将所有未提交的文件提交 $git commit -m "msg" commit文件,并将msg作为本次提交的文字记录 $git log 查看一下msg的格式(按Q退出) $git push origin feature1 push文件(feature1分支的commit提交到origin远程仓库里) $git push -f origin feature1 强制push
跨团队协作
fork—>本地修改–>push到本地仓库—>pull request—>审核代码—>merge