使用正确的Git的姿势是怎样的?附带我的Git建议

  本文参考 Git – Useful Tips 一文翻译,不当之处,敬请谅解

  这篇文章的目的是给经常使用git管理项目提供一个有益的提醒。如果你是git新手,可以先阅读文后的引用部分,然后在回头阅读此篇文章。在介绍git命令之前,你可以先看看来自 on-my-zsh 提供的别名。

  基本命令

  git config --global user.name "Your Name"

  git config --global user.email "[email protected]"

  git config --global core.editor <your favorite editor here>

  Ex: git config --global core.editor vim

  git init :初始化一个repo。

  Commit 结构

  git status ( gst ):查看 repo 状态

  工作区:

  .git 目录

  暂存区

  工作目录

  git add <filename> ( ga ):添加一个文件到暂存区

  git add . ( gaa ):添加所有文件到暂存区

  git add *.js :添加所有后缀为js的文件到暂存区

  git rm --cached <file> :从暂存区删除一个新文件

  git commit -m "My first commit" ( gcmsg ):创建一次带 message 的提交

  git commit -v -a ( gca ):

  -v 是 verbose 的缩写,会在底部显示差异信息和更多有意义的信息

  -a 类似于 git add . ,会添加所有被修改和删除的文件,但会忽略新创建的文件

  git help <command> :查看对应命令的帮助手册

  git log ( glg , glgg , glo , glog ):查看项目的提交历史

  暂存区管理

  git reset HEAD <filename> ( grh ):从暂存区删除一个被修改的文件

  git reset HEAD ( grh ):从暂存区删除所有被修改的文件

  git checkout <filename> ( gco ):从暂存区删除一个被修改的文件,并撤销文件的更改

  git commit -m "My first commit" --amend :添加文件/更改在暂存区的最后一次提交

  git commit -v -a --amend ( gca! ):添加文件/更改在暂存区的最后一次提交

  .gitignore :告诉git,哪些文件不被加入版本跟踪

  可以使用 git add <filename> -f 命令添加一个不被版本跟踪的文件

  git diff <filename> ( gd ):查看基于当前文件的最后一次提交的更改差异

  git diff ( gd ):查看基于所有文件的最后一次提交的更改差异

  git reset HEAD~2 --soft :从项目提交历史中删除最近两次提交,但不丢弃文件的更改

  git reset HEAD~2 --hard :从项目提交历史中删除最近两次提交,但会丢弃文件的更改和在(最后两次)提交中创建的新文件

  git reset <commit> --soft --hard :

  --soft :将所有被更改的文件回溯到“待提交”状态

  --hard : commit 之后,对被git追踪的文件的任何更改都被丢弃

  git reflog :显示包括 被撤销 在内的所有提交

  git merge <commit hash> :重新提交(restore the commit)

  git clean -f :删除工作目录中不被git进行版本追踪的文件

  Stashed & Branches

  Stash

  git stash ( gsta ):将所有暂存区的文件移动到“储藏区”,类似于另一种类型的工作区

  git stash list :查看储藏队列(Stash lists)

  git stash apply :将最近一次储藏恢复到暂存区(可以用类似 git stash apply [email protected]{num} (num从0开始计数) 的命令来使用在队列中的任意一个储藏(stashes))

  git stash clear :清空储藏队列

  git stash save "name of the stash" :为储藏设置命名

  git stash pop ( gstp ):将最近一次储藏恢复到暂存区并从储藏队列删除此储藏

  git stash drop ( gstd ):从储藏队列删除最近一次储藏( [email protected]{0} )( git stash drop [email protected]{num} 从储藏队列删除指定储藏)

  Branch

  git checkout -b dev ( gco ):创建 dev 分支并从当前分支切换到 dev 分支

  git branch ( gb ):查看所有分支

  git checkout master ( gcm ):切换到主分支

  git merge <branch> ( gm ):合并分支

  git rebase master :先将 master 上的更改合并到当前分支,再添加当前分支的更改。如果有冲突,解决冲突后加 --continue 参数继续合并

  git branch -d <branch> : 删除分支, -D 则强制删除分支

  git merge <branch> --squash :将多次提交合并成一个,其流程如下:

  # Go to the `master` branch

  git checkout master

  # Create a temp branch

  git checkout -b temp

  # Merge the feature/x branch into the temp using --squash

  git merge feature/x --squash

  # See the new modifications/files in the Staging Area

  git status

  # Create the unified commit

  git commit -m "Add feature/x"

  # Delete the feature/x branch

  git branch -D feature/x

  rebase 和 merge 的区别:

  rebase:

  提交历史(的展示)是线性的

  缺点:会删除最近一个 commit,然后创建一次新的 commit

  如果已提交到远程,不要使用 rebase

  merge:

  提交历史(的展示)是分叉的

  对于两个分支的合并,会创建一个次新的 commit

  远程仓库管理

  git remote add <name> <url> :添加一个将被追踪的远程仓库

  git remote rm <name> :移除一个远程仓库

  git push <remote> <remote-branch> ( gp , ggp ):将当前分支的本地 commit 推送到远程仓库

  git fetch <remote> <remote-branch> :拉取远程仓库的最新 commit 到当前(本地)分支( <remote>/<branch> ),不会合并

  git pull <remote> <remote-branch> ( gl , ggl ):拉取远程仓库的最新 commit 到当前(本地)分支,并自动 merge

  git pull --rebase ( gup ):以 rebase 的方式进行合并,而不是 merge

  其它有用的命令

  git tag <name> :创建一个 tag(如:v1.3)

  git push --tags :将本地 tags 推送到远程仓库

  git push <tag> :推送指定的本地 tag 到远程

时间: 2024-10-15 16:25:18

使用正确的Git的姿势是怎样的?附带我的Git建议的相关文章

Git入门:安装环境 版本回退 仓库实战 搭建git服务端

备份MBR:dd  if=/dev/sda of=/data/mbr.dump bs=512 count=1 恢复MBR:dd  if=/data/mbr.dump of=/dev/sda bs=446 count=1      --- 小 Q --------------------------------------------------------------------------------------------------- Git:Linus开发分布式版本控制系统,和Linux

Git学习笔记一《版本控制之道-使用Git》

1.在Windows中安装完git后,需要进行一下配置:$ git config --global user.name "zhangliang"$ git config --global user.email "[email protected]"2.用下列命令可检查上述设置是否成功:$ git config --global --listuser.name=zhangliang[email protected]3.若想在命令行窗口中使用不同的颜色显示不同类型的内容

Git常用命令大全,迅速提升你的Git水平

初始化本地git仓库(创建新仓库) git init 配置用户名 git config --global user.name "xxx" 配置邮件 git config --global user.email "[email protected]" git status等命令自动着色 git config --global color.ui true git config --global color.status autogit config --global c

【android Studio】零git知识、零脚本命令,即刻体验git版本管理魅力!

git的优点就不去多说了.阻碍咱新手体验它的唯一问题就是门槛太高,脚本看着像天书, 本文主要阐述的,就是如何在android studio上,也能像tfs那样,非常简单的操作,就能使用git进行版本管理 几个月用下来,咱每天要做的就是开始工作前,alt+下方向键,从服务端拉取数据:结束工作后,alt+上方向键,将代码提交到服务器上.就这两步,完成了版本管理. 因此,有了这篇面向新手的图文并茂的文章,一步步按照步骤下来,你就可以完成项目对git的融合. (提示:面向新手的介绍型文章,因此步骤细致繁

If no other git process is currently running, this probably means a git process crashed in this repo

今天git突然崩溃,崩溃时正在使用创建的新分支.等到重新进入,用git checkout master命令显示 If no other git process is currently running, this probably means agit process crashed in this repository earlier. Make sure no other gitprocess is running and remove the file manually to contin

【搭建git+maven+jenkins持续集成环境】[一] 搭建git服务器

使用的系统是ubuntu,所以有大量apt-get命令,哈哈见谅 安装git git-core 新建一个git用户,这个用户的主目录会用来存放Git Repository. 这个用户名并非一定要叫git,可以任意指定,只不过git是比较常用的,一看就知道这个账户的作用 修改下密码 登陆 sudo apt-get install git git-core adduser git passwd git su git 以上为git安装 获取gitolite 如果没有python安装python 安装p

Git中如何利用生成SSH个人公钥访问git仓库

Git中如何利用生成SSH个人公钥访问git仓库方法(这里以coding平台为例): 1. 获取 SSH 协议地址 在项目的代码页面点击 SSH 切换到 SSH 协议, 获得访问地址, 请使用这个地址来访问您的代码仓库,如下图: 2. 生成公钥 Mac/Linux 打开命令行终端, Windows 打开 Git Bash . 输入ssh-keygen -t rsa -C “[email protected]”,( 注册的邮箱),接下来点击enter键即可(也可以输入密码). $ssh-keyge

git revert 后悔了 还原修改前的版本 + git 常用命令

昨天手残 然后在GitHub for windows 上点了revert 然后就给重置了 更手残的是又给同步了 .  但是 GitHub 会保留之前的版本 . 只要删掉本次修改就可. 解决方案:  gitshell ->> git revert HEAD 还原已经提交的修改此次操作之前和之后的commit和history都会保留,并且把这次撤销作为一次最新的提交    git revert HEAD                  撤销前一次 commit    git revert HEA

微信小程序的正确开启方法,最新更新小程序附带详细图

我的微信版本早就更新到了最新版本V6.5.3 ,但是找遍了每个角落,都始终见不到"小程序"相关的东西,后来才知道,正确的开启方法如下! 打开微信,搜索"小程序示例"即可,点击小程序,进入界面,退出来之后会在"发现"一栏的最下面有"小程序的选项",详细的看下图.等添加完之后就可以从里面搜索小程序,添加小程序了! 看到了吧,非常多的小程序,可以免下载很多APP,节省手机空间. 但是,这个小程序搜索有个规则,就是你要搜索小程序,必须