git日常开发/多人开发常用命令
1.本地回滚到某一版本前提是git此时是等待状态查看提交日志在项目中右键选择查看日志点击需要回复的版本,查看sha-1值,复制3. 使用,进行回滚,完成$ git reset --hard 930439e81091e5423afab6c859aa3e849006e5e1.........
- https://www.cnblogs.com/best/p/7474442.html
- https://gitee.com/progit/
1. 拉取远程分支到本地分支
-
将远程主机的最新内容拉到本地
git fetch origin
-
本例子是拉取远程分支BBB到本地新分支AAA,并切换到本地分支AAA。
git checkout -b AAA origin/BBB
这时候就会切换到本地分支AAA,这时拉取的代码并不是远程分支BBB的最新代码,还需要pull一下。
前提:在本地AAA分支git pull --rebase
如果希望在本地创建BBB分支并联系到远程BBB分支。
前提:本地没有BBB分支git checkout --track BBB
从远程分支 checkout 出来的本地分支,称为_跟踪分支(tracking branch)_。跟踪分支是一种和远程分支有直接联系的本地分支。在跟踪分支里输入git push,Git 会自行推断应该向哪个服务器的哪个分支推送数据。反过来,在这些分支里运行git pull 会获取所有远程索引,并把它们的数据都合并到本地分支中来。
$ git pull --rebase
git pull的默认行为是git fetch + git merge
git pull --rebase则是git fetch + git rebase.
$ git fetch
从远程获取最新版本到本地,不会自动合并分支
$ git rebase
git rebase,顾名思义,就是重新定义(re)起点(base)的作用,即重新定义分支的版本库状态。
$ git pull --rebase
git pull --rebase执行过程中会将本地当前分支里的每个提交(commit)取消掉,然后把将本地当前分支更新为最新的"origin"分支
来源:https://www.cnblogs.com/chenjunjie12321/p/6876220.html -
在本地已有的分支中拉取远程分支BBB的代码
前提:已进入到本地需要拉取的分支中git pull origin BBB --rebase
2. 切换和查看分支
-
查看本地分支,其中带有“*”的是当前分支
git branch
-
查看本地和远程所有分支
git branch -a
-
切换本地分支
切换到本地分支BBBgit checkout BBB
-
查看远程分支
git branch -r
3. 提交本地分支代码到远程分支
分支过多时,并不会全部显示,使用回车是查看下一个分支,使用q表示退出。
-
查看本地需要提交的代码
git status
红色的文件,就是要提交的代码
-
将文件提交暂存区
可以将.替换为具体的文件(路径和名称)git add .
-
将文件提交到本地库
git commit -m '需要填写的信息'
-
如果是多人开发,需要进行
git pull --rebase
-
查看是否有冲突
git status
-
提交本地分支代码到远程分支
AAA是本地分支,BBB是远程分支git push origin AAA:BBB
4. 放弃本地修改的代码
分为三种情况:
-
未使用 git add 缓存代码时
放弃本地某个文件的代码时:git checkout -- filepathname
放弃本地所有代码,注意下边的"."
git checkout .
-
使用git add缓存代码,未使用git commit
放弃某一个文件
git reset HEAD filename
放弃所有文件,注意下边的"."
git reset HEAD .
-
已经用 git commit 提交了代码,还没有push。
git reset HEAD~
-
同时放弃本地修改过的文件和 git add 过的文件
#放弃全部 git checkout HEAD . #或者放弃某个文件 git checkout HEAD <file>
5. 忽略某些文件,不提交
https://blog.csdn.net/vichie2008/article/details/45577971
https://jingyan.baidu.com/article/29697b9106e552ab21de3c78.html
-
解决.gitignore无法忽略的文件以及自身被忽略的方法
git update-index --assume-unchanged PATH/FILE
-
恢复被忽略的文件
git update-index --no-assume-unchanged PATH/FILE
6.查看本地分支跟踪的远程分支
git branch -vv
7.解决git pull --rebase时文件冲突
[1]. 默认使用 git pull --rebase 拉取代码
git config --global --add pull.rebase true
[2]. 可能使用到的命令
-
git rebase --abort 会放弃合并,回到rebase操作之前的状态,之前的提交的不会丢弃;
-
git rebase --skip 则会将引起冲突的commits丢弃掉(慎用!!);
-
git rebase --continue 合并冲突,结合"git add 文件"命令一起用与修复冲突,提示开发者,一步一步地有没有解决冲突。
[3]. 少量冲突的解决步骤
-
使用git pull --rebase后,会拉取远程代码,如果远程文件与本地文件有冲突,分支名会出现REBASE 1/1
(feature/teaching-referm) =》(feature/teaching-referm|REBASE 1/1)
-
使用git status 查看文件状态,可以看到“未合并的文件”
-
找到使用编辑器打开冲突文件,根据需要进行删除代码,其中的<<<HEAD和======和>>>>>也要删除
<<<<<<< HEAD 当前git所在分支的代码 ============ 要合并分支的代码 >>>>>>>> 39645e0443a07957dae
-
修改完冲突文件使用如下命令,分支名从(feature/teaching-referm|REBASE 1/1)变为(feature/teaching-referm)
注意:使用git add . 有时候并不能将修改后的文件进行添加,需要 git add 具体文件路径和名称。
git add .
-
解决完冲突并合并到分支上
git rebase --continue
-
冲突解决完成,可以进行将代码提交到远程等操作
[4]. 次分支和主分支合并冲突
-
在次分支中拉去主分支的代码
git pull 主分支名 --rebase
-
根据上边[1]和[2]解决冲突并提交
-
如果提交不上,需要强制提交
git push --force-with-lease origin 本地分支:远程分支
8.拉取代码前将修改的代码存储
在一个分支上存储的代码可以在另一个分支上使用。
-
存储已修改的代码
git stash
-
拉取远程代码
git pull --rebase
-
回复原来修改的代码
git stash pop #等同于下边两个动作 #git stash apply #git stash drop
-
查看存储列表
git stash list
-
如果村里列表有3个已经存储的代码需要 ,现在需要使用第二个存储的代码
git stash apply stash@{1}
-
取消存储
在进行了一些其他的修改后,又要取消之前所应用储藏的修改。git stash show -p stash@{0} | git apply -R
9. 基于某个分支新建一个分支
-
获取远程库中最新的数据
git fetch
-
创建分支
-
方式一:基于
远程
分支BBB创建自己的分支AAA,成功后会自动切换到AAA分支git checkout -b AAA origin/BBB
-
方式二 :以
本地
分支BBB为基础,创建分支AAAgit checkout BBB #切换到本地的BBB分支 git checkout -b AAA #创建并切换到AAA
-
-
写好代码后,可以推送自己的分支AAA到远程库
git push origin AAA:AAA
10.删除远程分支
git push origin --delete [branch_name]
11. 更安全的强推代码到远程仓库
将本地分支AAA的代码强制推送到远程分支AAA上
git push --force-with-lease origin AAA:AAA
12. 删除远程分支的某个文件
删除远程分支的文件或文件夹:https://blog.csdn.net/sunbinkang/article/details/104901064
-
在本地找到要删除的远程分支的文件,将其放置到其他地方(如果本地也不需要,则直接删除)
-
将本次删除暂存区的改动提交
git commit -m 'xxx'
-
提交到远程分支
git push origin 本地分支名:远程分支名
13. 分支拉取错误造成冲突
当需要拉取A分支,却拉成了B分支,可以使用以下方法回退。
-
会放弃合并,回到rebase操作之前的状态,之前的提交的不会丢弃;
git rebase --abort
-
重新拉取代码
git pull origin 远程分支名 --rebase
14.合并两个分支
- 分支hotfix是基于master创建的分支,在hotfix修改完相应的BUG后,需要合并到master分支
-
切换到master上
git checkout master
-
将hotfix合并到master上
git merge hotfix
- 如果分支hotfix需要master在创建hotfix分支之后更新的内容,可以直接在hotfix分支上进行merge
git merge master
15. 查看自己的git操作
引用日志信息只存在于本地——这是一个记录你在你自己的仓库里做过什么的日志。
-
查看引用信息
git reflog
-
查看第五次具体做了什么
git show HEAD@{5}
16. 将文件从暂存区中移除
只从git仓库中移除文件,使git不再跟踪文件
git rm --cached [fileName]
17. 查看远程仓库信息
- 查看所有的远程仓库(运行结果中只有一个远程仓库origin)
git remote
- 看某个远程仓库的详细信息
分支git remote show [remote-name]
feature/fixbug
是基于develop
创建的 (git checkout -b feature/fixbug origin/develop
),分支feature/fixbug
推从到远程的feature/fixbug
(git push origin feature/fixbug:feature/fixbug
)
18. 回退到上一次git 操作
回退到上一次git 操作
git reset --hard HEAD^
回退到某一次操作:先使用git log查看,找到某一个commit生成的SHA-1,然后使用命令
git reset --hard SHA-1的值
19. git 忽略 eslint 的校验
git commit --no-verify -m "commit"
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)