200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > Git 高频命令 版本回退 分支操作 文件修改删除 撤销 标签 远程仓库推送 拉取

Git 高频命令 版本回退 分支操作 文件修改删除 撤销 标签 远程仓库推送 拉取

时间:2018-12-12 07:27:01

相关推荐

Git 高频命令 版本回退 分支操作 文件修改删除 撤销 标签 远程仓库推送 拉取

1. 高频命令

git add

将工作文件修改提交到本地暂存区。

git add .

将所有修改过的工作文件提交暂存区(常用)。

git commit -m "XXX"

为本次修改打一个 tag,当然此条命令通常跟在git add后使用。每次commit都会有一个对应的 tag,当打包发布时,往往我们会打对应 tag 的版本。所以 tag 是一次有意义记录,它是和某次git commit绑定对应的。

git push origin branch_name

将本地branch_name分支推到远程branch_name分支。

git branch -d branch_name

删除本地分支branch_name注意:删除本地分支时,当前所处分支不能是要删除的该本地分支)。

git branch -D branch_name

强制删除本地分支branch_name(如果branch_name分支当前修改的内容没有暂存,那么只有强制删除有效)。

git push origin --delete branch_name

删除服务器端分支branch_name

git pull origin branch_name

拉取服务器端branch_name分支的内容并合并到本地branch_name分支(一般来说,多人共用一个分支时,如果你有需要提交到服务器的内容,则要先用此命令更新本地分支的内容,然后再将新的内容提交到服务器)。

git fetch origin branch_name

拉取服务器端branch_name分支的内容,但不合并。此操作一般是不确定远端代码是否存在问题,为保险起见,可先拉取到本地查看,确认无误后,和合并此代码到本地的对应分支下。

git merge origin/branch_name

将服务器端branch_name分支合并到本地当前分支下。

git merge branch_name

将本地 branch_name 分支合并到本地当前分支下。

git checkout -b branch_name origin/branch_name

如果本地没有branch_name分支,想要基于服务器端branch_name分支创建一个,但又不想影响到本地的当前分支。可以使用此命令进行本地branch_name分支的创建。

git branch

查看本地存在分支。

git branch -a

查看所有本地关联到的分支(远端分支也能打印出来,但是关联如果没有建立,那么是不会显示的,此时我们可以使用git fetch拉下来所有分支。)。

git status

查看当前分支的状态,一般合并分支代码后,用于检查是否有冲突。

git reset --hard

回退到commit id提交的版本,仅对已经commit到本地的代码有效

git checkout

该命令是对未提交到缓存区的代码进行撤销。例如本地修改代码之后,在没有执行 git add 命令之前又想撤销操作,可以执行该命令。

git reset HEAD --

该命令是将放入暂存区的代码进行撤销,放入到工作区中。

git config user.name "提交者的名称"

配置当前仓库下提交者的名称。

git config user.email "邮箱"

配置当前仓库下提交者的邮箱。

git config --global user.name "用户名"

配置全局提交者的名称。

git config --global user.email "邮箱"

配置全局提交者的邮箱。

git config --global --list

查看我们的配置

2. git merge 和 git rebase

git mergegit rebase使用场景

git merge一般用于新功能的开发和 bug 修复;git rebase在主分支上进行开发,或者 Pull 的冲突解决;git merge主要是在主分支上进行使用,而 git rebase 是在从分支上进行使用。

git mergegit rebase区别:

git merge会生成新的commit,而git rebase不会生成新的commit,会保留比较完整的提交历史。git merge是按照时间顺序进行合并,而git rebase是将 主分支顺序不变,插入到从分支的前端。

git rebase注意事项: 如果分支已经Push到了远程仓库就不要对该分支进行git rebase操作。如果已经提交到了远程分支再进行Push的时候容易出现冲突,我们可以采用git push --force,但是最好是永远不要使用这个命令。

3. 与远程服务器交互命令

添加远程服务器:

git remote add branch_alias(别名) /ccod_project/dcmsstatics4-5git.git

查看远程服务器的相关信息:

git remote -vgit remote show branch_alias

重命名远程仓库信:

git remote rename demo test

删除远程仓库:

git remote rm test

注:由于远程库是空的,我们第一次推送master分支时,加上了-u参数,git不但会把本地的master分支内容推送到远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

之后,只要本地作了提交,就可以通过命令把本地master分支的最新修改推送至 github

git push branch_alias master

从远程仓库获取数据:

git fetch origin develop --- 只是获取远程仓库的数据至 .git 目录,并未merge本地git merge origin/develop --- 把获取的远程仓库的数据手工merge至当前分支git pull origin develop ---- 获取远程仓库的数据,并自动merge至当前的分支,相当于以上两步

4. 版本回退

git中,用HEAD表示当前版本,也就是最新的提交commit id,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上 100 个版本写 100 个 ^ 比较容易数不过来,所以写成HEAD~100

回退到上一个版本 :

git reset --hard HEAD^

回退到上上一个版本 :

git reset --hard HEAD^^

回退到上 N 个版本:

git reset --hard HEAD~N(N 是一个整数)

回退到任意一个版本:

git reset ––hard 版本号

丢弃工作区的修改(撤销):

git checkout -- file

删除文件:

正确操作:git rm file git commit -m “remove file”(文件被删除)操作失误:git checkout -- file(文件被恢复)

5. 分支相关

查看当前分支

git branch (-a)

新建分支

git branch develop(只是新建了一条分支,并未切换)

切换分支

git checkout develop

新建并切换分支

git checkout -b feature(相当于3.10和3.11两步操作)

删除分支

git branch -d feature(注意:不能删除当前所在分支)

合并分支(–no-ff参数,表示禁用Fast forward):

git checkout develop && git merge feature(把feature分支合并到develop分支)

注:

因为我们创建git版本库时,git自动为我们创建了唯一一个master分支, 所以默认git commit就是往master分支上提交更改。

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

建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name

汇总:

查看分支:git branch,git branch -r 查看远程服务器上有多少个分支创建分支:git branch 分支名称(Develop)切换分支:git checkout 分支名称(Master)合并分支:git merge 分支名称删除分支:git branch -d 分支名称(删除本地分支),git push origin --delete 分支名称 (删除远程服务器的分支)

git branch 分支的名称 创建新的分支git branch 分支名称 commitId 在指定 commitId 基础上创建分支git checkout 分支的名称 切换分支git checkout -b 分支的名称 创建新的分支并切换到该分支上git checkout -b 分支名称 commitId 在指定 commitId 基础上创建分支并切换到该分支git branch 查看本地所有的分支git branch -a 查看本地和远程所有的分支。git branch -m 原来的名称 新的名称 修改分支的名称修改远程仓库分支的名称修改远程分支的名称需要我们先将远程分支删除。然后修改本地分支名称。最后将本地分支名称提交到远程仓库。git push origin 分支名称 将分支推送到远程仓库中。git branch -d 分支名称 删除本地仓库分支git push origin --delete 分支名称 删除远程仓库分支。

6. git log 命令

git log 查看当前分支所有提交历史记录。git log --all 查看所有分支的提交历史记录git log --oneline 查看简洁提交历史记录git reflog 查看所有分支的所有操作记录 (包括被删除的commit 操作记录)后面会介绍到。git log -n2 查看最近2次提交的历史记录git log -p -2 最近两次提交差异显示git log --pretty=oneline 查看简洁提交历史记录

7. git 删除修改文件

git rm + git mv 命令介绍git rm 文件名称 从工作目录中删除该文件并且本地不保留。git rm --cached 文件名称 从版本控制中删除该文件,但在本地保留该文件(相当于将文件从暂存区撤销到工作区中)git mv 原来名称 新的名称 更改文件名并提交到本地仓库 (暂存区和本地仓库文件)本地仓库需要再次执行 commit 提交。

8. git 帮助

你可能觉得 Git 命令这么多,记不住啊。没事,学会下面 3 个命令,快速帮你进行回忆操作。

git help展示经常使用命令的介绍。git help 具体操作命令对具体命令操作的介绍 会打开默认游览器进行查看具体命令介绍。git 具体操作命令 -h对具体命令操作的介绍 例如 git commit -h ,git add -h。

9. git 撤销

当你完成工作将文件提交到工作区或者暂存区甚至本地仓库后,你才发现提交的内容有问题。当你抓耳挠腮想着"怎么办,怎么办”的时候,不如看看下面命令,也许会帮助到你哦。

git chekout --文件名称 将工作区的文件撤销到缓存区中(前提是该文件已经执行过 git add 操作。)git reset 文件名称 或 git reset HEAD 文件名称 将暂存区的代码撤销到工作区中。git reset --hard 要切换 commit 的记录id 丢弃所有历史记录并将更改返回到指定的提交历史上git reset --hard 执行的时候是比较危险的,它的危险之处是如果你的文件还未 commit 执行 git reset --hard 可能导致文件无法进行恢复的。如果已经 commit 我们可以通过 reflog 来找回它。

下面还有3个比较有意思的命令:

git reset --soft HEAD^:将最新的提交的记录还原到到暂存区git reset --mixed HEAD^:将最新的提交的记录还原到工作区git reset --hard HEAD^:将最新的提交的记录全部清除

10. 历史记录对比命令介绍

git diff --cached | git diff --stage 暂存区和最新提交内容比较git diff --文件名 工作区和暂存区内容的比较。git diff commitId1 commitId2 --文件名 查看不同历史提交文件内容的不同git diff 分支1名称 分支2名称 比较分支1 和分支2 提交文件内容的不同。

11. 远程仓库推送、拉取操作命令介绍

git push 将本地分支的更新推送到远程仓库中。git fetch 从远程仓库中获取最新的内容 但是不会执行合并的操作(git merge)git pull 从远程仓库中获取最新内容并且合并到本地仓库中,相当于 git merge + git fetch 的操作

12. git 分支合并操作

git merge 分支名称

git merge <branch name>git merge 一般我们都是主分支合并从分支比较多。

git rebase 分支名称

和 git merge 的操作方式是一样的,不过一般 git rebae 主要是用来将主分支合并到从分支的操作中比较常见。后面我们会介绍 git merge 和 git rebase的区别。

git rebase 和 git merge 的区别

git merge 会生成新的 commit,而 git rebase 不会生成新的 commit,会保留比较完整的提交历史。git merge 是按照时间顺序进行合并,而 git rebase 是将 主分支顺序不变,插入到从分支的前端。

git merge 和 git rebase 使用场景:

git merge 一般用于新功能的开发和 bug 修复;git rebase 在主分支上进行开发,或者 Pull 的冲突解决;git merge 主要是在主分支上进行使用,而 git rebase 是在从分支上进行使用。

git rebase 注意事项:

如果分支已经 Push 到了远程仓库就不要对该分支进行 git rebase 操作。如果已经提交到了远程分支再进行 Push 的时候容易出现冲突,我们可以采用 git push --force,但是最好是永远不要使用这个命令。

13. 标签种类的介绍

Git 标签分为 2 种。

轻量标签(lightweight)

轻量标签 一般是用于临时的标签 ,轻量标签仅仅记录了commit 的信息。

附注标签(annotated)

附注标签 记录的信息更为详细 它包含了创建标签的作者 创建日期 以及标签信息。一般建议创建附注标签。

Git 标签操作命令介绍

git tag 标签名称 创建轻量标签**git tag -a 标签名称 -m '标签注释' ** 创建附注标签,一般建议使用附注标签。git tag -a commitId 指定 commitId 创建标签git tag 和 git tag --list | git tag -l 查看所有的标签。git tag -l 'v*.0' 查看以 v 开头和以 0 结尾的所有的标签git show 标签的名称 查看标签的具体信息git ls-remote --tags 查看远程仓库的标签列表git push origin 标签名称 将标签推送到远程仓库中。git push origin --tags 提交本地所有的标签到远程仓库git tag -d 标签名称 删除该标签git push origin :refs/tags/标签名称 删除远程仓库的标签。

14. git 最好不要使用的危险命令

git reset --hard

这个命令之切换不同的历史记录,危险之处在于如果添加的工作内容没有执行 commit,执行 git reset —hard,那么这些没有 commit 的工作内容有可能丢失。

git commit --amend

git rebase -i git commit --amend 和 git rebase -i 都可以用来修改我们的 commit 并不会产生新的 commit,但是这个修改操作必须是在你还没有推送远程仓库前去执行。因为通过这2个命令进行修改虽然不会产生新的 commit,但是我们的 commitId 会发生变化,我们在推送的时候会报Note about fast-forwards,如果想将你的修改推送只能使用强制推送 git push -f 操作,这样会强制将你的历史版本覆盖到远程仓库。当然别人的提交历史也会被覆盖掉。

git push -f

上面我们已经说了 执行该操作会强行将自己本地仓库历史版本覆盖到远程仓库的历史版本。这样别人提交的历史版本信息会丢失掉。

我这里所说的最好不要使用也不是很绝对哈,危险命令的危险在于你不了解它的危害就胡乱操作。当我们知道它们的注意事项,这些危险命令有时候对我们是有利的。例如我们创建了几个提交并且没有将其提交到远程仓库,我们完全可使用 git reset --hard 将我们不像要的 commit 丢弃掉,可以通过 git commit —amend 和 git rebase -i 对我们已提交的 commit 进行修改。但是 git push 这个操作是千万不要执行的。

文章参考来源:

/books/5cb7dc185e228a2b9d502831/index.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。