Git常用命令

下面是我整理的git常用命令,适合 学习过并使用过 git 后有段时间没用的朋友查阅回忆。没学过git乱用很可能会把自己的代码搞砸.

Git常用命令

基本

git config [--global] user.name=yourname 配置用户名

git config [--global] user.email=youremail  配置用户邮箱

git config -l 查看配置信息

git clone <url> [directory name]        克隆远程仓库到directory name文件夹,没指定就以项目名创建文件夹并clone进去;

git status 查看当前的work directory和stage area情况,以及当前分支和远程关联分支的提交情况对比信息;

git add <.|file name1 file name2 ......> 添加modified文件到stage area以备commit;

git commit -m “commit message” 提交stage area里的修改到当前分支;

 

git remote -v查看远程库名及url;

git remote add <remote name> <url> 添加远程库;

git remote set-url <remote name> <url> 更改远程仓库;

git push origin local_branch:remote_branch   将本地某分支推送到origin远端某分支 ;

git pull origin remote_branch:loacl_branch  将远端某分支拉取到本地某分支      ;

git push 推送本地当前分支到远端关联分支(远端分支得到更新)

git pull 拉取远端关联分支到本地当前分支(当前分支得到更新)

查看分支关联用 git branch -vv

 

版本回退

git log [-graph] [--pretty=oneline]  查看commit日志;

git reset --hard <HEAD^ | HEAD~n> 版本向前回退n个commit;

git reset --hard <commit_id> 直接定位到commit_id的版本;

git reflog 查看HEAD移动日志,可用于获得回到将来版本的commit_id;

 

git diff 查看版本库与工作区的差别;

git diff HEAD -- file_name 查看某文件在版本库中与工作区的差别;

 

查看 staging area 和 working directory 中文件的差异。

¡ git diff: 查看 working directory 与 staging area 之间的差异

¡ git diff --cached: 查看 repository 与 staging area 之间的差异

¡ git diff HEAD: 查看 working directory 与 repository 之间的差异

 

 

撤销修改

git checkout -- file  把file文件在工作区的修改全部撤销;

 

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。

 

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

 

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

*撤销不小心提交的错误的最新commit:

 

git reset [--选项] <HEAD~n | commit_hash>

example:

git reset HEAD~1 文件保留修改,版本库回退到上个commit

git reset --soft HEAD~1文件保留修改,版本库最新commit送回staged area并同时回退到上个commit

--soft 参数将上一次的修改放入staging area

--mixed 参数将上一次的修改放入working directory

--hard 参数直接将上一次的修改抛弃

 

 

 

标签管理

 git tag <tag_name> 在当前分支最新提交上建立标签;

 git tag <tag_name> <commit_id> 为给定id 的commit打上标签;

 git tag 查看本地标签;

 git tag -d tag_name 删除tag_name标签;

 git show <tag> 查看tag信息;

 git push origin tag_name 将tag_name标签送到远仓;

 git push origin --tags 一次性推送全部尚未推送到远程的本地标签;

 git push origin :refs/tags/v0.9 或 git push origin --delete tag v9.0  删除origin远仓的v0.9标签;

 

分支管理

git branch [-avv] 查看分支信息;

git checkout branch_name  切换到branch_name分支;

git checkout -b branch_name   创建并切换到branch_name分支;

git branch -d branch_name 删除branch_name分支;

git push origin branch_name 将当前分支推送到origin远程仓库的branch_name分支;

 

慎用:git merge <branch>合并某分支到当前分支,加--no-ff取消快速合并,即git merge --no-ff -m <massage>  。这个分支合并操作可能会产生冲突(如果你在某个版本点建了new分支之后两个分支都提交了新的commit),需要手动解决这些冲突以继续合并,所以建了new分支后尽量在new分支工作,原分支(你打算要把new分支工作完成后合并回去的)不要提交新的commit ,new分支上工作完成确定无误了就可以顺利合并;

 

关于本地分支与远仓分支的关联,在下面

 

——————————————————————————

 

git stash 将现在的修改暂存起来,去紧急修改之前的bug;

git stash list 查看应急暂存的修改;

一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;

另一种方式是用git stash pop,恢复的同时把stash内容也删了;

 

git branch -avv 查看本地和远程仓库的分支信息及最新提交信息,以及本地和远程分支的关联;

git checkout -b dev -- track origin/dev 拉取远仓的dev分支到本地新建的dev分支,并切换到dev分支,同时建立本地dev分支和远仓dev分支的关联;

 

git branch --set-upstream dev origin/dev 建立本地dev分支和远仓dev分支的关联;

git branch --set-upstream-to origin/branch_name建立本地当前分支和远仓branch_name分支的关联;

 

git push origin :branch 或 git push origin --delete <branch>删除origin远仓的branch分支;

;

git show <commit-hashId> 便可以显示某次提交的修改内容

同样 git show <commit-hashId> filename 可以显示某次提交的某个内容的修改信息。

 

git commit --amend提交为上一个commit的修复

 

git blame <file> 查看file文件每行的修改人

 

撤销最新commit

git reset HEAD~1 文件保留修改,版本库回退到上个commit

git reset --soft文件保留修改,版本库最新commit送回staged area并同时回退到上个commit

;

 

比较两个分支的差异

1.查看 dev 有,而 master 中没有的:

git log dev ^master

¡ 1

2.同理查看 master 中有,而 dev 中没有的内容:

git log master ^dev

    查看 dev 中比 master 中多提交了哪些内容:

git log master..dev

1

注意,列出来的是两个点后边(此处即dev)多提交的内容。同理,想知道 master 比 dev 多提交了什么:

git log dev..master

3.不知道谁提交的多谁提交的少,单纯想知道有什么不一样:

git log dev...master

4.在上述情况下,再显示出每个提交是在哪个分支上:

git log --left-right dev...master

 

 


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值