前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Git操作备忘录

Git操作备忘录

原创
作者头像
yuann
修改2021-04-12 16:21:02
4580
修改2021-04-12 16:21:02
举报
文章被收录于专栏:one road

一、基本概念:

1.工作区

代码语言:txt
复制
git项目的文件夹

2.版本库

代码语言:txt
复制
.git文件,包括:
	- stage(或者叫index)的暂存区:git add把文件添加进去,实际上就是把文件修改添加到暂存区。
	- master分支:初始化出来的分支。git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
	- HEAD指针:master的指针。

二、常见命令

1.git init

代码语言:txt
复制
在文件目录下执行命令,会将文件夹设置为git仓库,并生成一个.git文件,用于保存本地的提交信息等。

2.git add xxx

代码语言:txt
复制
将文件xxx加入到修改列表中。

3.git commit -m "修改了什么"

代码语言:txt
复制
将add添加过的所有文件一次性提交到”本地“的仓库。只会提交add之后的。
- 例如:如果修改文件a(记做修改1)并add,再修改了文件a(记做修改2)并且没有重新add,此时进行一次commit。那么只有修改1的修改会被提交,但是“本地版本”还是修改2,相当于你在commit之后又修改了。

4.git status

代码语言:txt
复制
查看仓库当前的状态,例如add(有新修改,但是没add)、commit(有add,但是没commit)等状态。git status告诉你有文件被修改过。

5.git diff

代码语言:txt
复制
查看文件xxx和git本地库中的版本的具体差别(多了哪行,缺了哪行这样。这个操作在add之前)。git diff可以查看修改内容。
1.比较工作区与暂存区(branch指定具体分支,可选参数):git diff <branch> <filename>
2.比较工作区与版本库(这里版本库指commit后的状态,<commit>=HEAD 时:查看工作目录同最近一次 commit 的内容的差异):git diff <commit> <filename>
3.比较暂存区与最新本地版本库(本地库中最近一次commit的内容):git diff --cached <filename>
4.比较暂存区与某一版本库(这里版本库指commit后的状态)区别:git diff --cached <commit> <filename>
5.比较版本之间的区别(这里版本指commit后的状态):git diff <commit> <commit>

6.git log (--pretty=oneline)

代码语言:txt
复制
命令显示从最近到最远的“提交”日志。加上被选参数,可以让信息逐行展示。其中包含“提交”版本的id,即<commit>。
git log --graph --pretty=oneline --abbrev-commit:查看分支合并情况。

7.git reflog

代码语言:txt
复制
查看“命令”历史,其中包括此次命令执行后得到的版本的版本号,即<commit>。

8.git reset

代码语言:txt
复制
1.回退版本,将数据回退到“已提交”的某个版本,commit是对应“提交”版本的id,可以通过git log、git reflog获取:git reset --hard <commit>
2.把暂存区的修改回退到工作区,即撤销add操作的影响:git reset <commit> <filename>。操作完之后一般还需要git checkout -- <filename>撤销工作区的修改,这一步不会修改<filename>的内容哦,只是相当于没有进行add,具体表现git status查看对应文件绿色变红色。

9.git checkout -- <filename>

代码语言:txt
复制
在工作区的修改或删除全部撤销,分为两种情况
1.修改:file自修改后还没有被放到暂存区,撤销修改就回到和版本库一模一样的状态;
2.修改:file已经添加到暂存区后,又作了修改,撤销修改就回到添加到暂存区后的状态。
3.删除:文件通过git rm删除了,需要撤销,即可用git checkout -- <filename>。
即变回了最近一次commit(1)、add(2)后或rm(3)前的状态。

10.git rm <filename>

代码语言:txt
复制
从git里删除某文件,执行完之后还需要commit才能生效。

11.git remote add origin git@xxx.git

代码语言:txt
复制
git添加远程仓库,将本地的仓库与之关联。origin是约定俗成的远程仓库的代称。这是整个项目指定关联

11.5.git branch --set-upstream-to=origin/dev dev

代码语言:txt
复制
与远程仓库关联指定分支

12.git push (-u) origin <branch>

代码语言:txt
复制
将本地的分支推送到云端库,其中-u参数在远端是空的时候带上,会把本地的分支和远程的分支关联起来。后续推送就不要带-u了

13.git clone git@xxx.git*

代码语言:txt
复制
从云端将项目搞下来

14.git branch (-a)*

代码语言:txt
复制
查看分支,-a参数会显示云端的

15.git branch <branch>

代码语言:txt
复制
创建branch分支,但不切换到。

16.git switch (-c) <branch>

代码语言:txt
复制
切换分支,-c参数代表切换的同时创建。
也可以用git checkout (-b) <branch>替代,一样的意思。

对于命令git switch (-c) <branch> origin/<branch>,这个命令也叫抓取分支。
按照我的理解,只能是与云端关联了之后(例如11或11.5)才能使用,意思是在本地创建一个分支,同时关联到云端的对应分支。

17.git merge <branch>

代码语言:txt
复制
将branch分支,合并到“当前所在”的分支。

假设dev为要被合并的分支,如果只修改了dev,没动master,执行命令:git merge dev,会启用Fast forward机制,即直接将head指针,指向dev的头部。
如果不想这种情况,执行命令:git merge --no-ff -m "merge with no-ff" dev,会同步dev到master,并且head指针指向master头部。
合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

不太懂,总之意思是合并的时候带上参数。

18.git branch -d <branch>

代码语言:txt
复制
删除指定的branch分支,该分支需被合并过。

如果要丢弃一个没有被合并过的分支,可以通过git branch -D <branch>强行删除

19.git stash

代码语言:txt
复制
保存当前工作区的状态,并且将该工作区的状态变为没有改动。并且可以执行多次,产生多个快照(我觉得叫快照合适?)
即假如修改了a.txt文件,但是这时候要在原基础上修改,那么可以先通过git stash保存下工作区的状态。

20.git stash list

代码语言:txt
复制
在之前保存了的分支上执行命令,将得到之前保存了状态的快照,一般格式是:
stash@{0}: WIP on dev: 8721256 test fff
stash@{1}: WIP on dev: 8721256 test fff

21.git stash pop (stash@{0})

代码语言:txt
复制
其中stash@{0}是选填参数,所以用()扩起来。

返回到对应快照并删除对应的快照,其中stash@{0}是上面list展示出来的。
该命令等同于:git stash aply (stash@{0}):回到某个快照  +  git stash drop (stash@{0}):删除某个快照

22.git cherry-pick <commit>

代码语言:txt
复制
获取一个特定的提交到当前分支,那个提交是在别个分支的,通过commit指定的码唯一确定

23.git push origin <branch>

代码语言:txt
复制
推送分支,就是把指定本地分支上的所有本地提交推送到远程库,本地分支就是这里的branch。

24.git pull

代码语言:txt
复制
假设在dev分支下执行命令,且该分支与origin/dev关联,那么会拉取别人在远程的修改,拉下来之后解决冲突,然后再提交并推送远端。

目前觉得这个命令就在push发生冲突时才有用

25.git rebase

代码语言:txt
复制
TODO

26.git tag -a <tagname> (<commit>) (-m "xxx")

代码语言:txt
复制
创建标签,默认标签是打在最新提交的commit上的。

切换到要打标签的分支,然后执行命令,例如:git tag v1.0,commit为可选参数,如果指定就会把标签打到对应提交记录上(可以是之前提交的)

-a是指定名字,-m指定说明文字,-m也是可选的。

27.git tag

代码语言:txt
复制
查看所有标签,按名称来排序的

28.git show <tagname>

代码语言:txt
复制
查看该次标签的具体信息

29.git tag -d <tagname>

代码语言:txt
复制
删除某个本地标签。

git push origin :refs/tags/<tagname>: 可以删除一个远程标签

30.git push origin <tagname>

代码语言:txt
复制
推送标签到远程

git push origin --tags:一次性推送所有本地标签到远程

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、基本概念:
    • 1.工作区
      • 2.版本库
      • 二、常见命令
        • 1.git init
          • 2.git add xxx
            • 3.git commit -m "修改了什么"
              • 4.git status
                • 5.git diff
                  • 6.git log (--pretty=oneline)
                    • 7.git reflog
                      • 8.git reset
                        • 9.git checkout -- <filename>
                          • 10.git rm <filename>
                            • 11.git remote add origin git@xxx.git
                              • 11.5.git branch --set-upstream-to=origin/dev dev
                                • 12.git push (-u) origin <branch>
                                  • 13.git clone git@xxx.git*
                                    • 14.git branch (-a)*
                                      • 15.git branch <branch>
                                        • 16.git switch (-c) <branch>
                                          • 17.git merge <branch>
                                            • 18.git branch -d <branch>
                                              • 19.git stash
                                                • 20.git stash list
                                                  • 21.git stash pop (stash@{0})
                                                    • 22.git cherry-pick <commit>
                                                      • 23.git push origin <branch>
                                                        • 24.git pull
                                                          • 25.git rebase
                                                            • 26.git tag -a <tagname> (<commit>) (-m "xxx")
                                                              • 27.git tag
                                                                • 28.git show <tagname>
                                                                  • 29.git tag -d <tagname>
                                                                    • 30.git push origin <tagname>
                                                                    领券
                                                                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档