暂存区管理- 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 & BranchesStash- git stash ( gsta ):将所有暂存区的文件移动到“储藏区”,类似于另一种类型的工作区
- git stash list :查看储藏队列(Stash lists)
- git stash apply :将最近一次储藏恢复到暂存区(可以用类似 git stash apply stash@{num} (num从0开始计数) 的命令来使用在队列中的任意一个储藏(stashes))
- git stash clear :清空储藏队列
- git stash save "name of the stash" :为储藏设置命名
- git stash pop ( gstp ):将最近一次储藏恢复到暂存区并从储藏队列删除此储藏
- git stash drop ( gstd ):从储藏队列删除最近一次储藏( stash@{0} )(git stash drop stash@{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` branchgit checkout master# Create a temp branchgit checkout -b temp# Merge the feature/x branch into the temp using --squashgit merge feature/x --squash# See the new modifications/files in the Staging Areagit status# Create the unified commitgit commit -m "Add feature/x"# Delete the feature/x branchgit branch -D feature/x- rebase 和 merge 的区别:
- rebase:
- 提交历史(的展示)是线性的
- 缺点:会删除最近一个 commit,然后创建一次新的 commit
- 如果已提交到远程,不要使用 rebase
- merge:
- 提交历史(的展示)是分叉的
- 对于两个分支的合并,会创建一个次新的 commit
|