分布式版本控制软件Git用法总结
目录引言软件安装常用命令创建git管理的仓库-git init添加管理的文件-git add提交文件到本地仓库-git commit查询提交日志-git log查询命令日志-git reflog版本回退-git reset版本回退-git revert工作区状态查看-git status查看不同-git diff切换分支或创建分支-git ...
·
目录
引言
本文旨在提供安装git的相关资源以及总结平时常用的命令,方便在后续工作中参考。
软件安装
- git命令行安装包:https://git-scm.com/downloads。
- TortoiseGit安装包:https://tortoisegit.org。
- 安装完成后采用命令行进行用户名和邮箱设置。
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
常用命令
创建git管理的仓库-git init
- git init主要是将一个目录文件夹交给git管理,在文件夹内会有一个.git的隐藏文件夹。
mkdir ./test
cd test
git init test
添加管理的文件-git add
- git add命令主要将工作区的文件添加到暂存区。
- git add -f app.class:强制接管app.class文件。有时候由于.gitignore文件的存在,想让git接管一些文件将会被忽略,这时可以用-f参数强制接管。
- git add .命令是增加所有修改的、新增的文件,但不包括删除的文件。
- git add -u命令是增加所有修改的、删除的文件,但不包括新增的文件。
- git add -A .命令是增加所有修改的、新增的、删除的文件。
git add test.txt
git add -f app.class
git add .
git add -u
git add -A .
提交文件到本地仓库-git commit
- git commit是将暂存区的文件提交到本地仓库。
- git commit -m "note for explain":-m 参数是为此次提交作出标记说明,说明可以是任意内容。
git commit -m "commit test file"
查询提交日志-git log
- git log命令是显示最近到最远的提交日志,方便查询提交的历史。
- git log --pretty=oneline:每次的提交记录只显示一行,不用详细输出。
- git log -2:输出最近两次的提交日志。
- git log --graph:可以查看合并分支图。
git log
git log --pretty=oneline
git log -2
git log --graph
查询命令日志-git reflog
- git reflog查看历史命令记录。
git reflog
版本回退-git reset
- git reset --hard commit_id:将版本回退到id号所代表的版本,同时更新工作区内容。
- git reset --hard HEAD^:直接回退到上一版本。
- git reset --hard HEAD:将工作区状态回退到暂存区状态。
- 如果回退完后悔了,又想恢复原来状态,这是可以先用git log查询原先状态的commit_id号,再用git reset。
git reset --hard commit_id
git reset --hard HEAD^
版本回退-git revert
- git revert是将历史提交的差异地方逆向提交,将版本节点继续向前推进,但是对于merge的版本不会回退。
- 与git reset差别在于reset是删除回退到目标版本的以后版本信息,HEAD指针也回退。
- 关于merge版本的回退,可使用git revert commit_id -m 1命令,1代表回退到master分支,撤销合并进来的分支信息;2代表回退到branch分支,撤销合并进来的master分支信息。
git revert commit_id
git revert commit_id -m 1
工作区状态查看-git status
- git status命令主要显示工作区的状态,哪些文件修改了,哪些文件已经加入暂存区了。
- 当merge存在冲突时,也可以通过git status查看冲突点。
git status
查看不同-git diff
- git diff主要是比较不同点的。
- git diff test.txt:比较工作区文件与暂存区/仓库里文件的不同点。
- git diff id1 id2:比较id1和id2两次提交的文件不同点。
- git diff HEAD -- test.txt:比较工作区与仓库里test文件的差别。
git diff test.txt
git diff 46d49bf 9247db6
切换分支或创建分支-git checkout
- git checkout可以回退工作区的修改,也可以切换分支。
- git checkout --test.txt:将工作区里的文件回退到暂存区里的状态,如果暂存区是空的就回退到仓库里的状态。
- git checkout --help:查询checkout相关命令的帮助。
- git checkout -b branch_name origin/special:切换到远端special分支,并建立新的分支branch_name,在special分支基础上继续开发。
- git checkout -b branch_name:从当前所在分支基础创建新的分支branch_name。
git checkout
git checkout --test.txt
git checkout --help
git checkout -b branch_name origin/special
删除文件-git rm
- rm filename.txt:直接删除工作区的文件。
- git rm filename.txt:删除仓库内的文件,这时还需要进一步的commit才完成,即git commit -m "remove filename"。
git rm filename.txt
git commit -m "remove filename.txt"
本地与远端连接-git remote
- git remote add:在本地的仓库下运行该命令可以将本地仓库与远端github账户中的仓库关联起来,以后便可以直接推送本地代码到远端。
- git remote:查看远程库信息。
- git remote -v:查看远程库更详细的信息。
git remote add origin git@github.com:Eureca2017/git_test
推送代码-git push
- git push是将本地仓库代码推送到远端仓库,但是需要先通过git remote add命令将本地仓库与远端仓库建立连接,如果是直接从远端仓库git clone下来的则默认已经建立连接,不需要再手动增加。
- git push -u origin master:该命令是将本地master代码推送到远端master代码,-u参数是将两个分支关联起来,以后push便可简化命令,否则每次提交都得指定远端主机名,这里是origin。
- git push origin branch_name:将本地当前分支推送到远端branch_name分支上。
- git push origin local_branch_name:remote_branch_name:将本地local_branch_name分支推送到远端remote_branch_name分支上。
- git push origin :branch_name:等同于git push origin --delete branch_name,删除远端branch_name分支名。
- git push origin:将当前分支推送到origin远端建立链接的分支上。
- git push:将当前分支推送到远端建立链接的分支,这种命令只有在当前分支与远端只有唯一链接的情况才能使用。
git push -u origin master
git push origin branch_name
git push origin local_branch_name:remote_branch_name
git push origin :branch_name
git push origin
git push
更新代码-git pull
- git pull origin master:branch_name:git pull 主机名 <远程分支名>:<本地分支名>。
- git pull origin master:将远端master分支拉下合并到本地当前分支。
- git pull origin:如果本地分支与远端分支存在关联关系,则可以直接用此命令拉下代码。
- git pull:如果本地分支与远端分支存在关联关系且关联关系又是唯一的,则可以直接拉下代码。
git pull origin master:branch_name
git pull origin master
git pull origin
git pull
下载代码-git clone
- git clone主要是将远端代码下载下来。
git clone git@github.com:Eureca2017/git_test
查看分支-git branch
- git branch:显示本地所有分支名称。
- git branch -a:显示本地和远端所有的分支名称。
- git branch -r:显示远端所有的分支名称。
- git branch -d branch_name:删除本地branch_name分支。
- git branch --set-upstream branch_name orgin/branch_name:建立远程分支与本地分支的链接。
git branch
git branch -a
git branch -r
git branch -d branch_name
git branch --set-upstream branch_name orgin/branch_name
更新分支信息-git fetch
- git fetch:更新本地所有分支信息。
- git fetch origin:获取远程跟踪分支最新信息,更新本地分支信息。
- git fetch origin branch_name:git fetch <远程主机名> <分支名>。
- git fetch git://git.kernel.org/pub/scm/git/git.git branch_name:从相关URL地址获取branch_name分支更新信息。
git fetch
git fetch origin
git fetch origin branch
git fetch git://git.kernel.org/pub/scm/git/git.git branch_name
合并代码-git merge
- git merge master:将master上的代码合并到当前所在分支上。
- git merge --no-ff master:表示禁用fast forward,即保留原来分支节点信息,合并后重新创建一个节点提交。
- fast forward合并方式将看不到历史合并的记录。
暂存区管理-git stash
- git stash是将工作区的修改暂时存储起来,待处理完其他分支信息再恢复现场。
- git stash list查看工作区之前存储的目录。
- git stash apply stash@{0}恢复工作区的修改,但不删除存储列表里的。
- git stash drop stash@{0}删除存储列表里的修改。
- git stash pop恢复工作区修改并删除列表里的记录。
git stash
git stash list
git stash apply stash@{0}
git stash drop stash@{0}
git stash pop stash@{0}
分支变基-git rebase
- git rebase是把master分叉的提交历史整理成一条直线,一般用到较少。
- 分叉的提交历史是指自己修改了master分支代码,而第三方也更新了master分支代码,自己再次提交一般需要pull,这时再push的代码就不是一条直线了,会存在分叉现象,跟普通分支合并一样。可通过rebase命令解决,改变代码的基代码。
git rebase
分支标签-git tag
- git tag:查看所有已经打标签的分支的信息。
- git tag v1.0:将当前分支打上标签v1.0。
- git tag v1.0 commit_id:对commit_id分支进行打标签。
- git tag -a v1.0 -m "test information" f23432:-a参数表示指定标签名,-m参数表示该标签的信息。
- git tag -d v1.0:删除v1.0这个标签。
- git push origin <tag_name>:推送某个标签到远程。
- git push origin --tags:一次性推送所有尚未推送到远端的本地标签。
- git push origin :refs/tags/v1.0:删除远程v1.0的标签。
git tag
git tag v1.0
git tag v1.0 f23432
git tag -a v1.0 -m "tag information" f23432
git tag -d v2.0
git push origin v1.0
git push origin --tags
git push origin :refs/tags/<tag_name>
详细信息-git show
- git show <tag_name>:展示tag_name分支详细信息。
- git show commit_id:展示commit_id分支详细信息。
git show v1.o
git show f45232
软件配置-git config
git config --help:查看配置的帮助。
git config --global user.name "John":配置git的用户名。
git config --global user.email "example@163.com":配置git的邮箱。
git config --global core.edit emacs:设置git的编辑器。
git config --global color.ui true:设置git命令界面着色。
git config --help
git config --global user.name "John"
git config --global user.email "example@163.com"
git config --global core.edit.emacs
git config --global color.ui true
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献4条内容
所有评论(0)