1.本地回滚到某一版本
- 前提是git此时是等待状态
- 查看提交日志
在项目中右键选择查看日志
点击需要回复的版本,查看sha-1值,复制
- 使用,进行回滚,完成
git reset --hard 930439e81091e5423afab6c859aa3e849006e5e1
- 提交到远程仓库
2.查看提交分支信息
- 在项目中打开git,使用如下命令后
git fetch //这个命令将某个远程主机的更新全部取回本地
- 打开TortoiseGit -> Browse References
3. 找到自己的分支
4. 说找到分支后,右键点击show log,可以查看到自己的提交信息。
3. 拉取远程分支到本地分支
-
本例子是拉取远程分支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
4. 切换和查看分支
-
查看本地分支,其中带有“*”的是当前分支
git branch
-
查看本地和远程所有分支
git branch -a
-
切换本地分支
切换到本地分支BBBgit checkout BBB
-
查看远程分支
git branch -r
5. 提交本地分支代码到远程分支
分支过多时,并不会全部显示,使用回车是查看下一个分支,使用q表示退出。
-
查看本地需要提交的代码
git status
红色的文件,就是要提交的代码
-
将文件提交暂存区
可以将.替换为具体的文件(路径和名称)git add .
-
将文件提交到本地库
git commit -m '需要填写的信息'
-
如果是多人开发,需要进行
git pull --rebase
-
查看是否有冲突
git status
-
提交本地分支代码到远程分支
AAA是本地分支,BBB是远程分支git push origin AAA:BBB
6. 放弃本地修改的代码
分为三种情况:
-
未使用 git add 缓存代码时
放弃本地某个文件的代码时:git checkout -- filepathname
放弃本地所有代码,注意下边的"."
git checkout .
-
使用git add缓存代码,未使用git commit
放弃某一个文件
git reset HEAD filename
放弃所有文件,注意下边的"."
git reset HEAD .
-
已经用 git commit 提交了代码。
回退到上一次commit的状态
git reset --hard HEAD^
回退到某一次commit:先使用git log查看,找到某一个commit生成的SHA-1,然后使用命令
git reset --hard SHA-1的值
7. 忽略某些文件,不提交
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
8.查看本地分支跟踪的远程分支
git branch -vv
9.解决git pull --rebase时文件冲突
[1]. 可能使用到的命令
-
git rebase --abort 会放弃合并,回到rebase操作之前的状态,之前的提交的不会丢弃;
-
git rebase --skip 则会将引起冲突的commits丢弃掉(慎用!!);
-
git rebase --continue 合并冲突,结合"git add 文件"命令一起用与修复冲突,提示开发者,一步一步地有没有解决冲突。
[2]. 少量冲突的解决步骤
-
使用git pull --rebase后,会拉取远程代码,如果远程文件与本地文件有冲突,分支名会出现REBASE 1/1
(feature/teaching-referm) =》(feature/teaching-referm|REBASE 1/1)
-
使用git status 查看文件状态,可以看到“未合并的文件”
-
找到使用编辑器打开冲突文件,根据需要进行删除代码,其中的<<<HEAD和======和>>>>>也要删除
<<<<<<< HEAD 这里的代码是本地修改的代码 ============ 这里的代码是远程和本地不一样的代码 >>>>>>>> 39645e0443a07957dae
-
修改完冲突文件使用如下命令,分支名从(feature/teaching-referm|REBASE 1/1)变为(feature/teaching-referm)
注意:使用git add . 有时候并不能将修改后的文件进行添加,需要 git add 具体文件路径和名称。
git add .
-
解决完冲突并合并到分支上
git rebase --continue
-
冲突解决完成,可以进行将代码提交到远程等操作
10.拉取代码前将修改的代码暂时隐藏
-
隐藏已修改的代码
git stash
-
拉取远程代码
git pull --rebase
-
回复原来修改的代码
git stash pop
11. 基于某个分支新建一个分支
-
获取远程库中最新的数据
git fetch
-
基于远程分支BBB创建自己的分支AAA
git checkout -b AAA origin/BBB
-
推送自己的分支AAA到远程库
git push origin AAA:AAA
12.删除远程分支
git push origin --delete [branch_name]
13. 更安全的强推代码到远程仓库
将本地分支AAA的代码强制推送到远程分支AAA上
git push --force-with-lease origin AAA:AAA