git指令
本篇主要记录在实习过程中常用到的git指令
0. 仓库初始化
$ export EXAMPLE_ITEM=$GOPATH/src/code.byted.org/kitex/example_item
$ mkdir -p $EXAMPLE_ITEM
$ cd $EXAMPLE_ITEM
$ git init
-
git clone url 拷贝远程文件到本地
-
git status 查看当前分支,还有文件情况
-
git branch name 创建新的分支
-
git branch 查看所有本地分支
-
git branch -r 查看远程分支
-
git checkout name 转移到新分支(这里注意一下,如果从往上clone的是某一个分支,那么在本地也只能看到这一个分支,但是用checkout的话也是能切换到远程的某个分支的)
-
git add . 把所有要commit的文件更新保存
-
git commit -m “name” commit,并报存备注为name
-
git push 把刚刚commit的东西push
-
git push -f 强制覆盖并push。一般是遇到冲突的时候,暴力解决方式
-
git push --set-upstream origin 新分支名 (切换分支以后需要使用这个指令,才能与新分支建立连接。没使用前未构成连接)
-
git log查看记录
-
git diff 分支 查看与某分支不一样的地方
-
git diff 分支 -U1000 > name 把diff与修改的文件相关的最多1000行写入文件
-
git reset 某个commitID (回到某次commit,把这个commit之后的所有commit恢复成未提交状态,主要用于整合多次commit)(然后重新git add ., git commit -m “”, git push(在确保不影响他人情况下发生冲突可以直接-f))
git reset HEAD~1 往前一个版本,HEAD~2就是往前两个
注意注意!每次merge request之前都合并成一个commit!!!!!!!!!!!!!!!!!!!! 我这次遇到一件事情就是我切了一个分支,我想回到最初始的版本,就是先回到第一个commit, 然后git reset HEAD~1这样就回到初始状态了,然后add ., commit, push就好了
- 强制pull
git fetch --all
git reset --hard origin/master
git pull
-
删除分支
注意一点不要在当前分支删除该分支,比如在dev branch删除dev,这样会报错
git push origin --delete branchName //删除远程分支
git branch -d localBranchName //删除本地分支 (-D强制删除) -
git checkout . 清空工作区所有修改
-
git rebase和git reset的区别:
git reset就是将当前版本回退,但不会修改工作区。如果带了--hard
,例如git reset --hard HEAD~1
参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交。
而rebase也可以做到reset版本回滚的功能,但是他更主要的功能则是让你开出的分支和你开出分支的时间节点后面所有的修改同步到一条时间线上,具体参考:https://www.cnblogs.com/kevingrace/p/5896706.html
-
merge两个分支
a. 先确保分支是最新的,使用git pull origin branchName
或者git pull
b. 切换到分支a,如果想把分支b合并进分支a(b=>a),使用指令git merge b
(把b合并进a里)
c. 需要进行git commit
操作
d.git push
-
git remote -v
查看远端仓库
一组删除重新clone的操作:
a.git remote -v
查看远端仓库 //origin git@xxx (fetch) 复制一下
b.cd ..
前提是你在当前项目下
c.rm -rf projectName
-rf是全部删除并不需要确认
-i 删除前逐一询问确认。
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r 将目录及以下之档案亦逐一删除。
d.git clone xxx
-
grep
grep ‘要找的内容’ xxx
xxx为文件名
grep 'SendActivityExpireMsg Async event:' ecom.marketing.omp.log
grep菜鸟教程 -
cat
cat是unix系统下用来检视档案连续内容用的指令,字面上的含意是“concatenate”(连续)的缩写。除了用来作为显示档案内容外,cat指令也可用于标准串流上的处理,如将显示的讯息转入或附加另一档案上。
cat 文件名
会打印整个文件,cat *.log
则会打印所有log后缀的文件到标准输出(屏幕上)。但是有的时候文件太大则不会打印,这时候可以使用cat filename | grep 'word'
的方式打印特殊关键字word。但是等效于grep 'word' filename
cat菜鸟教程