Git工作流程和常用命令分享

Git工作流程和常用命令分享,第1张

git是一个分布式版本控制软件,最初由林纳斯·托瓦兹创作,于2005年以GPL发布。最初目的是为更好地管理Linux内核开发而设计。林纳斯·托瓦兹在编写第一个版本时就使用了“git”这个名称, 他将工具描述为“愚蠢的内容跟踪器”。

[上传失败(image-c23291-1619063471664)]

四个专有名词:

Workspace:工作区

Index / Stage:暂存区

Repository:仓库区(或本地仓库)

Remote:远程仓库

打开本地生成的git隐藏文件

创建新项目gittest

创建新文件testtxt

git add <file>

git status显示有变更的文件

git restore <file> 撤回文件修改内容

git commit –m “注释”

修改内容-> 执行git diff工作区和本地仓库的差异

git log显示当前分支的版本历史

git reset --hard HEAD^ 当前版本回退到上一个版本

git reset --hard HEAD^ ^ 当前版本回退到上上一个版本

git reset --hard HEAD~100 回退到前100个版本

恢复已经删除的版本

git reflog 展示所有的提交记录

git reset --hard <版本号> 回退到指定版本

git push origin master 将本地master分支推送到远程master分支,相当于创建远程分支

git checkout -b dev = git branch dev + git checkout dev 创建并切换分支

git branch 不带参数,会列出所有本地的分支;带参数表示创建分支

git branch –d name 删除本地分支(-D表示强制删除)

git branch –r 不带参数,会列出所有远程的分支

git branch --set-upstream-to=origin/<branch本地> 本地和远程分支关联

git push origin –delete <branch> 删除远程分支

git merge release用于合并指定分支到当前分支上

注:Fast-forward表示的合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。在这种模式下,删除分支后,会丢掉分支日志信息。可以使用带参数 --no-ff来禁用”Fast forward”模式。

git merge --no-ff -m “注释”dev

git checkout release 切换release分支

vim testtxt 修改某条内容

git commit testtxt -m “release修改某条内容”

git checkout master 切换master分支

vim testtxt 修改某条同release内容

git commit testtxt -m “master修改某条内容”

git merge release 显示冲突

git status 显示冲突提示

Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,其中>>>>release 是指release上修改的内容
vim testtxt 修改内容

git add testtxt

git commit -a -m “fix conflict”

当前分支有没有提交但也不合适现在就提交的内容,Git提供了暂储功能stash

git checkout release

vim testtxt 修改testtxt内容

git checkout develop 此时会提示Aborting

git status 查看当前状态

Git stash list 查看所有暂储列表

git stash apply恢复,恢复后stash内容并不删除,你需要使用命令git stash drop来删除;
另一种方式是使用git stash pop,恢复的同时把stash内容也删除了

创建Git Tag并推送远程服务器

git tag -a V100 –m“注释” //创建TAG

git push origin V100 //推送到远程服务器

git push origin --tag //提交所有tag至服务器

git tag -d V100 //删除本地标签

git push origin --delete tag <tagname> //删除远程标签

HEAD,它始终指向当前所处分支的最新的提交点。你所处的分支变化了,或者产生了新的提交点,HEAD就会跟着改变

add相关命令很简单,主要实现将工作区修改的内容提交到暂存区,交由git管理。

git add 添加当前目录的所有文件到暂存区

git add 添加指定目录到暂存区,包括子目录

git add 添加指定文件到暂存区

commit相关命令也很简单,主要实现将暂存区的内容提交到本地仓库,并使得当前分支的HEAD向后移动一个提交点。

git commit -m 提交暂存区到本地仓库,message代表说明信息

git commit --amend -m 使用一次新的commit,替代上一次提交

上传本地仓库分支到远程仓库分支,实现同步。

git push 上传本地指定分支到远程仓库

git push --force强行推送当前分支到远程仓库,即使有冲突

git push --all推送所有分支到远程仓库

关于分支,大概有展示分支,切换分支,创建分支,删除分支这四种 *** 作。

git branch列出所有本地分支

git branch -r列出所有远程分支

git branch -a列出所有本地分支和远程分支

git branch 新建一个分支,但依然停留在当前分支

git checkout -b 新建一个分支,并切换到该分支

git checkout 切换到指定分支,并更新工作区

git branch -d 删除分支

git push origin --delete 删除远程分支

关于分支的 *** 作虽然比较多,但都比较简单好记

merge命令把不同的分支合并起来。在实际开放中,我们可能从master分支中切出一个分支,然后进行开发完成需求,中间经过R3,R4,R5的commit记录,最后开发完成需要合入master中,这便用到了merge。

git merge 合并指定分支到当前分支

注:如果在merge之后,出现conflict,主要是因为两个用户修改了同一文件的同一块区域。需要针对冲突情况,手动解除冲突。

rebase又称为衍合,是合并的另外一种选择。

在开始阶段,我们处于new分支上,执行git rebase dev,那么new分支上新的commit都在dev分支上重演一遍,最后checkout切换回到new分支。这一点与merge是一样的,合并前后所处的分支并没有改变。

git rebase dev,通俗的解释就是new分支想站在dev的肩膀上继续下去。

rebase *** 作不会生成新的节点,是将两个分支融合成一个线性的提交。

rebase也需要手动解决冲突。

1如果你想要一个干净的,没有merge commit的线性历史树,那么你应该选择git rebase

2如果你想保留完整的历史记录,并且想要避免重写commit history的风险,你应该选择使用git merge

reset命令把当前分支指向另一个位置,并且相应的变动工作区和暂存区。

git reset —soft 只改变提交点,暂存区和工作目录的内容都不改变

git reset —mixed 改变提交点,同时改变暂存区的内容

git reset —hard 暂存区、工作区的内容都会被修改到与提交点完全一致的状态

git revert用一个新提交来消除一个历史提交所做的任何修改。

在回滚这一 *** 作上看,效果差不多。git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。

在 Git工作区的根目录创建一个特殊的gitignore文件。

在gitignore文件中,添加需要忽略的文件。

git rm -r --cached //将仓库中的index递归删除

git add //重新添加仓库索引

git commit -m “update gitignore” //提交

git branch --set-upstream-to=origin/<branch> <branch> //重现将本地仓库和远程仓库关联

最后,如果此篇博文对你有所帮助,别忘了点个赞哟~

如果你使用 Git 作为你的版本控制系统,你可能已经让自己接受了 Git 是一个复杂的野兽的事实。它是一个很棒的工具,但浏览 Git 仓库可能很麻烦。因此像 Tig 这样的工具出现了。

来自 Tig 手册页 :

这基本上意味着 Tig 提供了一个可以在终端中运行的基于文本的用户界面。Tig 可以让你轻松浏览你的 Git 日志,但它可以做的远不止让你从最后的提交跳到前一个提交。
有关更多方式,请参阅官方 安装说明 。

如果要浏览分支中的最新提交,请输入:

就是这样。这个三字符命令将启动一个浏览器,你可以在其中浏览当前分支中的提交。你可以将其视为 git log 的封装器。

要浏览这些输出,可以使用向上和向下箭头键从一个提交移动到另一个提交。按回车键将会垂直分割窗口,右侧包含所选提交的内容。你可以继续在左侧的提交 历史 记录中上下浏览,你的更改将显示在右侧。使用 k 和 j 可以逐行上下浏览,- 和空格键可以在右侧上下翻页。使用 q 退出右侧窗格。

搜索 tig 输出也很简单。使用 / (向前)或 (向后)在左右窗格中搜索。
这些就足以让你浏览你的提交信息了。这里有很多的键绑定,但单击 h 将显示“帮助”菜单,你可以在其中发现其导航和命令选项。你还可以使用 / 和 来搜索“帮助”菜单。使用 q 退出帮助。
由于 Tig 是 git log 的封装器,它可以方便地接受可以传递给 git log 的相同参数。例如,要浏览单个文件的提交 历史 记录,请输入:

将其与被封装的 Git 命令的输出进行比较,以便更清楚地了解 Tig 如何增强输出。

要在原始 Git 输出中包含补丁,你可以添加 -p 选项:

如果要将提交范围缩小到特定日期范围,请尝试以下 *** 作:

再一次,你可以将其与原始的 Git 版本进行比较:

有时你想知道谁对文件进行了更改以及原因。命令:

器本质上是 git blame 的封装。正如你所期望的那样,它允许你查看谁是编辑指定行的最后一人,它还允许你查看到引入该行的提交。这有点像 vim 的 vim-fugitive 插件提供的 :Gblame 命令。

如果你像我一样,你可能会在你的暂存区做了许多修改。你很容易忘记它们。你可以通过以下方式查看暂存处中的最新项目:

你可以通过以下方式找到第二个最新项目:

以此类推。如果你在需要它们时调用这些命令,那么你会有比我更清晰的记忆。

与上面的 Git 命令一样,Tig 可以通过简单的调用轻松增强你的 Git 输出:

尝试在有暂存的仓库中执行此命令。你将能够浏览并搜索你的暂存项,快速浏览你的那些修改。

Git ref 是指你提交的东西的哈希值。这包括文件和分支。使用 tig refs 命令可以浏览所有的 ref 并深入查看特定提交。

完成后,使用 q 回到前面的菜单。

如果要查看哪些文件已被暂存,哪些文件未被跟踪,请使用 tig status,它是 git status 的封装。
你可以使用 grep 命令在文本文件中搜索表达式。命令 tig grep 允许你浏览 git grep 的输出。例如:

它会让你浏览 lib/Bar 目录中以大小写敏感的方式搜索 foo 的输出。

如果要将提交 ID 列表传递给 Tig,那么必须使用 --stdin 标志,以便 tig show 从标准输入读取。否则,tig show 会在没有输入的情况下启动(出现空白屏幕)。

你可以使用 rc 文件自定义 Tig。以下是如何根据自己的喜好添加一些有用的自定义键绑定的示例。

在主目录中创建一个名为 tigrc 的文件。在你喜欢的编辑器中打开 ~/tigrc 并添加:

如上所述,运行 tig stash 以浏览你的暂存。但是,通过这些绑定,你可以按 a 将暂存中的项目应用到仓库,并按 x 从暂存中删除项目。请记住,你要在浏览暂存列表时,才能执行这些命令。如果你正在浏览暂存项,请输入 q 退出该视图,然后按 a 或 x 以获得所需效果。

有关更多信息,你可以阅读有关 Tig 键绑定 。

我希望这有助于演示 Tig 如何增强你的日常工作流程。Tig 可以做更强大的事情(比如暂存代码行),但这超出了这篇介绍性文章的范围。这里有足够的让你置身于危险的信息,但还有更多值得 探索 的地方。

via: >①开始→运行→输入:netplwiz 点击确定(或按回车键)打开用户账户。 ②用户账户→点选账户→属性 ③如果属性不可用(灰色的)用户账户→点选 要使用本机,用户必须输入用户名和密码。 ④账户属性→组成员→标准用户(Guest组)→确定。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12932536.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存