# 一、提交

git status // 查看状态

git add <filename> // 将文件添加至暂存区

git commit -m '提交信息' // 提交修改,message为提交信息

git commit --amend --no-edit // 提交信息不被修改,任为上一次提交信息

git stash // 备份当前的工作区的内容,保存到Git栈中。

git stash pop // 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。

git stash list // 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。

git stash clear // 清空Git栈。此时使用git等图形化工具会发现,原来stash的哪些节点都消失了。

# 二、版本控制

git reset --hard HEAD^ // 回退一步

git reset --hard HEAD~3/HEAD^^^ // 回退三步

git reset --hard 4200r5 // 将版本回退至4200r5

# 三、比较差异

git diff // 比较工作区和暂存区的 所有文件 差异

git diff <filename> // 比较工作区和暂存区 指定文件 的差异

# 四、分支操作

git branch // 查看分支

git branch -r // 列出远程分支

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

git branch -d dev // 删除分支(本地分支)

git branch dev // 新建dev分支,并停留在当前分支

git remote show origin // 查看当前git仓库地址

git checkout dev // 切换dev分支

git merge dev // 将dev分支和当前分支合并

git checkout -b test // 新建test分支并切换

git checkout -b dev origin/dev // 克隆远程分支dev,并切换到dev

git branch --set-upstream-to=origin/remote_branch  your_branch // 本地分支关联远程分支

git remote update origin --prune // 更新远程分支的本地列表

git branch -m [branchName] [newBranchName] // 分支重命名

# 五、提交、远程等操作

git clone 'http:xx' // 克隆远程分支

git push origin dev // 推送到远程dev分支

git branch -d <branch-name> // 删除本地分支

git push origin:dev // 删除远程分支

git remote add origin 'http:xx' // 远程添加

git push -u origin master // 将本地项目推送到master分支(第一次)

git push // 将本地项目推送master分支

git pull origin master // 从远程分支master上下载

git checkout -- // 版本回撤

git rm -f filename // 删除文件

git rm --cached <filename> // 移除暂存区的修改

git remote add <远程仓库名> git@github.com:<账号>/<本地仓库名>.git  // 本地仓库关联远程仓库

git commit --amend // 修改最近一次的commit

git reset --soft HEAD^ // 撤销commit提交

//--------------------------------------------------------//
HEAD^ 表示上一个版本,即上一次的commit,也可以写成HEAD~1
如果进行两次的commit,想要都撤回,可以使用HEAD~2

–soft
不删除工作空间的改动代码 ,撤销commit,不撤销git add file

–hard
删除工作空间的改动代码,撤销commit且撤销add
//--------------------------------------------------------//

# 六、标签

git tag // 列出所有标签

git tag -l [标签名] // 可根据标签名筛选

git checkout -b [分支名] [标签名] // 检出标签

git tag [标签名] // 新建一个tag

git tag [标签名] [commit] //  新建一个tag在指定commit,如: git tag v1.0.0 87h9jmo

git tag -a [标签名] -m [标签说明] // 新建一个带说明的tag

git tag -a [标签名] [commitId] -m [标签说明] // 新建一个带版本的说明tag

git tag -d [标签名] // 删除本地tag

git push origin :refs/tags/[tagName] //删除远程tag

git push origin --delete [标签名] // 删除远程tag

git push [remote] [标签名] // 提交指定tag

# 七、日志

git log // 查看历史提交。 空格向下翻;b向上翻;q退出

git log --pretty=oneline // 一行显示,包含哈希索引值

git log --oneline // 简洁的一行显示

git reflog // 简洁一行显示,并显示移动到某个历史版本所需步数
1、git忽略某个指定的文件(不从版本库中删除)

git update-index --assume-unchanged config.conf 

2、git取消忽略某个指定的文件

git update-index --no-assume-unchanged config.conf

# 更改仓库URL地址

// 更改Git仓库URL地址

1、找到项目所在目录,找到 .git 文件夹里面的 config 文件,直接修改 【remote="origin"】中的url地址

2、使用 git 命令修改:git remote set-url origin URL (更新远程仓库地址,URL为新地址)

3、先删除现有地址,在添加

   git remote rm origin

   git remote add origin url

# merge忽略某个文件或者目录

# --assume-unchanged
选项可以用于告诉Git忽略指定文件的变更,命令将文件标记为“假设不变”

git update-index --assume-unchanged dirOrFile

上面这个命令会忽略dirOrFile目录或文件,在你想要切换分支或者reset时不会受到影响。

如果你想取消这个设置,可以使用:
git update-index --no-assume-unchanged dirOrFile

# .gitattributes文件

.gitattributes文件是Git中用于指定特定文件的属性的配置文件。您可以在.gitattributes文件中指定文件的合并策略、排除策略等

// 将名为`config.ini`的文件标记为不进行合并
config.ini merge=ours

// 将名为`data.txt`的文件标记为需要进行合并
data.txt merge=union