git 总结操作

182 阅读3分钟

Git 命令操作

常用命令

git add .
git commit -m '内容描述【publish new demand】'
git pull/push
git log -p / --stat
git checkout -p fileName

1. Init/config

// 初始化
git init
// 检查配置信息
git config --list 
// 全局配账号
git config --global user.name "User Name"   user.email xxx@xxx.com
 // 更新远程分支信息
git fetch origin --prune

2. Remote


// 查看本地配置的远程仓库源
git remote -v
// 查看单个远程仓库源的详情
git remote show remoteName
// 更新/拉取远程仓库源 
git fetch remoteName

// 拉取远程仓库源
git clone git://git.kernel.org/pub/scm/git/git.git
// 新增远程仓库源
git remote add remoteName https:// ….. 
// 重命名远程仓库的简写
git remote rename remoteName newRemoteName 
// 移除一个远程仓库
git remote rm remoteName 

3. Tag

// 列出本地tag
git tag / git tag -l
// 新一个tag到本地
git tag -a tagName -m "注释"
// 将本地tag推送到远程仓库源
git push origin tagName
// 删除本地tag
git tag -d tagName
// 删除远程仓库tag
git push remoteName tagName
// 查看远程所有 tag
git ls-remote --tags remoteName 
// 本地同步远程tag
git fetch remoteName tagName

4. Stash

git stash  # 保存当前未commit的代码 

git stash save "备注的内容"  # 保存当前未commit的代码并添加备注

git stash list # 列出stash的所有记录 

git stash clear # 删除stash的所有记录 

git stash apply # 应用最近一次的 

git stash pop # 应用最近一次的stash,随后删除该记录

git stash drop # 删除最近的一次stash

5. Branch

// 列出本地分支
git branch -v  
// 列出本地加远程的所有分支
git branch -a  
// 新建一个无**commit log**的分支
git checkout --orphan newBranchName 
// 创建分支
git branch brachName 
// 删除分支
git branch -D brachName 
// 删除远程分支
git push origin --delete brachName 
// 推送远程分支
git push origin brachName 
// 分支切换
git checkout brachName 
// 分支合并
git merge brachName  / git merge brachName --squash
// checkout远程的dev分支,在本地起名为dev分支,并切换到本地的dev分支
git checkout -b brachName origin/brachName
// 重命名分支名 
git branch -m oldBranchName newBranchName 
// 推送至远程分支
git push origin oldBranchName  
// 建立本地分支与远程分支的映射关系
git branch -u origin/brachName / git branch --set-upstream-to origin/brachName   
// 撤销本地分支与远程分支的映射关系
git branch --unset-upstream 

6. Log/diff/checkout

// 列出最近的2条commit记录
git log -2 --pretty=format:"%h %s %an %cd" --date=format:%Y-%m-%d\ %H:%M 
-2   最近 2 条
%h   哈希值/commitid
%an  作者名字
%cd  提交日期
%s   提交说明

// 列出提交记录 显示文件列表
git log --stat --pretty=format:"%h %s %an %cd" --date=format:%Y-%m-%d\ %H:%M 

// 列出某段时间的提交记录
git log --before="2021-09-10" --after="2021-09-08" 

// 列出某个文件的记录
git log -p src/page/onduty/components/month.vue

// 列出出分支1、分支2 所有有差异的文件列表
git diff branch1 branch2 --stat   

// 列出指定文件的详细差异
git diff branch1 branch2 filePath   

// 列出本地分支 远程分支差异
git diff branch remoteName/branch

// 查看文件在某处commitId的提交改动
git show commitId filePath 

// 未add前,撤消 filePath 所做的修改
git checkout filePath 


git checkout --patch B_branch f.txt || git checkout -p B_branch f.txt 

// 合并单个文件,将远程remoteName/branch分支的filePath合并到本地
git checkout -p remoteName/branch filePath

合并某个 commitId 到当前分支
git cherry-pick commitId

7. 修改提交的注释信息

// 未 push 修改commit的提交commit msg
git commit --amend -m "新的修改提交信息"

// 已经push
1、git rebase -i HEAD~3
2、进入输入模式 将pick 改为 edit, wq! 保存退出
3、git commit --amend
4、git rebase --continue
5、git push -f remoteName branchName

8. 回滚

  • 未 add 状态下
git checkout . //  所有有改动的全部恢复到原来的样子 

git checkout <fileName>

git checkout  commit_log_id // 切到该id的代码
  • add 状态下
git reset HEAD . 
git reset HEAD a.txt
git reset --hard HEAD
  • commit 状态下
git reset --hard <commit_log_id>
  • push 状态下
git revert <commit_log_id>

git revert // 是用一次新的commit来回滚之前的commit,此次提交之前的commit都会被保留;

git reset是回到某次提交