Git工作流程
克隆仓库,创建本地分支
git clone [仓库地址]git branch test # 创建test分支git branch -a # 查看所有分支信息创建并检出到该分支
git checkout -b 本地分支名-
git status
查看尚未暂存的文件更新了哪些部分(查看当前没有add 的内容修改)
git diff查看已经add 但还没有commit 的改动
git diff --cached 提交改动
git add .git commit -m"描述改动内容"然后再检查提交情况
git log [filename] #可以看到fileName相关的commit记录git log -p [filename] #可以显示每次提交的diffgit show commit-id [filename] #只看某次提交中的某个文件变化,可以直接加上fileName推到远端
// 将当前 loca_name 分支 push 到远端,命名为 new_name$ git push <远程主机名> <本地分支名>:<远程分支名>去gitlab检查构建是否成功,然后提PR ;并删除本地分支和远端分支
查看分支信息
查看当前处在哪个分支(所有本地分支)
$ git branch查看所有分支(包括远程和本地)
$ git branch -a
查看所有远程(remote)的分支
$ git branch -r查看所有分支的最后一个提交(commit)
$ git branch -va
查看远程分支的最后一个提交(commit)
$ git branch -vr
新建分支
从当前分支新建一个分支,但依然停留在当前分支 (常用于:对当前分支做个备份)
$ git branch [branch-name]从指定远程分支,拉一个本地分支,并切换到该分支
// 常用于:从远端 develop 拉一个 本地 feature/xxx 分支$ git checkout -b newBrach origin/master
删除分支
- 当我们删除一个合并(merge)后的分支可以用git branch命令带参数
-d
|
- 如果分支已经有了新的提交且没有被合并(merge),那么将被提示错误信息,如果仍旧要删除这样的分支,你需要使用参数
-D
|
远程操作
|
通过git rebase修改commit message
首先将远端你需要修改的分支拉倒本地,如果你的本地已经不存在这个分支了,执行命令:
git checkout -b 本地分支名 远端分支名首先通过
git log
查看日志 然后找到需要修改message的那个commit的前1个commit id,比如id为c13c5f309deda4b34082811c4626b7ebbe790f9a
, 执行下面命令:git rebase -i c13c5f309deda4b34082811c4626b7ebbe790f9a之后进入到下面,会提示出很多不同命令:
然后进入编辑模式,将右上角的
pick
改为reword
,退出编辑模式,保存之后h会来到下面界面(如下图),然后就可以修改你的commit message了保存退出后再在执行
git log
进行检查一遍,没有问题之后执行git push -f
,这样就修改成功了。
other:
git config -l # Git config命令查看配置文件
解决冲突
从远程仓库里拉取一条本地不存在的分支:
|
|
解决冲突完成之后
|
如果报错:You must edit all merge conflicts and then mark them as resolved using git add 执行
|
修改 message
|
放弃本地修改
|
GitHub 的 Pull Request 是指什么意思?
- 当你想更正别人仓库里的错误时,要走一个流程:
- 先 fork 别人的仓库,相当于拷贝一份,相信我,不会有人直接让你改修原仓库的
- clone 到本地分支,做一些 bug fix
- 发起 pull request 给原仓库,让他看到你修改的 bug
- 原仓库 review 这个 bug,如果是正确的话,就会 merge 到他自己的项目中。至此,整个 pull request 的过程就结束了。
问题整理
error: unpack failed: unpack-objects abnormal exit
原因是git库权限的问题,解决方案:在git库目录下执行
sudo chown -R获取git线上仓库代码报这个错误:
zhangzhi@moke:~/code/ktsg-api$ git pullYou have not concluded your merge (MERGE_HEAD exists).Please, commit your changes before you can merge.错误可能是因为在你以前pull下来的代码没有自动合并导致的.
有2个解决办法:
1.保留你本地的修改,合并后记得一定要提交这个本地的合并然后在获取线上仓库
git pull
git merge --abortgit reset --merge2.down下线上代码版本,抛弃本地的修改
不建议这样做,但是如果你本地修改不大,或者自己有一份备份留存,可以直接用线上最新版本覆盖到本地
git fetch --allgit reset --hard origin/mastergit fetch