Git从安装到大师,最全的使用攻略(一)

简介: Git从安装到大师,最全的使用攻略

Vscode中Git下载和安装

以下内容摘自  https://blog.csdn.net/ZER00000001/article/details/127623456?spm=1001.2014.3001.5502

下载地址: Git - Downloads

点击下载64 Git for Windows Setup.

由于篇幅的原因,具体的安装教程可以参考大佬的文章,不过要注意一点!由于我们是要Vscode上使用Git的,所以在安装Editor时要选择Vscode。

安装结束后在任意目录下右键出现如下图所示的两个菜单,那么就说明安装成功了。

Vscode使用Git

使用Vscode+Git可以让我们更方便的使用Git,也可以更直观的将代码的变化(比较)展示出来。

如果你按照正确的步骤安装完Git之后,会发现Vscode中【源代码管理】一栏变得可用了(位于最左边菜单栏中的第三个),这就是我们在VScode中使用Git的场景。

当我用Vscode打开在上文中提到的文本文件时,会发现文件名后面跟了一个字母‘U这表示该文件尚未追踪,说白了,就是在Bash中没有使用add指令添加的意思。

我们打开【源代码管理】一栏,点击文件名后面的‘十’号,发现字母U变成了‘A,表示已经成功add了。这时Vscode会把文件修改的部分直观的展示在我们面前,十分方便。

而当我再一次修改文本时,会发现字母A又变成了字母‘M’,表示我修改了它。

我们再次点击加号添加,然后点击提交,表示我进行了commit。那么既然是commit就一定要有提交信息是吧,我们在新弹出的窗口中的最上边一行写入本次提交的信息,然后在上面的菜单栏的右边,点击一个的按钮,保存更改,表示提交成功了。

这时我们发现菜单栏的高亮消失了。最后我们点击左侧菜单上方的‘···’,会发现我们在上文中学习的指令都在这里打包好了,最后我们点击‘推送’,回到GitHub中发现该文本已经顺利推送了。

Vscode已经将指令封装成按钮了,其他的操作流程,和在Bash中是一样的(所以Bash还是要学滴!),我们同样可以在终端中输入指令实现操作。

Git操作大全

以下内容摘自 https://github.com/k88hudson/git-flight-rules/blob/master/README_zh-CN.md

编辑提交(editting commits)

我刚才提交了什么?

如果你用 git commit -a 提交了一次变化(changes),而你又不确定到底这次提交了哪些内容。 你就可以用下面的命令显示当前HEAD上的最近一次的提交(commit):

(main)$ git show

或者

$ git log -n1 -p

我的提交信息(commit message)写错了

如果你的提交信息(commit message)写错了且这次提交(commit)还没有推(push), 你可以通过下面的方法来修改提交信息(commit message):

$ git commit --amend --only

这会打开你的默认编辑器, 在这里你可以编辑信息. 另一方面, 你也可以用一条命令一次完成:

$ git commit --amend --only -m 'xxxxxxx'

如果你已经推(push)了这次提交(commit), 你可以修改这次提交(commit)然后强推(force push), 但是不推荐这么做。

我提交(commit)里的用户名和邮箱不对

如果这只是单个提交(commit),修改它:

$ git commit --amend --author "New Authorname <authoremail@mydomain.com>"

如果你需要修改所有历史, 参考 'git filter-branch'的指南页.

我想从一个提交(commit)里移除一个文件

通过下面的方法,从一个提交(commit)里移除一个文件:

$ git checkout HEAD^ myfile

$ git add -A

$ git commit --amend

这将非常有用,当你有一个开放的补丁(open patch),你往上面提交了一个不必要的文件,你需要强推(force push)去更新这个远程补丁。

我想删除我的的最后一次提交(commit)

如果你需要删除推了的提交(pushed commits),你可以使用下面的方法。可是,这会不可逆的改变你的历史,也会搞乱那些已经从该仓库拉取(pulled)了的人的历史。简而言之,如果你不是很确定,千万不要这么做。

$ git reset HEAD^ --hard

$ git push -f [remote] [branch]

如果你还没有推到远程, 把Git重置(reset)到你最后一次提交前的状态就可以了(同时保存暂存的变化):

(my-branch*)$ git reset --soft HEAD@{1}

这只能在没有推送之前有用. 如果你已经推了, 唯一安全能做的是 git revert SHAofBadCommit, 那会创建一个新的提交(commit)用于撤消前一个提交的所有变化(changes); 或者, 如果你推的这个分支是rebase-safe的 (例如: 其它开发者不会从这个分支拉), 只需要使用 git push -f; 更多, 请参考 the above section

删除任意提交(commit)

同样的警告:不到万不得已的时候不要这么做.

$ git rebase --onto SHA1_OF_BAD_COMMIT^ SHA1_OF_BAD_COMMIT

$ git push -f [remote] [branch]

或者做一个交互式rebase删除那些你想要删除的提交(commit)里所对应的行。

我尝试推一个修正后的提交(amended commit)到远程,但是报错:

To https://github.com/yourusername/repo.git

! [rejected]        mybranch -> mybranch (non-fast-forward)

error: failed to push some refs to 'https://github.com/tanay1337/webmaker.org.git'

hint: Updates were rejected because the tip of your current branch is behind

hint: its remote counterpart. Integrate the remote changes (e.g.

hint: 'git pull ...') before pushing again.

hint: See the 'Note about fast-forwards' in 'git push --help' for details.

注意, rebasing(见下面)和修正(amending)会用一个新的提交(commit)代替旧的, 所以如果之前你已经往远程仓库上推过一次修正前的提交(commit),那你现在就必须强推(force push) (-f)。 注意 – 总是 确保你指明一个分支!

(my-branch)$ git push origin mybranch -f

一般来说, 要避免强推. 最好是创建和推(push)一个新的提交(commit),而不是强推一个修正后的提交。后者会使那些与该分支或该分支的子分支工作的开发者,在源历史中产生冲突。

我意外的做了一次硬重置(hard reset),我想找回我的内容

如果你意外的做了 git reset --hard, 你通常能找回你的提交(commit), 因为Git对每件事都会有日志,且都会保存几天。

(main)$ git reflog

你将会看到一个你过去提交(commit)的列表, 和一个重置的提交。 选择你想要回到的提交(commit)的SHA,再重置一次:

(main)$ git reset --hard SHA1234

这样就完成了。

暂存(Staging)

我需要把暂存的内容添加到上一次的提交(commit)

(my-branch*)$ git commit --amend


我想要暂存一个新文件的一部分,而不是这个文件的全部

一般来说, 如果你想暂存一个文件的一部分, 你可这样做:

$ git add --patch filename.x

-p 简写。这会打开交互模式, 你将能够用 s 选项来分隔提交(commit); 然而, 如果这个文件是新的, 会没有这个选择, 添加一个新文件时, 这样做:

$ git add -N filename.x

然后, 你需要用 e 选项来手动选择需要添加的行,执行 git diff --cached 将会显示哪些行暂存了哪些行只是保存在本地了。

我想把在一个文件里的变化(changes)加到两个提交(commit)里

git add 会把整个文件加入到一个提交. git add -p 允许交互式的选择你想要提交的部分.

我想把暂存的内容变成未暂存,把未暂存的内容暂存起来

多数情况下,你应该将所有的内容变为未暂存,然后再选择你想要的内容进行commit。 但假定你就是想要这么做,这里你可以创建一个临时的commit来保存你已暂存的内容,然后暂存你的未暂存的内容并进行stash。然后reset最后一个commit将原本暂存的内容变为未暂存,最后stash pop回来。

$ git commit -m "WIP"

$ git add .

$ git stash

$ git reset HEAD^

$ git stash pop --index 0

注意1: 这里使用pop仅仅是因为想尽可能保持幂等。 注意2: 假如你不加上--index你会把暂存的文件标记为为存储.


相关文章
|
2天前
|
Linux Shell 网络安全
Git的安装以及SSH配置
Git的安装以及SSH配置
10 0
|
4天前
|
Ubuntu Linux 网络安全
|
2月前
|
存储 JavaScript 开发工具
Windows 10环境下Git安装之简易指南
该指南教小白在Windows 10上安装Git,介绍Git设置的基础知识,为你的开发项目做准备!
|
4月前
|
Linux Shell 开发工具
git的安装
git的安装
39 0
|
5月前
|
编译器 定位技术 开发工具
分布式版本控制系统Git的下载、安装与使用其复制GitHub项目代码的方法
分布式版本控制系统Git的下载、安装与使用其复制GitHub项目代码的方法
|
5月前
|
Shell 网络安全 开发工具
Git下载安装及基本配置
Git下载安装及基本配置
106 0
|
5月前
|
开发工具 git
hbuilderX安装git插件→拉取线上gitlab项目
hbuilderX安装git插件→拉取线上gitlab项目
|
5月前
|
Shell 网络安全 开发工具
[分布式] Git详细安装与配置
[分布式] Git详细安装与配置
289 0
|
5月前
|
存储 Linux 网络安全
Git - Centos7下安装GitLab服务器
Git - Centos7下安装GitLab服务器
99 1
|
5月前
|
存储 安全 开发工具
快速入门安装及使用&git与svn的区别&常用命令
快速入门安装及使用&git与svn的区别&常用命令
107 0

相关实验场景

更多