git pull # 更新到最新代码然后提交。之前公司都不用,只所修改的文件不冲突就可成功提交,现在公司必须要先更新到最新代码然后才可以提交
git add .... # 把工作区的文件提交到暂存区,反向操作用git checkout
git commit -m "........" # 把暂存区的文件提交到本地仓库区,暂存区空空荡荡
git push -u origin master # 提交本地版本库修改内容到远程版本库
之前公司提交之前都不用先git pull,现在新公司每次提交之前都需要先git pull一下把本地仓库代码更新到最新,才能提交成功。这时会有几种情况:
1、本地修改了文件,远程没有修改
不需要提交的用git checkout package/utils/vabs/src/web_home.c这样就能和远程保存一致;需要提交的不用管,git pull更新到最新之后,就可以git add走提交流程了。
2、本地和远程仓库都修改了同一个文件,造成冲突。
例如下面远程也有人修改了internet.c文件,且已经成功提交,自己这版本git pull之后会报下面错误:
leiting@nova-PowerEdge-C2100:~/mt7621_0629/mt7621/mtk-openwrt-lede-4.2.1.0$ git status
位于分支 NOVA7621-LM
您的分支与上游分支 'origin/NOVA7621-LM' 一致。
尚未暂存以备提交的变更:
(使用 "git add <文件>..." 更新要提交的内容)
(使用 "git checkout -- <文件>..." 丢弃工作区的改动)
修改: package/utils/novaRouter/src/internet.c
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
leiting@nova-PowerEdge-C2100:~/mt7621_0629/mt7621/mtk-openwrt-lede-4.2.1.0$ git pull
remote: Counting objects: 11, done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 11 (delta 10), reused 0 (delta 0)
Unpacking objects: 100% (11/11), done.
来自 git.iotnova.com.cn:develop_group3/mt7621
8616e2a..ef3bdcd NOVA7621-LM -> origin/NOVA7621-LM
更新 8616e2a..ef3bdcd
error: Your local changes to the following files would be overwritten by merge:
mtk-openwrt-lede-4.2.1.0/package/utils/novaRouter/src/internet.c
Please, commit your changes or stash them before you can merge.
Aborting
解决方法:
首先进入到internet.c文件夹,把internet.c修改名字为internet_bak.c,
然后执行git pull,
然后最新internet.c文件会被下载下来,用beyond compare工具将自己的修改对比过去,
然后删掉internet_bak.c,
最后编译、验证自己添加的功能是否正常,如果正常就可以走git add流程提交代码。
git pull # 更新到最新版本
git push # 提交代码到远程版本库
git status #
git log #
git diff ... #
git reflog # 显示命令历史
git merge branchname # 合并branchname分支
git rm filename # 将文件从暂存区和工作区中删除
git reset --hard # 回退到本地版本库最新版本
git reset --hard commit号 # 强制回退到commit号指向的版本
git branch # 查看本地分支
git branch -r # 查看远程分支
git branch -a # 查看所有分支
git branch dev # 创建dev分支
git checkout filename # 用暂存区的filename覆盖工作区的filename
git checkout branchname # 切换到branchname分支
git checkout –b branchname # 创建并切换到branchname分支
git commit --amend # 追加提交,只能用在git commit之后git push之前
git commit --amend --only -m 'xxxxxxx' # 修改提交信息
可以用 git log filename
leiting@nova-PowerEdge-C2100:~/mt7621_0629/mt7621/mtk-openwrt-lede-4.2.1.0$ git log package/utils/vabs/html/html/more_page1.html
commit 5def26a44eefc0cc5f9b9e732a0dedb0541dd564
Author: china <1505611406@qq.com>
Date: Mon Jun 27 16:24:09 2022 +0800
fix router_info and page1
commit 68a81e1ae5cba38d39bab22085059fee54d23e72
Author: ting.lei <Ting.Lei@iotnova.com>
Date: Thu Jun 23 14:17:51 2022 +0800
fix web_route_info bug
commit fc300e241152e3e2445060796118219b23ea218b
Author: leoy <leo.yan@iotnova.com>
Date: Tue Jun 14 13:21:10 2022 +0800
Normalize all the line endings
leiting@nova-PowerEdge-C2100:~/mt7621_0629/mt7621/mtk-openwrt-lede-4.2.1.0$
另外,可以用 git blame filename
git blame 可以显示文件的每一行最后修改的版本和作者
回溯版本,git reset --hard + 版本号
再git checkout – file,替换工作区的版本。