常用Git命令

常用Git命令

由于工作需要,必须同时照顾Java跟C#两边的代码,Java的IDE不用说,Intellij面的Git插件相当给力。
但是C#的Visual Studio 2015就不太行了,不支持ssh方式的远程仓库链接,所以操作得用命令行。
因此,记录一下这些自己使用到的,但是有时又会忘记的git命令,闲余时候看看,指不定就能记住了呢~

常用

克隆一个仓库: git clone [url]
选中一个分支: git checkout [brachName]
从远程分支拉取最新的数据,不会合并到当前分支: git fetch
从远程分支拉取最新的数据,自动合并到当前分支: git pull
查看当前工作区状态: git status
把文件加入到暂存区: git add [fileName]
从暂存区把文件移除: git reset HEAD [fileName]
提交暂存区文件: git commit -m "[commit message]"
把工作区的更新推送到远程分支: git push
把远程分支合并到本地分支: git merge [origin/branchName]

偶尔用

列出最近的commit记录: git log \ git log --pretty=oneline
列出历史操作记录: git reflog
回退到某个版本: git reset --hard [commitId]
丢弃工作区中fileName文件的修改: git checkout -- [fileName]
把文件从git版本库中移除(不删除文件): git rm --cached [fileName]
把文件从git版本库中移除(删除文件): git rm --f [fileName]

Branch

列出本地分支: git branch \ git branch --list
列出远程分支: git branch -r
列出所有分支: git branch -a
基于当前分支创建名为branchName的分支: git branch [branchName]
基于branchName2创建名为branchName1的分支: git branch [branchName1] [branchName2]
删除名为branchName的分支: git branch -d [branchName]

Tag

列出现有的Tag列表: git tag \ git tag --list
新加一个名为tagName的Tag: git tag [tagName]
推送一个Tag到远程: git push [tagName]
推送所有的Tag到远程: git push --tags \ git push origin --tags
删除本地tag: git tag -d [tagName]
删除远程tag: git push origin :refs/tags/<tagname>

Remote

显示远程仓库地址: git remote -v
新增一个名为name的远程仓库地址: git remote add [name] [url]
当有多个远程地址时,可以选择一个仓库拉取数据: git fecth [remoteName]
把当前分支推送到远程的某个分支上: git push [remoteName] [branchName]
显示一个远程仓库状态: git remote show [remoteName]
重命名远程仓库: git remote rename [oldName] [newName]
删除远程仓库: git remote rm [remoteName]
删除本地存在但远程不存在的分支: git remote prune [remoteName] eg: git remote prune origin

Commit

修改前一次commit(比如commit message写错了): git commit --amend
如果需要修改的commit不是后面还有其他的commit, 需要如下操作:
git checkout -b [branchName] [fixedCommitId]
git cherry-pick [fixedCommitId]
git commit --amend
git cherry-pick [依次填入fixedCommitId后面的commitId]
ps:修改后的内容只能在新的分支上,原分支内容是修改不了的了

作者

Trainoo

发布于

2018-01-10

更新于

2020-06-02

许可协议