Git Shell命令

提供练习的Demo地址:Demo项目地址

1、Git本地操作流程

修改工作区中文件(创建或编辑文件)->保存到暂存区git add .git add fileName)->提交到本地仓库git commit -m 'commit description')。

2、Git基本配置

设置全局的用户信息:

git config --global user.name "名字"
git config --global user.email "邮箱地址"

--global去掉,可以为单个项目设置用户信息。

3、本地仓库操作

  • 操作流程
    1. 创建新仓库
    2. 创建、删除、修改文件
    3. 缓存文件
    4. 提交文件到本地
    5. 反复2-4步骤。
      mkdir gitTest  创建gitTest文件夹
      cd gitTest
      git init       初始化git仓库
      vi README.md   创建README.md文件
      git add .      添加到暂存区
      git commit -m '创建README.md文件'
      
  • git log查看提交历史日志
  • git status查看提交状态
  • git reset HEAD file取消暂存区的文件
  • git commit —amend修改上一次提交
  • git commit --amend --author='new_user_name <new@example.com>'修改最后一次提交的用户名和邮箱
  • git checkout file撤销对工作区修改;这个命令是以最新的存储时间节点(add和commit)为参照,覆盖工作区对应文件file;这个命令改变的是工作区。

4、远程仓库操作

1、克隆远程仓库

  • git clone <url>克隆远程仓库

    该命令会在本地主机生成一个目录,与远程主机的版本库同名。如果要指定不同的目录名,可以将目录名作为git clone命令的第二个参数。

  • git clone <url> <本地目录名>克隆远程仓库且指定本地目录名
  • git remote列出所有远程主机
  • git remote -v查看远程主机的网址
  • git clone -o <hostname> <url>克隆的时候,指定远程主机名为hostname

    克隆版本库的时候,远程主机自动被Git命名为origin。如果想用其他的主机名,需要用git clone命令的-o选项指定。

  • git remote show <origin>查看origin主机的详细信息
  • git remote add <主机名> <url>添加远程主机
  • git remote rm <主机名>删除远程主机
  • git remote rename <原主机名> <新主机名>重命名远程主机
  • git fetch <远程主机名>将某个远程主机的更新,全部取回本地
  • git fetch <远程主机名> <分支名>取回特定分支的更新,可以指定分支名

2、分支操作

  • git branch 查看本地所有分支
  • git branch -a 查看所有的分支
  • git branch -r 查看远程所有分支
  • git checkout -b newBranch origin/masterorigin/master的基础上,表示创建+切换到新分支

    git checkout加上-b参数相当于:

    1. git branch newBranch
    2. git checkout newBranch
  • git branch newBranch创建新分支
  • git checkout newBranch 切换到本地newBranch分支
  • git branch -d newBranch删除newBranch分支(需先切换到其他分支才能删除)
  • git branch -m Dev Develop重命名分支DevDevelop
  • git merge origin/master在本地分支上合并远程分支
  • git rebase origin/master在本地分支上合并远程分支

3、git pull(取回远程主机某个分支的更新,再与本地的指定分支合并)

  • git pull <远程主机名> <远程分支名>:<本地分支名>

    git pull origin next:master取回origin主机的next分支,与本地的master分支合并

    git pull origin next取回origin/next分支,再与当前分支合并,相当于git fetch,再git merge

    1. git fetch origin
    2. git merge origin/next
  • git branch --set-upstream master origin/next指定master分支追踪origin/next分支

    手动建立追踪关系,当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名。

  • git pull origin本地的当前分支自动与对应的origin主机”追踪分支”(remote-tracking branch)进行合并

    如果当前分支只有一个追踪分支,连远程主机名都可以省略。

  • git pull当前分支自动与唯一一个追踪分支进行合并
  • git pull --rebase <远程主机名> <远程分支名>:<本地分支名>如合并需要采用rebase模式,可以使用--rebase选项

4、git push(将本地分支的更新,推送到远程主机)

  • git push <远程主机名> <本地分支名>:<远程分支名>
    1. 注意,分支推送顺序的写法是<来源地>:<目的地>,所以git pull是<远程分支>:<本地分支>,而git push是<本地分支>:<远程分支>。
    2. 如果省略远程分支名,则表示将本地分支推送与之存在”追踪关系”的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。
  • git push origin master将本地的master分支推送到origin主机的master分支。如果后者不存在,则会被新建。
  • git push origin :master等同于git push origin --delete master表示删除origin主机的master分支。

    如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。

  • git push origin将当前分支推送到origin主机的对应分支

    如果当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略。

  • git push如果当前分支只有一个追踪分支,那么主机名都可以省略
    1. 不带任何参数的git push,默认只推送当前分支,这叫做simple方式。
    2. 此外,还有一种matching方式,会推送所有有对应的远程分支的本地分支。
    3. Git 2.0版本之前,默认采用matching方法,现在改为默认采用simple方式。
    4. 如果要修改这个设置,可以采用git config命令。
      git config --global push.default matching
      或者:
      git config --global push.default simple
  • git push -u origin master将本地的master分支推送到origin主机,同时指定origin为默认主机

    如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用git push。

  • git push --all origin将所有本地分支都推送到origin主机

    不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机,这时需要使用 --all选项。

  • git push --force origin使用--force选项,结果导致在远程主机产生一个”非直进式”的合并(non-fast-forward merge)。除非你很确定要这样做,否则应该尽量避免使用--force选项。
  • git push origin --tagsgit push不会推送标签(tag),除非使用--tags选项。

5、git tag(查看现有所有标签)

  • git tag -l 'V0.1.*'显示符合条件的Tag标签
  • git tag -a V1.0.2 -m 'my version is V1.0.2, Debug environment'新建含备注的标签

    标记当前HEAD使用git tag命令。标记名称(版本)前加上-a选项,使用-m选项,并提供标签备注信息。

  • git tag -a v1.2.0 <commitId>给指定的commit打Tag,commitId可通过git log获取
  • git show V1.0.2显示标签详情
  • git push origin --tags提交标签
  • git tag -d V1.0.2 删除本地指定tag
  • git push origin :refs/tags/tagVersion删除远程主机tag

git tag分为两种类型:轻量tag和附注tag。

  1. git tag v0.1.2-light创建轻量Tag
  2. git tag -a v0.1.2 -m '0.1.2版本'创建附注Tag
    轻量tag是指向提交对象的引用,附注Tag则是仓库中的一个独立对象。建议使用附注Tag

6、非常用命令

git checkout --track origin/dev 切换到远程dev分支
git rm 文件名(包括路径) 从git中删除指定文件
git config --list 看所有用户
git ls-files 看已经被提交的
git rm [file name] 删除一个文件
git commit -a 提交当前repos的所有的改变
git commit -v 当你用-v参数的时候可以看commit的差异
git commit -a -a是代表add,把所有的change加到git index里然后再commit
git commit -a -v 一般提交命令
git diff 查看尚未暂存的更新
git rm a.a 移除文件(从暂存区和工作区中删除)
git rm --cached a.a 移除文件(只从暂存区中删除)
git rm -f a.a 强行移除修改后文件(从暂存区和工作区中删除)
git diff --cached 或 $ git diff --staged 查看尚未提交的更新
git stash push 将文件给push到一个临时空间中
git stash pop 将文件从临时空间pop下来
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文针对初级用户,从最简单的讲起,但是需要读者对Git的基本用法有所了解。 Git是开源的分布式版本控制系统,...
    Sachie阅读 1,167评论 0 2
  • git常用命令 GIT常用命令备忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章阅读 8,611评论 1 26
  • 加密 Mac下创建加密的zip文件,无需第三方软件,直接在终端中 敲入几行命令就能搞定。方法一: 选择压缩包保存路...
    滕的世界阅读 1,914评论 0 0
  • 生活中缺少的东西 独自走在繁华的街道上,看着眼前的万家灯火,心里有种莫名的失...
    慢性患者阅读 588评论 1 1