1. 主页
  2. 发布
  3. 短网址二维码
  4. Base64编码解码
  5. 移动版blog
git相关命令及文档
作者:晨曦沐枫|发表时间:2017-2-6 13:50:56 |分类:其它

首页亮出:Git官方中文文档地址

git文档还是很全的,推荐大家去看,文档也覆盖了你遇到的所有场景。


但是很多人觉得文档冗余太长,那我就把常用场景及其命令罗列如下:

1. 克隆远程服务器代码:git clone git@github.com:alexmingoia/koa-router.git

2. 提交修改到暂存区:git add .  (使用 . 是提交全部修改) git add src/app.js (提交指定文件到暂存区) 特别说明:git add 的命令可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等

    对等操作:

    一:取消提交到暂存区(git add . )的所有文件执行命令 。

    二:取消暂存区某一个文件执行的命令,如撤销暂存区刚刚app.js的提交:git reset HEAD app.js   当然你也可能取消所有提交到暂存区 请选择: git reset HEAD .

    三:撤销刚刚本地修改的 app.js 文件,命令如下:git checkout -- app.js

3. 暂存区文件移动至本地仓库 git commit -m 'update msg' 

    快捷操作:

    一:当我们需要将修改的代码直接提交到本地仓库的时候可以一条命令解决 : git commit -a -m  'add msg' 

4. 列出所有远程主机名 git remote    

        可以查看远程主机的网址  git remote -v   

        查看origin主机的详细信息 git remote show origin    

        添加远程主机 git remote add origin-v2   

        删除远程主机 git remote rm origin-v2   

        远程主机改名 git remote rename  origin origin-newname     

5.  查看所有本地分支 git branch 查看所有远程分支 git branch -r 查看所有本地分支和远程分支列表 git branch -a 

6. 创建新分支 git checkout -b cxmf-20170805 (创建出来的分支是以当前本地分支为基础,如执行以下命令:git checkout master ;git checkout -b cxmf-20170805 即为切换本地分支为master 分支后以master 分支为基础 创建新分支 cxmf-20170805)

7. 切换分支 ,不管切换本地分支还是远程分支都可使用如下命令:git checkout master (git checkout 分支名)

8. 查看分支日志 git log --pretty=oneline --abbrev-commit --graph    

9. 删除本地当前分支 git branch -d test (删除test分支)

10. 分支合并 如:test 分支合并到 master:切换到master分支,git merge test 就把test合并到master 分支,如果有冲突需要自己解决冲突后如:test 分支合并到 master:切换到master分支,git merge test 就把test合并到master 分支,如果有冲突需要自己解决冲突后 重新 git add .  ;  git commit -m '合并分支' ; git push origin master 。 没有冲突就直接push 就好。详情可看 官方:如何解决分支合并问题 。注:代码合并时代码不会提交到暂存区所以需要手动add。

11. git 应急小救星,我们经常在本地开发一半需要临时切换到其它分支修复bug,此时又不想提交本地未完成的开发,那我们可以像如下这样:

        git stash 将已修改和已暂存状态的变更保存在stash栈上 

        git stash list #查看stash栈

        git stash apply stash@{2} #应用该次变更

        git stash drop stash@{2}  #让该次变更从list出栈

        git stash pop #全部出栈

    stash 的操作 主要提供我们灵活的切换开发中修改未 commit 的分支。

12. 有时候我们commit 完了才发现漏掉了几个文件没有加,或者提交信息写错了。想要撤消刚才的提交操作,可以使用 --amend 选项重新提交

        git commit -m '第一次commit到本地'

        git add app.js

        git commit --amend

        第一次commit 后修改文件补充提交就可使用如上命令。此时只会有一次commit记录,其实这里使用 --amend 命令后commit到本地只有一条记录和最新的commit备注。

13. git reset和git checkout 比较:

        传入git reset和git checkout的参数决定了它们的作用域。参数中不包含文件路径的话,这两个命令就作用于整个commit。

        注意:git revert不支持文件级别的操作。

        git reset能够取消没有公开的改动  ,因为会改写当前分支的提交历史,在公开的分支执行这样的操作时很危险的。当传入文件路径时,git reset会将暂存区更新成指定commit的内容。举个例子,下面的命令会获取foo.py这个文件倒数第二次提交的版本,并将其保存到暂存区,来进行下一次提交。git reset HEAD~2 foo.py

        你也可以通过一些参数,让git reset来切换暂存区或者是工作区。

            —soft,暂存区和工作区不会被切换

            —mixed,暂存区会更新至指定的commit,工作区不会收到影响,这是默认的选项

            —hard,暂存区和工作区同时更新到指定的commit

        可以认为这些参数是用来确定git reset命令的作用域

        git revert通过创建一个新的commit来取消之前的某个commit。因为它不会重写commit的提交历史,所以是回滚代码的安全方式。举个例子,下面的命令的命令会找到倒数第二个commit,然后创建一个新的commit来回滚那次提交的改动.

14. 提交到本地仓库的偷懒操作:git commit -am '提交到缓存区并推送到本地仓库'  一条命令比较简单。


15. 如果是撤销所有的已经add的文件

        git reset HEAD .

    如果是撤销某个文件或文件夹:

        git reset HEAD -filename

16.查看config

        git config --system --list  查看系统config

        git config --global  --list  查看当前用户(global)配置

        git config --local  --list  查看当前仓库配置信息

17.设置config

        git config --global user.name "myname" 设置全局配置

        git config --global user.email  "test@gmail.com"  设置全局配置

        git config user.name "myname"   设置项目全局配置,提交代码优先读取项目配置

        git config user.email  "test@gmail.com"  设置项目全局配置,提交代码优先读取项目配置


18.Git中.gitignore文件不起作用的解决以及Git中的忽略规则介绍

在项目里使用Git管理代码的过程中,可以修改.gitignore文件中的标示的方法来忽略开发者想忽略掉的文件或目录,如果没有.gitignore文件,可以自己手工创建。在.gitignore文件中的每一行保存一个匹配的规则例如:

        # 此为注释 – 将被 Git 忽略 

        *.a       # 忽略所有 .a 结尾的文件

        !lib.a    # 但 lib.a 除外

        /TODO     # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO

        build/    # 忽略 build/ 目录下的所有文件

        doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt


        在代码开发中想突然忽略git对一些文件或者文件夹的版本管理,在.gitignore中已经标明忽略的文件目录下的文件,当我想git push的时候还会出现在push的目录中,原因是因为在git忽略目录中,当前文件在git中已有缓存,如果某些文件已经被纳入了版本管理中,就算是在.gitignore中已经声明了忽略路径也是不起作用的,这时候我们就应该先把本地缓存删除,然后再进行git的push,这样就不会出现忽略的文件了。git清除本地缓存命令如下:

        git rm -r --cached .

        git add .

        git commit -m 'update .gitignore'

19. git中回退到某个版本并提交到远程分支

        git reset --hard HEAD^ 回退到上个版本

        git reset --hard HEAD~3 回退到前3次提交之前,以此类推,回退到n次提交之前

        git reset --hard commit_id 回退到任意一次commit提交历史,通过git log 查看提交历史,在 commit_id 之后的提交都会作废  git reset --hard 239afed0857cc2e77c17c01014077808619af64d

        git push -f  或者 git push -f -u origin master ,提交回退的版本 (注:强制提交后,当前版本后面的提交版本将会删掉!,不使用强制提交会出错)

20. git 分支删除

        git branch -d <BranchName> 删除本地分支,如果删除本地分支报错:the branch  XXX is not fully merged 请使用强制删除命令:git branch -D <BranchName>

        git push origin --delete <BranchName> 删除远程分支

21. git撤销本地所有修改(新增、删除、修改)

    git checkout . && git clean -xdf

22. 查看仓库地址 

    git remote -v  查看项目仓库地址

    git init 初始化一个.git管理文件(如果是一个新的项目想关联一个仓库的话可以这样)

    git remote add origin ssh://git@git.dianpingoa.com/f2e/cocktail-framework-node.git 添加仓库地址

    git remote set-url origin ssh://git@git.dianpingoa.com/f2e/cocktail-framework-node.git   设置远端仓库地址(执行这个命令必须先有配置的仓库地址,不然直接执行会报错,提示找不到 origin )


23. 删除分支

    git branch -r -d origin/cxf-20190529-share  删除本地和远程的  origin/cxf-20190529-share 分支

24. git clean -df  放弃 新增、删除文件

25. 撤销 commit  

      git reset --soft HEAD^

      HEAD^的意思是上一个版本,也可以写成HEAD~1,如果你进行了2次commit,想都撤回,可以使用HEAD~2

    至于这几个参数:

    --mixed    意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作。这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。

     --soft    不删除工作空间改动代码,撤销commit,不撤销git add . 

    --hard    删除工作空间改动代码,撤销commit,撤销git add . 

    注意完成这个操作后,就恢复到了上一次的commit状态。

26. 删除新增文件

    git clean -n  显示将要删除的文件(注:但如果是新增的文件夹,则不会显示,包括这个文件夹下的文件也不会显示)

    git clean -f <path>  删除新增的文件,但不会删除新增的文件夹(包括这个文件下的文件)

    git clean -df 删除新增的文件和新增的文件夹

    git clean -xdf 删除新增的文件和新增的文件夹,包括被.ignore文件过滤文件或文件夹(所以这个命令最好是不要用)


标签: git 最后修改时间:2019-11-12 18:43:15
  • 有任何疑问问题欢迎大家提问

    时间 2017-8-6 1:45:19 回复
晨曦沐枫

魔都漂泊码农一枚,平常热衷于分享探讨一些新技术,喜欢挑战又不忘初心,所以写了这么一个站点和大家分享交流,主要分享还是前端技术为主,也有记录工作经验和生活感悟。

由于个人水平有限,所以博客中的文章难免有错误或者不正确的地方,欢迎在文章下方留言,楼主看到会及时改正。

博客是我利用空闲时间维护的一个小项目,如有异常或者报错(一般异常都hold住了,手动微笑),欢迎留言或者邮件,楼主尽早修正,楼主已推出移动版blog,欢迎使用。

联系邮箱:myco_xmy@qq.com